linux cpu如何开启性能模式

 更新时间:2023年06月25日 16:58:09   作者:252371713  
这篇文章主要介绍了linux cpu如何开启性能模式问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

linux cpu开启性能模式

今天我们的一台数据库服务器,业务研发反馈tp999会不时的彪高,我们查询了各种指标,发现网络重传比较高,同事cpu的load比较高,但是统一宿主机上其他的docker没有重传,因此不是网卡的问题,通过dmesg,发现有cpu降频的相关日志。

发现是cpu降频引起的。

查看,系统设置的是非高性能模式。需要设置成高性能模式。

相关日志如下:

perf: interrupt took too long (166702 > 165147), lowering kernel.perf_event_max_sample_rate to 1000

一般服务器的CPU都支持自动睿频,而服务器的CPU一般默认运行于ondemand模式,会有中断开销,睿频的时候提升下降也是有额外的开销,特别是对于一些低端cpu比如C2350,C2338,N2800这些低价独服的CPU,影响更大。

模式说明:

  • performance:运行于最大频率
  • powersave:运行于最小频率
  • userspace:运行于用户指定的频率
  • ondemand:按需快速动态调整CPU频率, 一有cpu计算量的任务,就会立即达到最大频率运行,空闲时间增加就降低频率
  • conservative:按需快速动态调整CPU频率, 比 ondemand 的调整更保守
  • schedutil:基于调度程序调整 CPU 频率

Centos7 设置方法

# yum install -y cpupowerutils
# cpupower frequency-info
# cat /proc/cpuinfo
# cpupower frequency-set -g performance

查看方式,可以比较前后的设置

# cat /proc/cpuinfo | grep MHz

Debian设置方法

安装工具

apt install cpufrequtils

编辑 /etc/default/cpufrequtils 如不存在则创建,添加条目

GOVERNOR=”performance”

重启生效

systemctl restart cpufrequtils

 linux系统调优-CPU问题

Linux下系统调优,内容总结主要来自于工作经验和参考部分网络博客及红帽官方博客的结合,主要选取了一些个人理解的以及有过实践的内容,还有一些觉得比较有价值但是没实践过的方向。

之所以要总结系统调优,是因为我们服务器厂商在硬件配置一定,BIOS选项配置一定的情况下, 再想让相关性能获得提升就只能在系统下进行设置,因此也是有必要有一个完整的了解。

因为是比较完整的,可能罗列出了许多方向,对于这些方向,怎么样调能带来怎么样的效果,肯定是需要实践后才能确认的,在遇到具体问题和需求时可以从这些方向上下手,分成五个小部分,分别是CPU、内存、存储、网络、整体工具tuned-adm

一、Cpu

1.CPU工作模式

CPU的性能设置和查询通过cpupower工具来完成,一共有下图五种模式

需要CPU时时刻刻工作在最高频率的话设置为performance就可以,如下图是查询当前频率信息和设置性能模式的方法

2.谈谈监控

简单的监控我推荐使用turbostat工具查看CPU各个核心的实时工作频率,如果用lscpu命令或者cat /proc/cupinfo查看到的CPU频率,可能不是准确的,结合实践以及查阅了一些资料基本可以确认turbostat的计算方式是更准确的。

本博客之前有一篇放了一个CPU频率监测脚本,那个脚本内是监测/proc/cpuinfo的,目前来看其实有点缺陷,但是因为这种不准确往往出现在CPU频率是最高的时候,所以用来监测频率降低这些异常还是没什么问题的。

如下图是turbostat直接敲下的例子,

还可以用sysstat工具里的mpstat命令监控各个核心的使用率,如下图是查询当前非idle的核心,这种监控方式用来帮助我们定位一些CPU性能为瓶颈时的系统性能问题,可以找到异常核心

3.优化进程

上面说的是整个系统的设置,具体到我们需要对某个进程来多分配些CPU资源,或者避免进程之间使用相同的CPU资源,影响了进程的性能,可以使用taskset工具,taskset –c 0,1 ./xxx.sh就是把0,1核心分配给了这个脚本。

这个工具相对简易一点,更推荐使用的是numactl工具。

这个工具管理的更为全面,通过numactl –hardware可以查看如下图,每个node节点分配到的内存与CPU核心

通过下图的方法可以知道某个设备所在的numa节点,并根据numa节点知道设备对应所在的CPU核心,如果是类似网卡设备调优,那么网卡测试进程就绑在网卡所在的CPU核心上,硬盘测试同理

当然如果资源比较充裕,不用管具体哪些核心,把某个numa节点下的cpu核心全绑定在某进程上也可以,通过numactl –cpubind=0 –membind=0 ./xxx.sh就可以把nudo0的资源分配给这个脚本,设置之后,也可以使用numastat命令查看各个节点的使用状态

各个具体参数可以去网上找博客查看,我了解到的就是othernode如果过高,说明你的分配或者是系统自动分配的不太合理,需要重新分配相关进程资源。

除此之外nuamctl也可以和taskset一样自由分配CPU节点,通过numactl –C 0-15 ./xx.sh即可将脚本绑定到0-15核心上。

要注意的是,我们在绑核的时候,无论是taskset还是nuamctl,都尽量不要跨numa,比如0-15要确保是一个numa节点上的,是否是一个numa节点可以通过numactl –hardware的结果里看到

4.CPU中断irqbalance

如果CPU中断没有很好的平衡,容易出现性能瓶颈,正常情况下需要启用

service irqbalacne start

在之前的工作中有印象给网卡设置过中断来提升网卡性能,下面的第一条命令可以列出所有中断号,其中第一列是中断号,第七列可以看是什么设备。

第二条命令可以查看该中断号对应的CPU核心,通过echo XX具体的核心数可以更改具体的核心,通常需要该核心同样是网口所在numa节点的核心,性能会比较好

cat /proc/interrupts
cat /proc/irq/55/smp_affinity_list

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux如何处理文件已删除但空间不释放的问题

    Linux如何处理文件已删除但空间不释放的问题

    这篇文章主要介绍了Linux如何处理文件已删除但空间不释放的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 在CentOS 7.2上安装SuPHP的详细方法

    在CentOS 7.2上安装SuPHP的详细方法

    这篇文章主要介绍了在CentOS 7.2上安装SuPHP的详细方法,本教程介绍从源代码安装CentOS 7.2上的SuPHP,因为没有可用于CentOS 7.2的SuPHP软件包,需要的朋友可以参考下
    2020-02-02
  • Centos8搭建配置nis域服务详细步骤

    Centos8搭建配置nis域服务详细步骤

    大家好,本篇文章主要讲的是Centos8搭建配置nis域服务详细步骤,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Linux中的iptables防火墙

    Linux中的iptables防火墙

    iptables防火墙由netfilter和iptables组成,其中netfilter是内核态的数据包过滤系统,iptables是用户态的防火墙管理程序,iptables包含raw、mangle、nat和filter四个规则表,以及INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTING五个规则链
    2024-09-09
  • 详解如何在阿里云服务器部署程序并用域名直接访问

    详解如何在阿里云服务器部署程序并用域名直接访问

    这篇文章主要介绍了详解如何在阿里云服务器部署程序并用域名直接访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Linux解决RocketMQ中NameServer启动问题的方法详解

    Linux解决RocketMQ中NameServer启动问题的方法详解

    这篇文章主要为大家详细介绍了Linux解决RocketMQ中NameServer启动问题的方法,文中通过图片和示例代码进行了详细讲解,需要的小伙伴可以参考下
    2023-08-08
  • linux守护进程服务daemon、nohup、systemd的区别

    linux守护进程服务daemon、nohup、systemd的区别

    守护进程(Daemon)是指在后台运行的进程,不与用户直接交互,且在系统启动时自动运行,nohup是一个命令行实用程序,用于在用户注销后继续运行命令,‌Systemd‌用于管理和启动服务,支持复杂的依赖管理和自动启动
    2025-03-03
  • Linux CentOS 7.0中java安装与配置环境变量的步骤详解

    Linux CentOS 7.0中java安装与配置环境变量的步骤详解

    这篇文章主要给大家分享介绍了关于Linux CentOS 7.0中java安装与配置环境变量的相关资料,文中通过示例代码将安装与配置的过程介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-07-07
  • linux下获取文件的创建时间与实战教程

    linux下获取文件的创建时间与实战教程

    这篇文章主要给大家介绍了关于linux下获取文件的创建时间与实战的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • 腾讯云服务器Centos挂载数据盘的方法

    腾讯云服务器Centos挂载数据盘的方法

    这篇文章主要介绍了腾讯云服务器Centos挂载数据盘的方法,参考了网上一些资料,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10

最新评论