我执行 top 命令是类似这个样子: ··· (sdk) [xxx ~]$ top top - 15:46:23 up 81 days, 6:09, 7 users, load average: 15.03, 14.66, 20.48 Tasks: 760 total, 20 running, 715 sleeping, 25 stopped, 0 zombie %Cpu(s): 35.7 us, 18.1 sy, 5.4 ni, 40.0 id, 0.2 wa, 0.0 hi, 0.1 si, 0.4 st KiB Mem : 22260643+total, 15450846+free, 18399780 used, 49698192 buff/cache KiB Swap: 0 total, 0 free, 0 used. 20240766+avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9055 xxxxxxxx 20 0 3235836 311676 35476 S 47.0 0.1 0:01.42 xxx 8836 xxxxxxxx 20 0 3235836 309780 35504 S 44.4 0.1 0:01.40 xxx ···
已经知道机器是 36 核的,
我查了一下,它物理 cpu 个数是 2,每个物理 cpu 的核数是 18,
有没有大佬告诉我怎么看这个 load avergage,和下面的%CPU 占用率和这个 cpu 核数的对应关系?
网上搜了半天没找到讲得清楚了,能不能求 v 站大佬给点指导?或者告诉我去看那些资料可以获取到这个信息?
跪谢
1
weizhen199 2020-12-01 15:54:37 +08:00
下个 nmon 试试?
|
2
arcaitan OP 为什么我用···,md 语法没生效--
|
3
Vegetable 2020-12-01 15:57:07 +08:00
因为你用了中文的·而不是`,所以格式没出来。
|
5
arcaitan OP @weizhen199 我就是用 cpulimit -p 47380 -l 10 这种,想限制某个进程不要占满 cpu,然后发现整个多核状态很困扰
|
6
woshiaha 2020-12-01 16:07:21 +08:00
load avergage 并不一定和 cpu 负载对应 因为在某一个版本的 linux 修改中 将硬盘 io 这些因素也考虑了进去 你如果去放个 IO 量大的服务上去压测可以随便压到 100 多
|
7
lvzhiqiang 2020-12-01 16:44:32 +08:00
平均负载和 CPU 使用率没有必然的关系。 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃的进程数。一般不可中断状态的进程,IO 进程为主。 -- 推荐资料,你可以看看极客时间 Linux 性能优化实战 这门课程,讲了很多有关性能方面的知识和实战技巧。 -- 如果看起来有难度的话,建议补下操作系统 进程管理方面的知识。
|
8
arcaitan OP @lvzhiqiang 谢谢,我明天看一下
|
9
dorothyREN 2020-12-01 18:21:10 +08:00
36 核满载 是 3600%
|
10
laminux29 2020-12-01 19:05:21 +08:00
你研究方向弄错了。你应该去从源码分析。
|
11
liuhuan475 2020-12-02 11:16:26 +08:00
按 1
|
13
libook 2020-12-02 14:40:18 +08:00
Load Average 三个值,分别是最近 1 分钟、5 分钟、15 分钟的平均负载值。
值代表的意思是当前有多少个任务在等待被处理。如果接近 0 就代表现在系统负载很低,不会有任务堆积;越高就代表任务出现了堆积。 但是对于多(逻辑)核 CPU 来说,它能同时完成多个任务;比如 8 核心 CPU,当瞬时负载 16 、且没有新的任务加入、且不存在其他瓶颈的情况下,理想情况下 CPU 处理完手里的所有任务可以直接从等待的任务里拿走 8 个去处理,将负载从 16 降为 8 。所以一般来说,负载达到 CPU 总核心数代表 100%满载,超过就是过载,低就是空载。 这是个系统宏观综合负载的表达,不代表系统中某一个组件的性能情况,比如内存、磁盘、网络、设备等短板也都会导致任务不能尽快完成,造成任务堆积,此时 CPU 可能还在空转,但对于系统来说可能已经过载。 想要解决过载问题的话,还是得看系统各个资源的具体情况。 |