亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Linux系統性能評測基準系統配置及其原理是什么

發布時間:2021-11-01 16:50:00 來源:億速云 閱讀:388 作者:柒染 欄目:系統運維

今天就跟大家聊聊有關Linux系統性能評測基準系統配置及其原理是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

概要

開發人員在高性能系統的性能調優過程中,經常會碰到各種背景的噪聲干擾, 從而使得收集的數據不夠精確。本文主要從CPU  以及Linux操作系統的角度來分析各種噪聲的來源以及消除方法。最終的目標是搭建基準平臺,在特定的cpu上實現”0”干擾。

Cpu 運行中存在的幾種背景噪聲干擾來源

1. 調度器:

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

2.中斷:

中斷是系統必須要響應的事件, 具有較高優先級,可以搶占普通的用戶進程。

  • a. 硬件中斷

     主要來自外部事件, CPU需要非常及時的響應。比如最常見的IO,時鐘,Linux  內核支持的硬件中斷數量眾多,需要注意親和性配置。可以取消響應一些比較特殊的中斷。

  • b. 軟中斷 Softirq

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

  • c. Workqueue

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

3. 電源管理 :

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

4. 時間源:

如果要進行性能評測, 就離不開時間戳。所以時間戳的正確采集方法也是至關重要的。

以上這幾種因素往往是互相交織的, 比如進程調度器需要時鐘中斷來驅動, 電源管理子系統需要調度器來驅動  。時間戳的采集和微架構也是息息相關的。下面我們將通過案例逐一分析。

系統配置案例

  • 系統配置信息:

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
  • 基準系統配置目標:

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

  • 啟動參數詳解:

標有紅色的這些啟動參數都是我們下面要來詳細分解的

  • isolcpus = managed_irq cpuslist

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

  • nohzfull = cpulist

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

下圖是成功打開選項的日志

Linux系統性能評測基準系統配置及其原理是什么

下圖是沒有打開編譯選項的報錯信息

Linux系統性能評測基準系統配置及其原理是什么

在內核的Timer System 中修改選項

Linux系統性能評測基準系統配置及其原理是什么

  • Nowatchdog

關閉所有的軟/硬件 死鎖監測

  • hpet=disable, tsc= reliable

這部分主要是針對時間子系統。hpet=disable 主要是避免hpet產生過多的中斷干擾系統。tsc= reliable 標記tsc 為可靠的,  減少運行時,時間源校驗。在我們的驗證過程中, 這個參數對于減少jitter有較大幫助

  • mce=off disable machine check to avoid interrupt

Machine checking 是一種高級的RAS 功能,對于產品環境非常重要, 但是對于評測環節我們先禁止掉它。

軟硬中斷的隔離

  • Disable irqblance service

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

所以我們需要disable irqblance service

  • Take care irq affinity

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

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

  • 修改

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

效果對比截圖

下圖是/proc/interrupts

Linux系統性能評測基準系統配置及其原理是什么

下圖是 /proc/softirqs

Linux系統性能評測基準系統配置及其原理是什么

下圖是htop顯示的信息, 可以觀察到core 7上的可調度實體已經壓縮到了最少

Linux系統性能評測基準系統配置及其原理是什么

MSR

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

  • Per-Core MSR

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

  • Un-Core MSR

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

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

電源管理

Linuxkernel 中的電源管理主要由以下的兩個子系統來完成。在kernel 4.10以后, 電源管理系統是由調度器來觸發。

  • Cpufreq

Cpuf Freq 子系統主要管理在C0狀態下 處理器頻率的調整,主要由兩部分組成

Cpufreq driver

主要是針對各種不同硬件適配的對應的調頻驅動程序

Cpufreq governor

主要是各種不同的調頻策略

X86環境下主要有兩種選擇

acpi_cpufreq driver 以及其對應的7種governor

見參考鏈接:

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

Intel_pstate driver 及其對應的2種governor

(這是系統缺省的配置)

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

Sysfs entries

見參考鏈接:

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

  • CpuIdle

Cpu idle 子系統主要管理在C1-C7狀態下 處理器idle狀態調整, 主要由兩部分組成

Cpu idle driver

主要是針對各種不同硬件適配的對應的idle驅動程序

Cpu idle governor

主要是各種不同的idle 時長策略

X86環境下主要有兩種選擇

acpi_idle driver

缺省是menu governor

Intel_idle driver

缺省是menu governor(這是系統缺省的配置, ladder 需要重新編譯內核)

Sysfs entries(見參考鏈接)

參考鏈接:

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

推薦的配置方法:

  1. 鴻蒙官方戰略合作共建——HarmonyOS技術社區

  2. 在BIOS中,Disable Turbo

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

  4. 設定內核參數 intel_idle.max_cstate=1.

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

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

根據workload特點 調整 UNCORE_RATIO_LIMIT 的min/max ratio

IPI,TLB Shootdown優化

進程隔離會減少shootdown, 但是內核部分做不到隔離地址空間。仍然會導致一定數量的tlb shootdown。 禁用 VT-X 減少  IPI.

MSR不要過采樣!因為per core 的MSR讀寫操作從非本地core調用,LInux 是通過IPI 調度到目標core上執行

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

Reference

  1. Intel SDM

  2. Power.py

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新巴尔虎右旗| 香格里拉县| 宁陵县| 福鼎市| 堆龙德庆县| 安阳市| 名山县| 庆云县| 莱西市| 营口市| 隆尧县| 崇左市| 博爱县| 珲春市| 大连市| 定结县| 常州市| 堆龙德庆县| 泰和县| 肥乡县| 荣成市| 马关县| 城市| 肥西县| 措勤县| 台安县| 巩义市| 洪湖市| 六安市| 湘乡市| 沅陵县| 威远县| 淮滨县| 射阳县| 延津县| 上虞市| 收藏| 隆回县| 如东县| 当雄县| 高要市|