成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

[[317478]]

概要

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

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

1. 調度器:

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

2.中斷:

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

  • a. 硬件中斷

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

  • b. 軟中斷 Softirq

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

  • c. Workqueue

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

3. 電源管理 :

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

4. 時間源:

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

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

系統配置案例

  • 系統配置信息:
  1. CPU: Intel 9900KF   P1 Frequency 3.6Ghz   1-core Turbo  5.0Ghz   HT-disabled 
  2. RAM: 16GB DDR4-3200 
  3. Ubuntu 19.04:  Kernel  5.0.0-38-generic  X86_64 
  4. Boot Parameter: 
  5. BOOT_IMAGE=/boot/vmlinuz-5.0.0-38-generic 
  6. root=UUID=697aea9f-2de2-4b9c-921d-5bd5f963c91f ro ipv6.disable=1 
  7. isolcpus=7 nohz_full=7 mce=off tsc=reliable no_watchdog  irqaffinity=0 
  8. hpet=disable 
  9. 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

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

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

在內核的Timer System 中修改選項

  • 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

下圖是 /proc/softirqs

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

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. 在BIOS中,Disable Turbo
  2. 應用power.py[2] 腳本鎖定目標core的頻率(或者在BIOS 中disable Pstate)
  3. 設定內核參數 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

https://www.kernel.org/doc/Documentation/kernel-per-CPU-kthreads.txt

 

責任編輯:武曉燕 來源: Linux閱碼場
相關推薦

2011-01-10 17:57:28

linux配置

2010-03-02 15:47:39

Linux內核系統

2011-10-26 20:37:27

XManager ss

2010-03-26 16:45:12

CentOS系統

2020-02-24 09:45:02

Bash截Linux系統配置

2010-03-02 16:51:59

Linux操作系統

2019-10-31 16:38:57

WindowsWindows 7軟件

2009-12-22 10:15:36

Linux Apach

2010-01-06 14:56:07

Linux操作系統

2009-09-29 10:39:04

Linuxlinux系統性能檢測

2010-04-22 15:44:10

Aix操作系統

2012-08-08 10:10:30

CentOS 6操作系統

2010-04-15 13:42:18

Unix操作系統

2011-01-20 17:09:11

2010-01-06 15:18:19

Linux操作系統

2010-02-02 17:46:43

Fedora vsft

2009-12-09 14:45:42

2011-09-15 15:16:37

Ubuntu軟件

2009-12-17 13:20:46

路由器配置

2010-01-13 15:17:18

VirtualBox安
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区电影 | 午夜天堂精品久久久久 | 日本中文字幕日韩精品免费 | 亚洲国产成人精品女人久久久 | 国产精品视频中文字幕 | 日韩快播电影 | 亚洲成av人片在线观看 | 国产一区二区三区网站 | 久久久久久久电影 | 国产一区精品 | 日韩欧美国产成人一区二区 | 精品自拍视频在线观看 | 国产一区二 | 国产亚洲欧美在线 | 国产精品毛片av | 国产精品国产三级国产aⅴ中文 | 久久精品屋 | 成人av网站在线观看 | 精品入口麻豆88视频 | 天色综合网 | 日韩精品在线看 | 精品亚洲一区二区三区四区五区高 | 黄色大片视频 | 亚洲福利在线观看 | 玖玖玖av| 国产一区二区精华 | 中文字幕日韩在线观看 | 黄色免费网站在线看 | 亚洲精品v| 国产999精品久久久久久 | 免费看av大片 | 欧美性大战久久久久久久蜜臀 | 亚洲视频免费在线观看 | 久久久一区二区三区 | 天天插天天狠天天透 | 日日日视频 | 欧美日韩精品免费观看 | 狠狠热视频 | 久久久久国产一区二区三区四区 | 欧美成人免费在线视频 | 视频二区在线观看 |