linux cpu如何開啟性能模式
今天我們的一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,業(yè)務(wù)研發(fā)反饋tp999會(huì)不時(shí)的彪高,我們查詢了各種指標(biāo),發(fā)現(xiàn)網(wǎng)絡(luò)重傳比較高,同事cpu的load比較高,但是統(tǒng)一宿主機(jī)上其他的docker沒有重傳,因此不是網(wǎng)卡的問題,通過dmesg,發(fā)現(xiàn)有cpu降頻的相關(guān)日志。
發(fā)現(xiàn)是cpu降頻引起的。
查看,系統(tǒng)設(shè)置的是非高性能模式。需要設(shè)置成高性能模式。
相關(guān)日志如下:
perf: interrupt took too long (166702 > 165147), lowering kernel.perf_event_max_sample_rate to 1000一般服務(wù)器的CPU都支持自動(dòng)睿頻,而服務(wù)器的CPU一般默認(rèn)運(yùn)行于ondemand模式,會(huì)有中斷開銷,睿頻的時(shí)候提升下降也是有額外的開銷,特別是對(duì)于一些低端cpu比如C2350,C2338,N2800這些低價(jià)獨(dú)服的CPU,影響更大。
模式說明:
performance:運(yùn)行于最大頻率powersave:運(yùn)行于最小頻率userspace:運(yùn)行于用戶指定的頻率ondemand:按需快速動(dòng)態(tài)調(diào)整CPU頻率, 一有cpu計(jì)算量的任務(wù),就會(huì)立即達(dá)到最大頻率運(yùn)行,空閑時(shí)間增加就降低頻率conservative:按需快速動(dòng)態(tài)調(diào)整CPU頻率, 比 ondemand 的調(diào)整更保守schedutil:基于調(diào)度程序調(diào)整 CPU 頻率Centos7 設(shè)置方法# yum install -y cpupowerutils# cpupower frequency-info# cat /proc/cpuinfo# cpupower frequency-set -g performance查看方式,可以比較前后的設(shè)置
# cat /proc/cpuinfo | grep MHzDebian設(shè)置方法安裝工具
apt install cpufrequtils編輯 /etc/default/cpufrequtils 如不存在則創(chuàng)建,添加條目
GOVERNOR=”performance”重啟生效
systemctl restart cpufrequtils linux系統(tǒng)調(diào)優(yōu)-CPU問題Linux下系統(tǒng)調(diào)優(yōu),內(nèi)容總結(jié)主要來自于工作經(jīng)驗(yàn)和參考部分網(wǎng)絡(luò)博客及紅帽官方博客的結(jié)合,主要選取了一些個(gè)人理解的以及有過實(shí)踐的內(nèi)容,還有一些覺得比較有價(jià)值但是沒實(shí)踐過的方向。
之所以要總結(jié)系統(tǒng)調(diào)優(yōu),是因?yàn)槲覀兎?wù)器廠商在硬件配置一定,BIOS選項(xiàng)配置一定的情況下, 再想讓相關(guān)性能獲得提升就只能在系統(tǒng)下進(jìn)行設(shè)置,因此也是有必要有一個(gè)完整的了解。
因?yàn)槭潜容^完整的,可能羅列出了許多方向,對(duì)于這些方向,怎么樣調(diào)能帶來怎么樣的效果,肯定是需要實(shí)踐后才能確認(rèn)的,在遇到具體問題和需求時(shí)可以從這些方向上下手,分成五個(gè)小部分,分別是CPU、內(nèi)存、存儲(chǔ)、網(wǎng)絡(luò)、整體工具tuned-adm
一、Cpu1.CPU工作模式
CPU的性能設(shè)置和查詢通過cpupower工具來完成,一共有下圖五種模式
需要CPU時(shí)時(shí)刻刻工作在最高頻率的話設(shè)置為performance就可以,如下圖是查詢當(dāng)前頻率信息和設(shè)置性能模式的方法
2.談?wù)劚O(jiān)控
簡(jiǎn)單的監(jiān)控我推薦使用turbostat工具查看CPU各個(gè)核心的實(shí)時(shí)工作頻率,如果用lscpu命令或者cat /proc/cupinfo查看到的CPU頻率,可能不是準(zhǔn)確的,結(jié)合實(shí)踐以及查閱了一些資料基本可以確認(rèn)turbostat的計(jì)算方式是更準(zhǔn)確的。
本博客之前有一篇放了一個(gè)CPU頻率監(jiān)測(cè)腳本,那個(gè)腳本內(nèi)是監(jiān)測(cè)/proc/cpuinfo的,目前來看其實(shí)有點(diǎn)缺陷,但是因?yàn)檫@種不準(zhǔn)確往往出現(xiàn)在CPU頻率是最高的時(shí)候,所以用來監(jiān)測(cè)頻率降低這些異常還是沒什么問題的。
如下圖是turbostat直接敲下的例子,
還可以用sysstat工具里的mpstat命令監(jiān)控各個(gè)核心的使用率,如下圖是查詢當(dāng)前非idle的核心,這種監(jiān)控方式用來幫助我們定位一些CPU性能為瓶頸時(shí)的系統(tǒng)性能問題,可以找到異常核心
3.優(yōu)化進(jìn)程
上面說的是整個(gè)系統(tǒng)的設(shè)置,具體到我們需要對(duì)某個(gè)進(jìn)程來多分配些CPU資源,或者避免進(jìn)程之間使用相同的CPU資源,影響了進(jìn)程的性能,可以使用taskset工具,taskset –c 0,1 ./xxx.sh就是把0,1核心分配給了這個(gè)腳本。
這個(gè)工具相對(duì)簡(jiǎn)易一點(diǎn),更推薦使用的是numactl工具。
這個(gè)工具管理的更為全面,通過numactl –hardware可以查看如下圖,每個(gè)node節(jié)點(diǎn)分配到的內(nèi)存與CPU核心
通過下圖的方法可以知道某個(gè)設(shè)備所在的numa節(jié)點(diǎn),并根據(jù)numa節(jié)點(diǎn)知道設(shè)備對(duì)應(yīng)所在的CPU核心,如果是類似網(wǎng)卡設(shè)備調(diào)優(yōu),那么網(wǎng)卡測(cè)試進(jìn)程就綁在網(wǎng)卡所在的CPU核心上,硬盤測(cè)試同理
當(dāng)然如果資源比較充裕,不用管具體哪些核心,把某個(gè)numa節(jié)點(diǎn)下的cpu核心全綁定在某進(jìn)程上也可以,通過numactl –cpubind=0 –membind=0 ./xxx.sh就可以把nudo0的資源分配給這個(gè)腳本,設(shè)置之后,也可以使用numastat命令查看各個(gè)節(jié)點(diǎn)的使用狀態(tài)
各個(gè)具體參數(shù)可以去網(wǎng)上找博客查看,我了解到的就是othernode如果過高,說明你的分配或者是系統(tǒng)自動(dòng)分配的不太合理,需要重新分配相關(guān)進(jìn)程資源。
除此之外nuamctl也可以和taskset一樣自由分配CPU節(jié)點(diǎn),通過numactl –C 0-15 ./xx.sh即可將腳本綁定到0-15核心上。
要注意的是,我們?cè)诮壓说臅r(shí)候,無論是taskset還是nuamctl,都盡量不要跨numa,比如0-15要確保是一個(gè)numa節(jié)點(diǎn)上的,是否是一個(gè)numa節(jié)點(diǎn)可以通過numactl –hardware的結(jié)果里看到
4.CPU中斷irqbalance
如果CPU中斷沒有很好的平衡,容易出現(xiàn)性能瓶頸,正常情況下需要啟用
service irqbalacne start在之前的工作中有印象給網(wǎng)卡設(shè)置過中斷來提升網(wǎng)卡性能,下面的第一條命令可以列出所有中斷號(hào),其中第一列是中斷號(hào),第七列可以看是什么設(shè)備。
第二條命令可以查看該中斷號(hào)對(duì)應(yīng)的CPU核心,通過echo XX具體的核心數(shù)可以更改具體的核心,通常需要該核心同樣是網(wǎng)口所在numa節(jié)點(diǎn)的核心,性能會(huì)比較好
cat /proc/interruptscat /proc/irq/55/smp_affinity_list總結(jié)以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
