命令 Top的 load average
系统平均负载:被定义为在特定时间间隔内运行队列中的平均进程数,如(或)(即没有等待、没有wait,没有kill的)
它没有在等待I/O操作的结果
它没有主动进入等待状态(没wait)
没有被停止(如:等待终止)
1分钟,5分钟,15分钟
每5s检测一次活跃的进程数
这个数除以CPU的数目,高于5,就是超负荷运转了
判断一个系统的负载 命令
top
uptime
w
cat /proc/loadavg
/proc虚拟文件系统,反应当前操作系统在内存中的运行情况,
1/293 正在运行的进程数/进程总数
3681:最近运行的进程ID号
什么因素构成负载均值的大小
进程的运行时长=所有处理器内核的处理时间+线程在队列等待的时间
需要进行调查法则 (0.70上下)
长期处于该值,在事情变得更糟糕之前,花些时间了解原因
现在就要修复法则(1.00)
长期徘徊于1.00,马上解决这个问题
凌晨三点半锻炼身体法则(5.00)
超过了5.00,你将失去你的睡眠,还要说明这情况发生的原因,千万不要让它发生
linux进程状态
阻塞进程 blocked process
会进入等待I/O设备的数据或系统调用
可运行进程 runnable process
处在一个运行队列 run queue,与其他可运行进程增多CPU时间
正在运行的进程 running process
计算负载均值:系统以处理器的核心数量计算
有多少个核心即有多个负荷
多核处理中,系统的均值不应该高于处理器核心的总数量
核心的核心
核心分布在分别几个单个物理处理中并不重要,
查询CPU的核心数量
查看物理CPU个数:cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
查看每个物理CPU中core的个数(即核数):cat /proc/cpuinfo| grep "cpu cores"| uniq
查看逻辑CPU的个数(线程数):cat /proc/cpuinfo| grep "processor"| wc -l
lscpu
物理CPU个数*逻辑CPU个数=总线程数
Windows查看CPU个数、核心数和线程数
wmic命令
cpu get Name:物理CPU数
cpu get NumberOfCores:CPU核心数
cpu get NumberofLogicalProcessors:CPU线程数
4核8线程,8核
4核8线程:指使用了超线程技术,物理核心模拟成2个逻辑核心,像8核一样同时间执行8线程,并非真正8核心
任务量不大下,能让CPU利用率提高很多,接近8核
CPU占100%满负荷下,和8核的性能差距明显
和8核比,每个CPU没有独立的资源,两个线程需要同一个资源,其中一个要暂时停止,让出资源
CPU数和线程数
CPU芯片数,物理上或硬件上存在多少个核心
线程数,对CPU内核数的模拟(逻辑概念)
因特尔超线程技术实现,允许一个内核对应两个线程
单核CPU、多线程CPU
四核八线程
AMD的CPU(没有超线程技术),只有核心数,没有线程数
虚拟机的CPU选择的核心数实际上表示线程数。
理想的load average:核数*CPU数*0.7
CPU个数:grep 'physical id' /proc/cpuinfo | sort -u
核数:grep 'core id' /proc/cpuinfo | sort -u | wc -l
京公网安备 11010502049817号