
Linux学习笔记1:CPU核数&linux进程

一、CPU核数
1、物理cpu数:physicalidid
#以下是两个物理CPU
[root@8-20~]#cat/proc/cpuinfo|grep-i’physicalid|sort|uniq
physicalid:0
physicalid:1
2、核数:看cpucores
#以下是每个物理CPU的8个核
[root@8-20~]#cat/proc/cpuinfo|grep-i’cpucores|sort|uniq
cpucores:8
3、是否支持超线程:sibling是否大于cpucores。如果大于,则表示支持超线程。超线程数为siblings/cpucores=16/8=2
4、总核数:物理CPU数*核数,以上例子:2*8=16核
5、CPU总逻辑数(线程数):总核数*超线程数,以上例子:16*2=32线程
6、看总逻辑CPU数的方法比较简单:top命令,然后按1
逻辑cpu的数量为32

二、linux的进程状态
linux进程状态及转换关系
2.1R状态(对系统产生负载)
就绪状态(runnable):说明过程处于CPU的就绪队列中,就绪过程
运行状态(running):表示过程处于CPU的就绪队列中,运行态的过程
2.2D状态(对系统产生负载)
睡眠状态不能中断(uninterruptible):表示过程正在与硬件交互(如申请资源(内存)io)或者处理硬件),此时不允许被其他过程中断,这也是过程的自我保护机制。虽然它在短时间内是一种不可中断的睡眠状态,但它仍然占用资源,因此它会产生系统负载。
注:少量D状态无关紧要,但有大量D状态:需要进一步分析瓶颈在哪里
2.3Z状态
僵死状态(zombie):僵尸过程意味着过程实际上已经结束,但父亲的过程尚未恢复其资源(如过程描述符、PID等)
2.4S状态
它可以中断睡眠状态,这意味着该过程因等待事件而被系统悬挂(堵塞)。当等待过程的事件发生时,它会被唤醒并进入R状态
2.5I状态
空闲状态(Idle)。用于不中断睡眠的核心线程。由硬件交互引起的不中断过程用D表示,但对于某些核心线程来说,在不中断睡眠时可能没有任何负载。
2.6T或T状态
(Stopped或Traced)表示过程处于暂停或跟踪状态
2.7X状态
过程已经消亡

三、平均负载loadaverage
1、含义:系统的平均负载长度,即平均活动过程数(R状态)【runing、runable】与D状态(不中断,与硬件交互,受保护)
说明:R状态和D状态都能产生系统负载
2、平均负载怎么算高?怎么计算?
要看核数,要看系数
2.1高度与否与cpu核数有关
2.1单核过去1分钟、5分钟、15分钟的平均负荷>10高
2.224核过去1分钟、5分钟、15分钟平均负荷>10且小于24,不高
2.2、如何计算系数?
核数为0.7*,load不高<0.7*核数,load不高
大于0.7核数,小于5*核数,load不高,不好说,要进一步监控分析
>5*核数,load高
3、平均负载高的原因是什么?
平均负载是将r状态和b状态的过程计入负载,因此平均负载高的原因肯定可以推断出活跃过程的数量。
3.1只能推断出过程太多,应用是cpu密集过程。这些cpu密集过程有太多的任务(计算和统计),cpu满载。这个时候需要进一步看top和哪个过程。
4、与平均利用率相比
4.1平均负载高,cpu占用高吗?
CPU密集过程,是的,如果平均负载高,CPU必须占用高
I/O密集型平均负载不一定高,cpu占用率高(没有复杂的计算操作,所以不一定)
4.2cpu占用率高,平均负荷高吗?
cpu占用率高,平均负载不一定高:java过程占90%和8核,平均负载可能是1
cpu密集型工艺比例高,工艺多。因此,cpu占用率高,平均负载可能高





















