跳至內容

为应对本站因各种原因无法访问,建议用户安装 arch-wiki-docs-zh-cnCNRepo 或者 arch-wiki-docs-zh-twCNRepo 离线文档包备用,也可尝试使用经由Cloudflare CDN的替代版本aw.lilydjwg.me

基準測試

出自 Arch Linux 中文维基

所謂基準測試,就是通過一個統一的流程來測試性能,並將其結果和其它系統測到的結果或一個被廣泛接受的標準相比較的行為。這種計算系統性能的統一流程可以幫助解答一些問題,比如:

  • 系統是否發揮正常?
  • 用哪個版本的驅動可以達到最佳性能?
  • 系統能否勝任某任務?

許多工具可以測試系統性能,下面列出可用的工具。

獨立工具

[編輯 | 編輯原始碼]

UnixBench

[編輯 | 編輯原始碼]

安裝 unixbenchAUR,在終端中運行 ubench 開始基準測試。

另請閱讀:

interbench

[編輯 | 編輯原始碼]

interbench 旨在測試 Linux 的交互性能,設計用於測試修改 Linux 內核設計或系統配置(包括 CPU、I/O 調度器、文件系統及其參數的變更等)後的效果。

提示:可通過更細緻的測試來比較不同硬件。

可通過 AUR 獲取 interbench:interbenchAUR

另請閱讀:

fio(Flexible I/O Tester)是一個實用工具,可以幫助模擬多種不同的工作負載(比如多個線程使用異步 I/O 發起讀請求)。fio 會生成一些線程或進程執行用户指定的 I/O 類型。英文文檔

示例用法:

# fio --filename=/mnt/test.fio --size=8GB --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1

ttcp(Test TCP)測試任意網絡連接的 P2P 帶寬。所測試路徑兩端的設備都需要安裝該程序。

可以在 AUR 找到不同版本的 ttcp:

iperf 是一款易用的 P2P 帶寬測試工具,支持 TCP 和 UDP。它的輸出格式非常好,且帶有並行測試模式。

可以安裝 iperf,或另一版本 iperf3

time(1) 命令通過顯示某條命令從調用到終止之間的時間,提供命令運行的耗時統計信息。time 包含了 time 命令,某些命令行解釋器也提供了 time 作為內置命令。

$ time tar -zxvf archive.tar.gz

hdparmhdparm)可用於存儲介質的基準測試。-Tt 選項用於測量順序讀取的速度,此方法不受分區對齊影響!

# hdparm -Tt /dev/sdX
/dev/sdX:
Timing cached reads:   x MB in  y seconds = z MB/sec
Timing buffered disk reads:  x MB in  y seconds = z MB/sec
注意:根據 hdparm(8) § T 參數的描述,一次測試需要執行上述命令 2-3 次,並手動計算平均值以準確評估讀取速度。

gnome-disks

[編輯 | 編輯原始碼]

圖形化基準測試工具 gnome-disks 可通過 gnome-disk-utility 安裝,可以美觀地展示最小/最大/平均讀取速度以及平均訪問時間。此方法不受分區對齊影響!

# gnome-disks

然後通過圖形界面開始基準測試(其他分區選項▶⃞) > 測試分區性能(B)…驅動器選項) > 測試磁盤性能(B)…)。

KDiskMark

[編輯 | 編輯原始碼]

kdiskmark 是一款具有非常友好的圖形用户界面的 HDD 和 SSD 基準測試工具。KDiskMark 憑藉其預設和強大的圖形界面,調用 fio 並處理輸出,提供易於查看和解讀的全面基準測試結果。

systemd-analyze

[編輯 | 編輯原始碼]
$ systemd-analyze plot > boot.svg

上述命令會把啟動順序畫成一個詳細的圖,包括:內核用的時間、用户態時間、每個服務佔用的時間。樣例

dd 實用程序可用於測量讀取和寫入速度。此方法受分區對齊影響!換句話説,由於是在通過文件系統在已掛載分區上進行讀取和寫入,沒有正確對齊分區導致的性能下降會在此處顯現出來。

注意:此方法只能用於測試目標設備上已掛載的分區!

首先,進入一個至少有 1.1 GB 可用空間的 SSD 上的目錄(需要有讀、寫、執行權限),然後寫入一個測試文件,用於測量寫入速度,也用於之後從該設備讀取:

$ dd if=/dev/zero of=/SSD/上/的/目錄/tempfile bs=1M count=1024 conv=fdatasync,notrunc status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s
提示:關於 sync 是否必要以及 dd 的更多相關選項的説明,請參閱 dd-benchmark

接下來,清除緩衝區緩存,以便直接從設備準確測量讀取速度:

# echo 3 > /proc/sys/vm/drop_caches
$ dd if=tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s

現在該文件已經重新存到了緩衝區,重複該命令就可以測試緩存速度:

$ dd if=tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
v bytes (w MB, x MiB) copied, y s, z MB/s
注意:為準確評估緩衝區讀取速度,應將上述命令運行 4-5 次,然後手動計算平均值。

最後,刪除該臨時文件

$ rm tempfile
注意:某些 SSD 控制器具有壓縮硬件,可能會使基準測試結果失真。請參閱 https://www.pugetsystems.com/labs/articles/SSDs-Advertised-vs-Actual-Performance-179/

dcfldd 不會像經典的 dd 那樣以 MB/s 為單位打印平均速度,但藉助 time 可以解決這一問題。

測試清除磁盤所需時間:

# time dcfldd if=/dev/zero of=/dev/sdX bs=4M
18944 blocks (75776Mb) written.dcfldd:: No space left of device
real     16m17.033s
user     0m0.377s
sys      0m51.160s

通過將 dcfldd 命令輸出的數據量(單位:MiB,注意 dcfldd 將 B 輸出為 b)除以時間(單位:秒)來計算速度。在此示例中:75776 MiB / (16.4 * 60 s) = 77.0 MiB/s。

7z 基準測試命令可用於測量 CPU 執行指令的速度(MIPS),也可用於檢查內存缺陷。只需安裝 7-Zip 並運行以下命令。更多詳細信息可參閱 [1]

$ 7z b

peakperf-gitAUR 是一個微基準測試工具,可讓 x86_64 CPU 達到峯值性能。某些問題,例如 CPU 散熱不佳,可能會降低 CPU 應有的性能。peakperf 可用於檢查 CPU 是否發揮了其全部能力。

CPU 理論上應達到的性能可以自行計算(以 GFLOP/s 衡量,參見 [2]),然後將其與 peakperf 給出的實測性能進行比較。如果兩個值相同或非常接近,則説明 CPU 運行正常。

注意:儘管 peakperf 的目標是測試 CPU,但它也是測試散熱的絕佳方式,因為它會使 CPU 達到極限而觸發降頻。

cryptsetup

[編輯 | 編輯原始碼]

cryptsetup 基準測試可用於測量進行各種加密算法的速度。

$ cryptsetup benchmark

libkcapiAUR 允許用户空間訪問 Linux 內核加密 API。該軟件包提供了多個可執行文件,其中 kcapi-speed 可用於對哈希、對稱加密算法、AEAD 加密算法、基於哈希或加密算法的隨機數生成器進行基準測試。

列出可用的加密算法:

$ kcapi-speed -l  

使用 AES-NI 進行 AES 基準測試的示例(ECB 模式,128 位密鑰,測試 3 秒,處理 1024 個塊):

$ kcapi-speed -c 'AES(AESNI) ECB(ASM) 128' -b 1024 -t 3

輸出分別為解密和加密的測試結果:

AES(AESNI) ECB(ASM) 128 |d|   16384 bytes|                5.41 GB/s|330631 ops/s
AES(AESNI) ECB(ASM) 128 |e|   16384 bytes|                5.47 GB/s|334185 ops/s

軟件套件

[編輯 | 編輯原始碼]

bonnie++Bonnie 基準測試套件的 C++ 重寫版本,主要測試硬盤和文件系統性能。

另請閱讀:

IOzone 可用於對供應商的計算機平台進行全面的文件系統分析。

該程序可通過 AUR 獲取:iozoneAUR

以下命令可以近似模擬 CrystalDiskMark(一款流行的 Windows 基準測試工具)的若干測試結果:

  • 順序 1 MiB 讀寫:iozone -e -I -s 1g -r 1m -i 0 -i 1
  • 順序 128 KiB 讀寫:iozone -e -I -s 1g -r 128k -i 0 -i 1
  • 隨機 4 KiB 讀寫:iozone -e -I -s 1g -r 4k -i 0 -i 2 -i 1

結果以 KiB/s 為單位,因此除以 1024 即可轉換為 MiB/s。

另請參閱論壇帖子:iozone to evaluate I/O schedulers... results NOT what you would expect!

hardinfo2 可以收集系統硬件和作業系統信息,進行基準測試,生成 HTML 或純文本格式的可打印報表。HardInfo 會測試 CPU 和 FPU,並有簡潔的 GTK 界面。

Phoronix 測試套件

[編輯 | 編輯原始碼]

Phoronix 測試套件是目前最全面的測試和基準測試平台,它提供了一個可擴展的框架,可輕鬆添加新的測試。該軟件旨在以簡潔、可重現且易用的方式有效進行定性和定量的基準測試。

Phoronix 測試套件基於 Phoronix.com 自 2004 年以來進行的大量測試和內部工具,並得到了主流計算機硬件和軟件供應商的支持。該軟件是開源軟件,採用 GNU GPLv3 許可。

Phoronix 測試套件最初是為 Linux 自動測試而開發的,後來增加了對 OpenSolaris、Apple macOS、Microsoft Windows 和 BSD 系統的支持。Phoronix 測試套件包括一個輕量級處理核心(pts-core),每個測試都由基於 XML 的配置文件和相關資源腳本組成。從安裝基準測試到實際進行基準測試,再到重要硬件和軟件組件的解析,整個過程高度自動化且完全可重複,用户只需要確認操作。

Phoronix 測試套件與 OpenBenchmarking.org 對接,後者是一個協作式網絡平台,有集中存儲測試結果、共享測試配置文件和結果、高級分析等功能。Phoromatic 是一個企業組件,具有遠程管理功能,可協調多個系統的測試執行。

可通過 phoronix-test-suiteAUR 安裝該套件。另外也可以通過 phoronix-test-suite-gitAUR 獲取開發版本的套件。

I/O 基準測試套件 S,是一個小型的用於測量存儲 I/O 性能的腳本集。

下載或克隆該項目,安裝其依賴,並以 root 身份運行(需要更改磁盤調度器的權限)。

s-tui 是一款美觀實用的 curses 風格 TUI 程序,能以圖表展示 CPU 頻率、利用率、温度、功耗,內置有壓力測試工具。

sysbench 是一款全面的多線程基準測試工具。它使用 C 和 Perl 編寫,可直接在命令行中測試文件系統、內存、CPU、線程調度器以及 POSIX 互斥鎖的性能,也可作為 Lua 腳本解釋器對任意複雜的工作負載進行基準測試。它還提供了一系列用於數據庫基準測試的腳本。

Geekbench

[編輯 | 編輯原始碼]

geekbenchAUR 是一個閉源的跨平台基準測試套件,通過模擬各種真實工作負載來測量 CPU、GPU 和內存性能,跑分可以上傳到 Geekbench 網站上,(同一版本的跑分)可用於與其他系統進行比較,無論是你自己的還是別人的。

Geekbench 不適合作為獨立的客觀性能測試工具,因為它給出的分數與任何單個具體任務無關,也無法反映一台電腦在某一項或多項任務中的實際表現;不過,它可以粗略地反映一台計算機相對於其他計算機的性能水平,或者同一台計算機在不同作業系統/發行版或不同條件下的表現。正因如此,它常被用於 CPU 基準測試對比圖表中。

閃存介質

[編輯 | 編輯原始碼]

可通過 iozoneAUR 來量化性能。持續讀寫的測試數據可能與 I/O 繁重操作的實際用例相關,但經常不是這樣,例如在系統更新時解壓並寫入大量文件。在這種情況下可以考慮使用小文件的隨機寫入速度。

該示例使用 4 KiB 記錄大小測試讀寫一個 10 MiB 文件:

$ iozone -e -I -a -s 10M -r 4k -i 0 -i 1 -i 2
...

                                                                random   random
              kB  reclen    write  rewrite    read    reread    read     write
           10240       4      661      649     5802     5822     3892      624
注意:輸出中數值的單位是 KiB/s。

Basemark GPU

[編輯 | 編輯原始碼]

Basemark GPU 是一個跨移動和桌面平台的閉源評估工具,用於分析和評估圖形 API(OpenGL 4.5、OpenGL ES 3.1、Vulkan、Microsoft DirectX 12)性能。Basemark GPU 通過提供高質量和中等質量模式,同時面向桌面和移動平台。高質量模式針對尖端的桌面工作負載,而中等質量模式則針對等效的移動工作負載。

如果使用 AMD GPU 並同時安裝了多個 Vulkan 實現,在「Tests」頁面的「Graphics Device」列表中這些不同的 Vulkan 實現會顯示為獨立的 GPU。

Basemark GPU 可通過 basemarkAUR 獲取。

Blender-benchmark

[編輯 | 編輯原始碼]

Blender-benchmark 會收集系統信息,如作業系統、內存、顯卡、CPU 型號,然後進行系統性能基準測試並記錄數據。之後,用户可以在 Blender Open Data 平台上在線分享結果,或將數據保存在本地。

Blender-benchmark 可通過 blender-benchmarkAUR 獲取。

furmarkAUR 會顯示一幅能造成極高圖形負載的圖像並顯示其幀率。雖然可以用作 GPU 性能的基準測試工具,但它的主要用途是充當壓力測試,旨在將 GPU 使用率推向極致——這使其既適合評估滿負載下的系統穩定性,也適合評估顯卡的散熱性能。

警吿:作為一款壓力測試工具,Furmark 本身可能引發系統穩定性問題。儘管大多數現代 GPU 在接近硬件温度極限時會自動降頻,但在極少數情況下——尤其是顯卡散熱不足或存在故障時——可能導致硬件損壞。

GFXBench 是一款高端圖形基準測試工具,可跨所有平台地測試硬件在下一代圖形技術上的表現。作為名副其實的跨 API 基準測試,GFXBench 支持所有行業標準和廠商特定的 API,包括 OpenGL、OpenGL ES、Vulkan、Metal、DirectX/Direct3D、DX12。

Vulkan API 測試目前正在開發中,僅對其企業合作夥伴開放。

GFXBench 可通過 gfxbenchAUR 獲取。

glmark2 是一款 OpenGL 2.0 和 OpenGL ES 2.0 基準測試工具。

glmark2 可通過 glmark2 獲取。

glxgears 是一款流行的 OpenGL 測試工具,可以渲染非常簡單的 OpenGL 測試並輸出幀數。雖然 glxgears 可以測試圖形驅動程序能否進行直接渲染,但它已經過時,不能代表 GNU/Linux 圖形顯示的現狀和 OpenGL 的整體能力。glxgears 僅測試了遊戲中會用到的 OpenGL 功能中的一小部分,因此使用 glxgears 測試出的性能提升可能無法在遊戲中得到體現。更多信息請參見這裏

glxgears 可通過 mesa-utilslib32-mesa-utilsmultilib 倉庫)獲取。

GpuTest 是一款跨平台(Windows、Linux 和 Mac OS X)的 GPU 壓力測試和 OpenGL 基準測試工具。GpuTest 帶有多項 GPU 測試項目,包括一些來自 Windows 世界的熱門項目(如 FurMark 或 TessMark)。

GpuTest 可通過 gputestAUR 獲取。

intel-gpu-tools

[編輯 | 編輯原始碼]

intel-gpu-tools 能用與 top 命令相似的格式顯示集成顯卡的實時信息,在診斷 GPU 加速問題時非常有用。

intel-gpu-tools 可通過 intel-gpu-tools 獲取。

參見 MangoHud

Unigine 引擎

[編輯 | 編輯原始碼]

Unigine 公司基於他們的圖形引擎製造了多個現代化 OpenGL 基準測試,特性如下:

  • 像素動態光照
  • 普通和視差映射
  • 64 位 HDR 渲染
  • 體積霧和光
  • 強大的粒子系統:火焰、煙、爆炸
  • 可擴展着色(GLSL/HLSL)
  • 後處理:景深、折射、輝光、模糊、色彩校正等。

最近,Unigine 基準測試開始被超頻用户使用。尤其是 heaven 被用於超頻的初始穩定性測試。

可以在 AUR 找到這些基準測試:

vkmark 是一款可擴展的 Vulkan 基準測試套件,提供針對性的、可配置的場景。

vkmark 可通過 vkmark 獲取。

xmrig 是一款高性能、開源、跨平台的 RandomX、KawPow、CryptoNight 和 GhostRider 統一 CPU/GPU 挖礦程序,是 RandomX 基準測試工具。

Radeon GPU

[編輯 | 編輯原始碼]

如果使用 Radeon GPU 且使用開源 xf86-video-amdgpu 驅動程序,需要安裝 opencl-mesarocm-opencl-runtime。對 GPU 進行壓力測試:

$ xmrig --stress --no-cpu --opencl