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

目录
相关文章
|
1天前
|
Linux 虚拟化 iOS开发
Linux系统——远程连接Linux系统(图形化、命令行、使用命令行学习Linux系统、FinalShell)
Linux系统——远程连接Linux系统(图形化、命令行、使用命令行学习Linux系统、FinalShell)
10 3
|
1天前
|
Linux 调度 虚拟化
Linux系统——初识Linux、虚拟机介绍、VMware WorkStation安装、在VMware上安装Linux
Linux系统——初识Linux、虚拟机介绍、VMware WorkStation安装、在VMware上安装Linux
15 4
|
1天前
|
Linux C++
Linux C/C++ 系统错误
Linux C/C++ 系统错误
|
2天前
|
Linux Shell
解决:linux系统磁盘空间被占满,但是找不到大文件
解决:linux系统磁盘空间被占满,但是找不到大文件
|
2天前
|
监控 Shell Linux
shell linux中用shell写一个占用CPU的脚本
shell linux中用shell写一个占用CPU的脚本
|
3天前
|
编解码 Ubuntu Linux
linux 系统命令总结之ubuntu 系列命令 持续更新中
linux 系统命令总结之ubuntu 系列命令 持续更新中
|
3天前
|
Linux Shell
IP地址库Linux系统从APNIC获取地址库
IP地址库Linux系统从APNIC获取地址库
|
3天前
|
Ubuntu 网络协议 Linux
ubuntu linux 系统搭建我的世界基岩版 私服我的世界服务器
ubuntu linux 系统搭建我的世界基岩版 私服我的世界服务器
|
3天前
|
Ubuntu Linux
查看Linux系统是Ubuntu还是CentOS
查看Linux系统是Ubuntu还是CentOS
15 0
|
3天前
|
Linux Shell Perl
编程入门(六)【Linux系统基础操作四】
编程入门(六)【Linux系统基础操作四】