cpu参数

线程池

孤街醉人 提交于 2020-03-05 22:38:54
线程池优势: a、降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗; b、提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行; c、方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场)); d、提供更强大的功能,延时定时线程池; 线程池的主要参数: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); } a、corePoolSize(线程池基本大小):当向线程池提交一个任务时,若线程池已创建的线程数小于corePoolSize,即便此时存在空闲线程,也会通过创建一个新线程来执行该任务

网络编程py

徘徊边缘 提交于 2020-03-05 15:13:10
概念 day27 ​ 网络架构 ​ C/S :qq 微信 浏览器 英雄联盟 穿越火线 王者荣耀 安装 ​ C:client 客户端 ​ S:server 服务端 ​ B/S :百度 淘宝 码云 只要在浏览器输入网址就可以直接使用了 ​ B:browser 浏览器 ​ S:server 服务端 ​ B/S更好: 更节省资源 不用更新 不依赖环境 ​ 统一了所有web程序的入口 ​ C/S架构: 安全性 程序比较庞大 ​ 移动端 ​ app ​ 微信小程序 : 统一了所有web程序的入口 ​ 支付宝 : 统一了所有和钱相关的事儿 ​ mac ​ 是一个物理地址 ​ 唯一的标识你的网络设备 ​ ip 地址 ​ 是一个逻辑地址 ​ 是可以根据你的位置变化发生改变的 ​ 能够在广域网中快速的定位你 ​ ipv4地址: ​ 4为点分十进制 ​ 0.0.0.0-255.255.255.255 ​ 2**32 ​ 公网和内网: ​ 公网 0.0.0.0-255.255.255.255(不包含保留字段的ip) 你能够在任意一 个地方去访问的ip地址 ​ 内网 所有的内网ip都要使用保留字段 只能在一个区域内使用,出了 这个区域就用不了了 192.168.0.0 - 192.168.255.255 10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.32.255

Linux iostat监测IO状态

别来无恙 提交于 2020-03-05 12:55:09
Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 1. 基本使用 $iostat -d -k 1 10 参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。 # iostat -d -k 1 10 Linux 3.13.0-85-generic (s2-bra) 09/02/2016 _x86_64_ (8 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 9.70 11.26 152.88 115117000 1562622226 sdb 0.00 0.00 0.00 732 0 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 2.00 12.00 0.00 12 0 sdb 0.00 0.00 0.00 0 0 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 2.00 0.00 100.00 0 100 sdb 0.00 0.00 0.00 0 0 Device: tps kB

深入理解 Kubernetes 资源限制:CPU

谁说胖子不能爱 提交于 2020-03-04 09:30:14
原文地址: https://www.yangcs.net/posts/understanding-resource-limits-in-kubernetes-cpu-time/ 在关于 Kubernetes 资源限制的系列文章的 第一篇文章 中,我讨论了如何使用 ResourceRequirements 对象来设置 Pod 中容器的内存资源限制,以及如何通过容器运行时和 linux control group( cgroup )来实现这些限制。我还谈到了 Requests 和 Limits 之间的区别,其中 Requests 用于在调度时通知调度器 Pod 需要多少资源才能调度,而 Limits 用来告诉 Linux 内核什么时候你的进程可以为了清理空间而被杀死。在这篇文章中,我会继续仔细分析 CPU 资源限制。想要理解这篇文章所说的内容,不一定要先阅读上一篇文章,但我建议那些工程师和集群管理员最好还是先阅读完第一篇,以便全面掌控你的集群。 1. CPU 限制 正如我在上一篇文章中提到的, CPU 资源限制比内存资源限制更复杂,原因将在下文详述。幸运的是 CPU 资源限制和内存资源限制一样都是由 cgroup 控制的,上文中提到的思路和工具在这里同样适用,我们只需要关注他们的不同点就行了。首先,让我们将 CPU 资源限制添加到之前示例中的 yaml: resources:

计算机基础(下)

血红的双手。 提交于 2020-03-03 10:38:01
计算机基础知识想详解 1、cpu详解 cpu的分类与指令集 x86-64(*****) cpu具有向下兼容性 64的cpu既能运行32位的程序也能运行64位的程序 内核态与用户态(*****) 代表cpu的两种工作状态 1、内核态:运行的程序是操作系统,可以操作计算机硬件 2、用户态:运行的程序是应用程序,不能操作计算机硬件 内核态与用户态的转换 应用程序的运行必然涉及到计算机硬件的操作,那就必须有用户态切换到 内核态下才能实现,所以计算机工作时在频繁发生内核态与用户态的转换 多线程与多核芯片 2核4线程: 2核代表有两个cpu,4线程指的是每个cpu都有两个线程=》假4核 4核8线程 4核代表有4个cpu,8线程指的是每个cpu都有两个线程=》假8核 2、存储器 RAM:内存 ROM:“只读内存” 存放计算机厂商写死计算机上的一段核心程序=》BIOS CMOS:存取速度慢,断电数据丢失,耗电量极低 硬盘: 机械硬盘:磁盘 磁道:一圈数据,对应着一串二进制(1bit代表一个二进制位) 8bit比特位=1Bytes字节 1024Bytes=1KB 1024KB=1MB 1024MB=1GB 1024GB=1TB 1024TB=1PB 200G=200*1000*1000B 扇区: 一个扇区通过为512Bytes 站在硬盘的解读,一次性读写数据的最小单为为扇区

linux-top命令查看内存CPU

天涯浪子 提交于 2020-03-02 19:05:11
查看多核CPU命令 mpstat -P ALL 和 sar -P ALL 说明:sar -P ALL > aaa.txt 重定向输出内容到文件 aaa.txt top命令 经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。 本文通过一个运行中的WEB服务器的top监控截图,讲述top视图中的各种数据的含义,还包括视图中各进程(任务)的字段的排序。 top进入视图 第一行: 10:08:45 — 当前系统时间 10 days, 3:05 — 系统已经运行了10天3小时5分钟(在这期间没有重启过) 1 users — 当前有1个用户登录系统 load average: 0.00, 0.00, 0.00 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。 第二行: Tasks — 任务(进程),系统现在共有135个进程,其中处于运行中的有1个,134个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。 第三行:cpu状态 0.3% us —

性能排查 -- vmstat 使用

吃可爱长大的小学妹 提交于 2020-03-02 15:24:08
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如: root@ubuntu:~# vmstat 2 1 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2表示每个两秒采集一次服务器状态,1表示只采集一次。 实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如: root@ubuntu:~# vmstat 2 procs -----------memory---------- --

java 常见面试题

倖福魔咒の 提交于 2020-03-01 12:44:31
基本问题 基本数据类型和对象的区别 (1) 基本数据类型的存储原理:所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的栈上的,数据本身的值就是存储在栈空间里面,Java语言里面八种数据类型是这种存储模型; (2) 引用类型的存储原理:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java堆和栈来进行这种类型的数据存储,简单地讲,“引用”(存储对象在内存堆上的地址)是存储在有序的栈上的,而对象本身的值存储在堆上的; 不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存,对于基本类型来说,这块区域包含的是基本类型的内容;而对于引用类型来说,这块区域包含的是指向真正内容的指针,真正的内容被手动的分配在堆上。 JAVA中的数据类型及其各自的特点。 分为基本类型和引用类型,基本类型有八个,数值型的有byte(1字节),short(2字节),int(4字节),long,float,double,布尔类型的bool和字符类型的char。引用类型有类,接口,数组。 JAVA面向对象的特征? 封装、继承、多态、抽象 封装:通过类来体现,将实体封装成类,其中包含属性和方法 继承:类与类之间可以继承特点,使得代码重用 多态:通过传递给父类对象引用不同的子类从而表现出不同的行为 抽象: 将一类实体的共同特性抽象出来

Pytorch切换GPU或CPU

依然范特西╮ 提交于 2020-03-01 08:34:55
Pytorch切换GPU或CPU Pytorch版本:>=0.40 Pytorch默认是在cpu上训练,我们可以通过 to(device) 方法切换到GPU to(device)参数 to(device) 方法接受的参数为 torch.device 类型。可以写为 device = torch . device ( "cuda:0" ) # 使用gpu0 我习惯这种写法,如果你系统中没有可用的cuda,直接切换到cpu来运行。 device = torch . device ( "cuda:0" if torch . cuda . is_available ( ) else "cpu" ) 数据或模型调用to(device)方法 在训练前切换GPU,数据和模型都是要放到同一块GPU上的,都可以通过调用to(device)来切换显卡。 1.数据对应:torch.Tensor类型 tensor = torch . randn ( 2 , 2 ) device = torch . device ( "cuda:0" ) # 简写 tensor = tensor . to ( device ) # 需要赋值 # Outputs: # tensor([[-0.2136, 1.3254], # [ 1.9691, -0.8401]], device='cuda:0') 2.模型对应:torch

JAVA多线程(四)--线程同步-Volatile

好久不见. 提交于 2020-03-01 07:36:10
1.cpu cache模型 cpu - 计算机的主内存(RAM), cpu速度变快,主内存没有跟上cpu的步伐,最终导致 cpu的处理速度和主内存的访问速度差距越来越大。 而cpu cache的出现解决了以上问题,同时引入了缓存不一致的问题。 比如:i++ 1)首先读取内存到cpu cache 2)进行i+1 3)将结果刷新到主内存中 在单线程中这个例子不会出现任何问题,但是在多线程的情况下就会出现问题。原因就是:每个线程都有自己的工作内存(本地内存,对应cpu cache模型中的cache),i在多个线程的本地内存中都会存在一个副本。 例:i 初始化为0;有两个操作A和B,都执行i++操作,按道理执行完之后i的值为2,但是就会有可能出现最后的结果i为1的情况,这就是缓存不一致的问题,要解决缓存不一致,我们有以下解决方式: 1)总线加锁 cpu和其他组建通信是通过总线来进行,采用总线加锁,会阻塞其他cpu对其他组件的访问,导致只有一个cpu抢到总线锁能够访问当前数据的内存。 2)通过缓存一致性协议(MESI)保证能够保证每一个缓存中使用到的共享变量副本是一致的,大致思想就是说当cpu操作cache中 的数据时,发现该数据是共享的,会进行如下操作: a. 读取操作,不用作任何处理 b. 写入操作,发出信号通知其他cpu将该变量的cache line置为无效状态