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