问题
这两天在排查一个问题,服务器上同一段代码的性能不稳定,运行时间时长时段,差别很大;
排查的第一步,将耗时不稳定的代码优化后(使用多线程),运行时间任然忽长忽段;
排查的第二步,将耗时不稳定的代码,在调用时,连续跑N次,观察现象,时间很稳定,运行都很短;
排查的第三步,在服务接受到请求后,开始N次任务,每个任务的那段代码,运行稳定,时间很短;
排查的第四步,在N次任务中夹杂sleep(200),运行时间任然忽长忽段;
怀疑是服务器主频的问题,修改服务器主频模式后,确实可以运行稳定了;
修改服务器主频
安装cpufrequtils
root@ubuntu:~# apt-get install cpufrequtils
根据博客设置服务的CPU模式linux cpu开启性能模式_252371713的博客-CSDN博客_linux高性能模式今天我们的一台数据库服务器,业务研发反馈tp999会不时的彪高,我们查询了各种指标,发现网络重传比较高,同事cpu的load比较高,但是统一宿主机上其他的docker没有重传,因此不是网卡的问题,通过dmesg,发现有cpu降频的相关日志。发现是cpu降频引起的。 查看,系统设置的是非高性能模式。需要设置成高性能模式。相关日志如下:perf: interrupt took too long (166702 > 165147), lowering kernel.perf_event_max_samphttps://blog.tankywoo.com/2014/05/26/cpufrequtils.html 查看CPU信息
root@ubuntu:~# cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:driver: intel_pstateCPUs which run at the same hardware frequency: 0CPUs which need to have their frequency coordinated by software: 0maximum transition latency: 0.97 ms.hardware limits: 800 MHz - 5.00 GHzavailable cpufreq governors: performance, powersavecurrent policy: frequency should be within 800 MHz and 5.00 GHz.The governor "powersave" may decide which speed to usewithin this range.current CPU frequency is 800 MHz (asserted by call to hardware).
使用cpupower设定
cpupower调整CPU主频 - 裸睡的猪 - 博客园https://www.cnblogs.com/ggzhangxiaochao/p/13948483.html
增加定时任务,7:30后开启性能模式;17:30后开启节能模式;
在/etc/crontab文件内,追加下面内容:
30 17 * * * root cpupower -c all frequency-set -g powersave
30 7 * * * root cpupower -c all frequency-set -g performance
具体的crontab定时任务的使用,参见下文:
每天一个linux命令(50):crontab命令 - peida - 博客园循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可https://www.cnblogs.com/peida/archive/2013/01/08/2850483.html