文章详情页 您现在的位置是:网站首页>文章详情
CPU性能——系统负载
Jeyrce.Lu 发表于:2020年7月29日 20:37 分类:【服务器】 2455次阅读
平均负载
平均负载指的是单位时间内,系统处于可运行状态和不可中断状态的平均进程数,即平均活跃进程数。
jeeyshe@jeeyshe-PC:~$ uptime 19:45:47 up 12:19, 1 user, load average: 0.42, 0.54, 0.29 # 输出分别是 当前系统时间 系统运行时间 当前登录用户数量 过去 1m、5m、15m的平均负载(load average)
可运行状态
正在使用cpu或者正在等待cpu的进程,我们可以通过ps查到的处于RUNNING或者Runnable状态的进程。
不可中断状态
处于内核态关键流程的进程,进程不可打断,如阻塞IO,我们可以在ps命令中查看到处于Uninterruptible Sleep 或 Disk Sleep状态的进程,这种进程是一种对硬件的保护机制。
合理的平均负载
最为理想的平均负载为1,即一个cpu对应一个进程是操作系统最为理想的状态,此时系统负载低且cpu得到充分利用。
jeeyshe@jeeyshe-PC:~$ cat /proc/cpuinfo |grep "model name" model name : Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz model name : Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz model name : Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz model name : Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
可以查看cpu个数,当平均负载大于cpu个数,则系统处于过载状态。通过最近1m、5m、15m的负载变化也可反映出系统负载的趋势。一般来说当cpu负载达到70%时就需要做排查对系进行统优化了。
平均负载和cpu使用率
系统负载包含了正在使用、等待cpu、等待IO三部分的进程,而cpu使用率是针对正在使用cpu的进程,因此二者可能并不统一。
(1)CPU密集型进程,此时二者一致,都会升高。
(2)I/O密集型进程,负载一定会升高,CPU使用率有可能空闲也有可能繁忙。
(3)大量等待CPU调度的进程,平均负载和CPU使用率都会高。
系统负载分析工具
sudo apt install stress sysstat
安装完成之后会得到stress、mpstat、pidstat三个命令工具,可用于实时查看CPU、内存、IO及上下文等性能指标。
(1)CPU密集型进程模拟
stress --cpu 1 --timeout 600 # 另一个终端查看系统负载 20:15:52 up 12:49, 1 user, load average: 1.44, 0.81, 0.42 # 第三个终端查看cpu使用率 jeeyshe@jeeyshe-PC:~$ mpstat -P ALL 5 Linux 5.3.0-3-amd64 (jeeyshe-PC) 2020年07月29日 _x86_64_ (4 CPU) 20时16分39秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 20时16分44秒 all 28.66 0.00 4.32 0.00 0.00 0.25 0.00 0.00 0.00 66.77 20时16分44秒 0 4.94 0.00 4.55 0.00 0.00 0.00 0.00 0.00 0.00 90.51 20时16分44秒 1 1.59 0.00 0.79 0.00 0.00 0.79 0.00 0.00 0.00 96.83 20时16分44秒 2 8.79 0.00 12.13 0.00 0.00 0.00 0.00 0.00 0.00 79.08 20时16分44秒 3 98.80 0.00 0.20 0.00 0.00 0.20 0.00 0.00 0.00 0.80 # 查看进程情况 jeeyshe@jeeyshe-PC:~$ pidstat -u 5 1 Linux 5.3.0-3-amd64 (jeeyshe-PC) 2020年07月29日 _x86_64_ (4 CPU) 20时18分05秒 UID PID %usr %system %guest %wait %CPU CPU Command 20时18分10秒 0 953 0.00 0.20 0.00 0.00 0.20 2 vmtoolsd 20时18分10秒 0 1608 13.17 2.99 0.00 1.40 16.17 3 Xorg 20时18分10秒 1000 2004 0.00 0.20 0.00 0.20 0.20 2 dbus-daemon 20时18分10秒 1000 2123 0.00 6.59 0.00 1.80 6.59 2 kwin_x11 20时18分10秒 1000 2159 0.20 0.20 0.00 0.00 0.40 2 dde-session-dae 20时18分10秒 1000 2185 0.00 0.20 0.00 0.00 0.20 2 dde-dock 20时18分10秒 1000 2822 0.40 0.60 0.00 0.40 1.00 2 deepin-terminal 20时18分10秒 1000 2840 0.20 0.00 0.00 0.00 0.20 2 chromium 20时18分10秒 1000 5470 0.80 0.40 0.00 0.00 1.20 1 java 20时18分10秒 1000 5507 1.00 0.40 0.00 0.00 1.40 2 java 20时18分10秒 1000 5538 0.00 0.20 0.00 0.00 0.20 1 java 20时18分10秒 1000 6558 0.20 0.00 0.00 0.00 0.20 3 dde-lock 20时18分10秒 1000 20148 0.20 0.20 0.00 0.00 0.40 0 chromium 20时18分10秒 1000 29158 0.00 0.40 0.00 0.00 0.40 3 dde-launcher 20时18分10秒 1000 32705 0.40 0.40 0.00 0.20 0.80 0 chromium 20时18分10秒 0 33699 0.00 0.20 0.00 0.00 0.20 0 kworker/0:3-events 20时18分10秒 1000 35254 99.80 0.00 0.00 0.00 99.80 1 stress 20时18分10秒 1000 35412 0.00 0.20 0.00 0.00 0.20 0 pidstat
可以观察到三个现象:A: 1m的系统负载逐渐升高。B: 有一个CPU使用率接近100%但是io等待接近0. C: 可以看到stress进程CPU使用率接近100%.
(2)IO密集型进程模拟
stress -i 1 --timeout 600 # 同样使用其他终端查看系统负载和cpu使用率
可以观察到三个现象,A: 1m系统负载逐渐升高到1以上. B: 有一个CPU的使用率达到了35%, iowait升高到了50%。C: 可查看到stress进程cpu使用率高。
(3)大量进程模拟
stress -c 16 --timeout 600
此处我们拥有4CPU,但是我们模拟了16进程的情况,可以观察到,A: 1m系统负载逐渐上升到4.x。 B: mpstat观察到所有CPU使用率升高到100%附近。 C: pidstat查看到大量stress进程系统负载高且等待高。
版权声明 本文属于本站 原创作品,文章版权归本站及作者所有,请尊重作者的创作成果,转载、引用自觉附上本文永久地址: http://blog.lujianxin.com/x/art/hxxs0y6fluzn
上一篇:真香!python静态类型注释
下一篇:CPU性能——系统负载
猜你喜欢
文章评论区
作者名片
- 作者昵称:Jeyrce.Lu
- 原创文章:61篇
- 转载文章:3篇
- 加入本站:2048天
作者其他文章
站长推荐
友情链接
站点信息
- 运行天数:2049天
- 累计访问:164169人次
- 今日访问:0人次
- 原创文章:69篇
- 转载文章:4篇
- 微信公众号:第一时间获取更新信息