溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux系統(tǒng)性能評測基準(zhǔn)系統(tǒng)配置及其原理是什么

發(fā)布時(shí)間:2021-11-01 16:50:00 來源:億速云 閱讀:386 作者:柒染 欄目:系統(tǒng)運(yùn)維

今天就跟大家聊聊有關(guān)Linux系統(tǒng)性能評測基準(zhǔn)系統(tǒng)配置及其原理是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

概要

開發(fā)人員在高性能系統(tǒng)的性能調(diào)優(yōu)過程中,經(jīng)常會碰到各種背景的噪聲干擾, 從而使得收集的數(shù)據(jù)不夠精確。本文主要從CPU  以及Linux操作系統(tǒng)的角度來分析各種噪聲的來源以及消除方法。最終的目標(biāo)是搭建基準(zhǔn)平臺,在特定的cpu上實(shí)現(xiàn)”0”干擾。

Cpu 運(yùn)行中存在的幾種背景噪聲干擾來源

1. 調(diào)度器:

進(jìn)程調(diào)度器對于系統(tǒng)的影響幾乎無處不在, Linux  內(nèi)核一般來說是使用公平的分時(shí)調(diào)度策略(CFS)。需要特定的參數(shù)來調(diào)整調(diào)度器的行為,從而盡量減少對于測量進(jìn)程的干擾。

2.中斷:

中斷是系統(tǒng)必須要響應(yīng)的事件, 具有較高優(yōu)先級,可以搶占普通的用戶進(jìn)程。

  • a. 硬件中斷

     主要來自外部事件, CPU需要非常及時(shí)的響應(yīng)。比如最常見的IO,時(shí)鐘,Linux  內(nèi)核支持的硬件中斷數(shù)量眾多,需要注意親和性配置??梢匀∠憫?yīng)一些比較特殊的中斷。

  • b. 軟中斷 Softirq

      軟中斷是硬件中斷處理的衍生子系統(tǒng)。LInux 硬件中斷響應(yīng)只需要處理一些必須立即響應(yīng)的操作, 而將一些可以延后處理的操作移交給軟中斷。Linux  中的有10類軟中斷, 后續(xù)我們將會分析。

  • c. Workqueue

      Workqueue 也是LInux中常見的一類延遲操作的任務(wù)類型

3. 電源管理 :

現(xiàn)代處理器通常為了更高效的利用能源,都會支持一些高級電源管理的功能。這些電源管理的功能如果使用不當(dāng)也會對于性能評測造成影響。

4. 時(shí)間源:

如果要進(jìn)行性能評測, 就離不開時(shí)間戳。所以時(shí)間戳的正確采集方法也是至關(guān)重要的。

以上這幾種因素往往是互相交織的, 比如進(jìn)程調(diào)度器需要時(shí)鐘中斷來驅(qū)動, 電源管理子系統(tǒng)需要調(diào)度器來驅(qū)動  。時(shí)間戳的采集和微架構(gòu)也是息息相關(guān)的。下面我們將通過案例逐一分析。

系統(tǒng)配置案例

  • 系統(tǒng)配置信息:

CPU: Intel 9900KF   P1 Frequency 3.6Ghz   1-core Turbo  5.0Ghz   HT-disabled RAM: 16GB DDR4-3200 Ubuntu 19.04:  Kernel  5.0.0-38-generic  X86_64 Boot Parameter: BOOT_IMAGE=/boot/vmlinuz-5.0.0-38-generic root=UUID=697aea9f-2de2-4b9c-921d-5bd5f963c91f ro ipv6.disable=1 isolcpus=7 nohz_full=7 mce=off tsc=reliable no_watchdog  irqaffinity=0 hpet=disable quiet splash vt.handoff=1
  • 基準(zhǔn)系統(tǒng)配置目標(biāo):

在baremetal 機(jī)器上(vt-x 環(huán)境下配置會更加復(fù)雜難以精確控制), 將 Core 7 隔離在調(diào)度器之外, 最大程度的減少各種因素對于Core  7的干擾。

  • 啟動參數(shù)詳解:

標(biāo)有紅色的這些啟動參數(shù)都是我們下面要來詳細(xì)分解的

  • isolcpus = managed_irq cpuslist

Isolcpus 主要是將目標(biāo)cpu  從調(diào)度器的調(diào)度算法中隔離出來。也就是說從用戶進(jìn)程的角度來說,調(diào)度器不會主動調(diào)度任何進(jìn)程到目標(biāo)cpu上來。但是僅僅靠這個(gè)參數(shù)仍然不能保證所有軟/硬中斷和一些其他的內(nèi)核組件不會運(yùn)行在目標(biāo)的cpu上。

  • nohzfull = cpulist

這個(gè)參數(shù)還有一個(gè)相對弱化的版本nohz。nohz 的含義是在目標(biāo)cpu的runqueue上沒有任何可調(diào)度實(shí)體時(shí),cpu 進(jìn)入idle狀態(tài), 在此情況下  該cpu停止 時(shí)鐘tick(缺省是10ms一次)。那么nohzfull就更進(jìn)一步,  在runqueue上只有一個(gè)活動的實(shí)體的時(shí)候也會停止時(shí)鐘tick。這樣就會大大減少對正在運(yùn)行的唯一的進(jìn)程的干擾(不是100%消除)。值得注意的是在非服務(wù)器版本的內(nèi)核中  nohzfull一般是沒有打開的,需要重新編譯內(nèi)核。大家可以檢查對應(yīng)的內(nèi)核編譯選項(xiàng)  CONFIGNOHZFULL=y。如果沒有打開則會在啟動日志中顯示警告。同時(shí)nohzfull 也就隱含了rcunocbs= cpulist

下圖是成功打開選項(xiàng)的日志

Linux系統(tǒng)性能評測基準(zhǔn)系統(tǒng)配置及其原理是什么

下圖是沒有打開編譯選項(xiàng)的報(bào)錯(cuò)信息

Linux系統(tǒng)性能評測基準(zhǔn)系統(tǒng)配置及其原理是什么

在內(nèi)核的Timer System 中修改選項(xiàng)

Linux系統(tǒng)性能評測基準(zhǔn)系統(tǒng)配置及其原理是什么

  • Nowatchdog

關(guān)閉所有的軟/硬件 死鎖監(jiān)測

  • hpet=disable, tsc= reliable

這部分主要是針對時(shí)間子系統(tǒng)。hpet=disable 主要是避免hpet產(chǎn)生過多的中斷干擾系統(tǒng)。tsc= reliable 標(biāo)記tsc 為可靠的,  減少運(yùn)行時(shí),時(shí)間源校驗(yàn)。在我們的驗(yàn)證過程中, 這個(gè)參數(shù)對于減少jitter有較大幫助

  • mce=off disable machine check to avoid interrupt

Machine checking 是一種高級的RAS 功能,對于產(chǎn)品環(huán)境非常重要, 但是對于評測環(huán)節(jié)我們先禁止掉它。

軟硬中斷的隔離

  • Disable irqblance service

我們并不希望任何硬件中斷被發(fā)送到core 7上

所以我們需要disable irqblance service

  • Take care irq affinity

硬件中斷的親和性也需要注意。

同樣是避免任何硬件中斷被發(fā)送到core 7

  • 修改

/sys/devices/virtual/workqueue/cpumask to 1

效果對比截圖

下圖是/proc/interrupts

Linux系統(tǒng)性能評測基準(zhǔn)系統(tǒng)配置及其原理是什么

下圖是 /proc/softirqs

Linux系統(tǒng)性能評測基準(zhǔn)系統(tǒng)配置及其原理是什么

下圖是htop顯示的信息, 可以觀察到core 7上的可調(diào)度實(shí)體已經(jīng)壓縮到了最少

Linux系統(tǒng)性能評測基準(zhǔn)系統(tǒng)配置及其原理是什么

MSR

MSR(ModelSpecific Register) 是配置處理器和獲取處理器狀態(tài)信息的關(guān)鍵接口。 MSR 主要分為兩類。

  • Per-Core MSR

       這類的MSR 的讀寫指令都必須本地的core執(zhí)行,所以要盡量避免從其它的core上來讀寫。例如 從core 7 上讀寫Core 3 。這樣LInux  kernel 還需要調(diào)度這個(gè)讀寫操作到目標(biāo)core3 上來 會帶來不必要的延遲。同時(shí) 如果在用戶層(ring3)中試圖讀寫msr 也需要切換到kernel  來完成這個(gè)操作(通過IPI,CAL 中斷)。也會對應(yīng)用有干擾. 對于性能評測來說最典型的就是APERF/MPERF, 以及HWP對應(yīng)的MSR,  以及PMU的配置接口 MSR 都是Per-Core。訪問Per-MSR的延遲 無法完全避免,所以要注意采樣的頻率,防止過度采樣。

  • Un-Core MSR

          這類MSR 并不屬于任何具體的core,是公共資源。最典型的就是UNCORE_RATIO_LIMIT MSR。Un-Core  MSR可以從任一core發(fā)起讀寫。只要避免從正在評測的core發(fā)起讀寫即可

          通常來講, MSR需要通過 加載內(nèi)核模塊 msr(/dev/msr), 之后通過rdmsr/wrmsr 工具來操作。

電源管理

Linuxkernel 中的電源管理主要由以下的兩個(gè)子系統(tǒng)來完成。在kernel 4.10以后, 電源管理系統(tǒng)是由調(diào)度器來觸發(fā)。

  • Cpufreq

Cpuf Freq 子系統(tǒng)主要管理在C0狀態(tài)下 處理器頻率的調(diào)整,主要由兩部分組成

Cpufreq driver

主要是針對各種不同硬件適配的對應(yīng)的調(diào)頻驅(qū)動程序

Cpufreq governor

主要是各種不同的調(diào)頻策略

X86環(huán)境下主要有兩種選擇

acpi_cpufreq driver 以及其對應(yīng)的7種governor

見參考鏈接:

https://www.kernel.org/doc/html/v4.14/admin-guide/pm/cpufreq.html

Intel_pstate driver 及其對應(yīng)的2種governor

(這是系統(tǒng)缺省的配置)

intel_pstate driver 是比較特別的驅(qū)動,相比于其它平臺。intel_pstate driver 主要是利用x86 的HWP  硬件特性來調(diào)整頻率。提供了有限的可定制策略。自動化程度更好,overhead更少。

Sysfs entries

見參考鏈接:

https://www.kernel.org/doc/html/v4.14/admin-guide/pm/cpufreq.html

  • CpuIdle

Cpu idle 子系統(tǒng)主要管理在C1-C7狀態(tài)下 處理器idle狀態(tài)調(diào)整, 主要由兩部分組成

Cpu idle driver

主要是針對各種不同硬件適配的對應(yīng)的idle驅(qū)動程序

Cpu idle governor

主要是各種不同的idle 時(shí)長策略

X86環(huán)境下主要有兩種選擇

acpi_idle driver

缺省是menu governor

Intel_idle driver

缺省是menu governor(這是系統(tǒng)缺省的配置, ladder 需要重新編譯內(nèi)核)

Sysfs entries(見參考鏈接)

參考鏈接:

https://www.kernel.org/doc/html/latest/admin-guide/pm/cpuidle.html

推薦的配置方法:

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. 在BIOS中,Disable Turbo

  3. 應(yīng)用power.py[2] 腳本鎖定目標(biāo)core的頻率(或者在BIOS 中disable Pstate)

  4. 設(shè)定內(nèi)核參數(shù) intel_idle.max_cstate=1.

如果需要徹底禁止idle 推薦 processor.max_cstate=0 ,idle=poll

這里需要注意 intel_idle.max_cstate=0只是disable intel_idle driver 轉(zhuǎn)而使用acpi_idle  driver

根據(jù)workload特點(diǎn) 調(diào)整 UNCORE_RATIO_LIMIT 的min/max ratio

IPI,TLB Shootdown優(yōu)化

進(jìn)程隔離會減少shootdown, 但是內(nèi)核部分做不到隔離地址空間。仍然會導(dǎo)致一定數(shù)量的tlb shootdown。 禁用 VT-X 減少  IPI.

MSR不要過采樣!因?yàn)閜er core 的MSR讀寫操作從非本地core調(diào)用,LInux 是通過IPI 調(diào)度到目標(biāo)core上執(zhí)行

除此之外, 調(diào)度算法/NUMA Aware/L3Cache QoS(RDT)/SMM-BMC/SmartEngine等模塊都會對系統(tǒng)性能測試有著噪音干擾,  敬請期待后續(xù)內(nèi)容~

Reference

  1. Intel SDM

  2. Power.py

  3. https://github.com/intel/CommsPowerManagement

看完上述內(nèi)容,你們對Linux系統(tǒng)性能評測基準(zhǔn)系統(tǒng)配置及其原理是什么有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI