Linux系统调优详解(十)——CPU调优

简介: Linux系统调优详解(十)——CPU调优

今天继续给大家介绍Linux运维相关知识,本文主要内容是CPU调优。

一、CPU中断次数查看
在进行Linux系统CPU调优时,我们有时需要查看CPU的中断次数。此时,我们应该执行命令:

grep HZ /boot/config-3.10.0-957.el7.x86_64
1
该命令执行结果如下所示:

注意到上图中的CONFIG_HZ,该参数即表示当前内核中CPU每秒有1000次中断。

二、进程优先级设置
在Linux系统中,我们可以使用nice和renice命令来调整进程的优先级,使得我们指定的进行获得更高的CPU调度或者相反。
相关知识和命令在Linux进程控制与进程优先级一文中有详细介绍,在这里就不过多赘述了。对Linux进程优先级设置还存在疑惑的可以自行查询该文章。

三、CPU亲和力设置
CPU亲和力是一种CPU调度特性,在当前系统中存在多核CPU的前提下,可以将一个进程“绑定到”某一个CPU上,使其固定在一个CPU上调度,从而减少进程在不同CPU之间的开销。
CPU亲和力的设置需要使用taskset命令。taskset命令常用命令示例如下:
1、指定运行命令进程的CPU亲和力
执行命令:

taskset -c 1 vi 123.txt
1
可以执行vi 123.txt的命令,并且将该命令执行的进程CPU亲和力设置为1。
2、查看进程的CPU亲和力
我们查询到上述进程的PID为7362,然后执行命令:

taskset -p 7362
1
即可查询该进程的CPU亲和力,结果如下所示:

在上图中我们可以看到,该命令执行后,返回了该进程的CPU亲和力的掩码。
该掩码应该如下理解:
我们按照CPU进行编号,从0开始,在本系统中,一共有4个CPU,因此编号为0、1、2、3。
每个CPU,如果该进程对其亲和,就设置为1,如果不亲和,就设置为0。这样,就会得到4个数值,我们按照二进制的方式将其组合,并按照16进制的方式显示,这样,我们就可以很容易的得到该进程CPU亲和力的掩码。
在本实例中,该进程亲和于CPU编号1,因此其二进制码为0010,换算成16进制,即为2。类似的,在默认情况下,一个进程对所有的CPU都亲和,因此其二进制码为1111,换算成16进制,即为f。
3、修改进程的CPU亲和力
执行命令:

taskset cp 1,2,3 7362
1
可以将PID为7362的进程的CPU亲和力设置为1,2,3,该命令执行结果如下所示:

从上图可以看出,修改后该进程的CPU亲和力掩码为e,换算成二进制码即为1110,即对1,2,3三个CPU亲和。

四、CPU性能和利用率
一般情况下,一个CPU处理器上运行的队列数不应该超过3个,如果超过3个,就表示当前系统负载过大。
另外,如果一个CPU被充分利用,那么其利用率比率应该是:
用户态:65%-70%
内核态:30%-35%
空闲态:0-5%
另外,上下文切换的数目会直接影响到CPU的使用率,如果CPU使用率始终保持在上述状态,那么即使上下文切换的数目即使非常大,那么也是正常的。
从大量的分析和实践中,我们可以得到系统CPU使用的以下结论:
1、如果当前系统中上下文切换的数目高于中断的数目,说明内核中的非常多时间消耗在上下文切换线程上。
2、如果等待IO的时间非常多,用户使用时间比较低,那么就表示当前系统中磁盘IO存在瓶颈。
3、在2的情况下,可能会有一些进程阻塞在IO请求上,因此在运行队列中可能会有一些可运行状态的线程在等待执行。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40228200/article/details/125381454

目录
相关文章
|
3月前
|
运维 Linux 虚拟化
Linux 查看 CPU 使用情况
在 Linux 系统中,查看 CPU 使用情况是性能分析和故障排查的重要环节。查看 CPU 使用情况,使用 top 命令或者 htop 命令来查看。
|
18天前
|
XML JSON Ubuntu
Linux系统之tree命令的基本使用
Linux系统之tree命令的基本使用
79 3
Linux系统之tree命令的基本使用
|
26天前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
201 17
|
24天前
|
数据挖掘 Linux 数据库
服务器数据恢复—Linux系统服务器数据恢复案例
服务器数据恢复环境: linux操作系统服务器中有一组由4块SAS接口硬盘组建的raid5阵列。 服务器故障: 服务器工作过程中突然崩溃。管理员将服务器操作系统进行了重装。 用户方需要恢复服务器中的数据库、办公文档、代码文件等。
|
7天前
|
存储 Linux 内存技术
linux系统查看硬盘序列号
本文介绍在Linux系统中查看硬盘信息的三种方法:1) 使用`hdparm`工具,通过`sudo hdparm -i /dev/sda`获取硬盘序列号和型号;2) 使用`smartctl`工具,不仅可查序列号和型号,还能了解硬盘健康状态;3) 使用`lshw`命令显示存储设备拓扑信息。此外,提供通用技巧如用`lsblk`确认磁盘标识,及注意事项,例如管理员权限和云主机可能隐藏物理序列号等。
|
2月前
|
Linux 定位技术
Linux系统中的cd命令:目录切换技巧
踏过千山,越过万水,人生就是一场不断前行的旅程,总充满了未知与挑战。然而,“cd”命令如同你的旅伴,会带你穿梭在如棋盘一般的文件系统中,探索每一处未知。希望你能从“cd”命令中找到乐趣,像是掌控了一种络新妙的魔法,去向未知进发,开始你的探索之旅。
146 24
|
2月前
|
Linux Shell
Linux系统下快速批量创建和删除文件的方法
总的来说,使用shell脚本来批量处理文件是一种非常强大的工具,只要你愿意花时间学习和实践,你会发现它能大大提高你的工作效率。
142 19
|
2月前
|
安全 Shell Linux
Linux系统之su命令的基本使用
Linux系统之su命令的基本使用
165 3
Linux系统之su命令的基本使用
|
2月前
|
Ubuntu Linux 编译器
在Ubuntu Linux系统下如何搭建并安装EDK2
以上就是在Ubuntu Linux系统下搭建并安装EDK2的过程。这个过程可能会有些复杂,但只要按照步骤一步步来,应该不会有太大问题。如果在过程中遇到任何问题,都可以在网上找到相应的解决方案。希望这个指南能对你有所帮助!
121 17
|
3月前
|
监控 Linux Python
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
151 27