基準
基準是衡量 pandas 效能的測試。與 pandas 相關的基準有兩種不同類型
- 用於衡量速度和記憶體使用量隨時間推移的內部 pandas 基準
- 用於比較不同工具執行相同工作時的速度或記憶體使用量的社群基準
pandas 基準
pandas 基準實作於我們儲存庫的 asv_bench 目錄中。這些基準實作於 airspeed velocity (簡稱 asv) 架構。
任何 pandas 開發人員都可以本地執行基準。這可以使用 asv run
指令來完成,而且在變更前和變更後執行基準,有助於偵測本機變更是否會影響效能。有關執行效能測試套件的更多資訊,請參閱 此處。
請注意,基準測試並非確定性的,在不同的硬體上執行或在同一個硬體上執行,但壓力層級不同,會對結果產生很大的影響。即使在相同的硬體和幾乎相同的條件下執行基準測試,在執行完全相同的程式碼時,也會產生顯著的差異。
pandas 基準測試伺服器
我們目前有兩台實體伺服器,為 main
分支的每個 (或幾乎每個) 提交執行 pandas 基準測試。這些伺服器彼此獨立執行。原始伺服器已經執行很長一段時間,而且實體上位於 pandas 維護人員之一處。較新的伺服器位於由 OVHCloud 友情贊助的資料中心。有關 pandas 贊助商的更多資訊,以及你的公司如何支援 pandas 開發的資訊,請參閱 pandas 贊助商 頁面。
基準測試結果可在下列位置取得
- 原始伺服器:asv
- OVH 伺服器:asv(基準測試結果也可以在此 Conbench PoC 中視覺化
原始伺服器組態
機器可以使用 tomaugspurger/asv-runner 中的 Ansible 範例腳本進行組態。結果會發佈到另一個 GitHub 儲存庫 tomaugspurger/asv-collection。
基準測試由 Airflow 排程。它有一個儀表板,可用於檢視和除錯結果。你將需要設定一個 SSH 隧道才能檢視它們
ssh -L 8080:localhost:8080 pandas@panda.likescandy.com
OVH 伺服器組態
用於執行基準測試的伺服器已經過組態,以減少系統雜訊並最大化基準測試時間的穩定性。
有關伺服器組態方式的詳細資訊,請參閱 pandas-benchmarks 儲存庫。這裡有一個快速摘要
- CPU 隔離:避免使用者空間任務在與基準測試相同的 CPU 中執行,這可能會在執行期間中斷基準測試(包括使用實體核心的所有虛擬 CPU)
- NoHZ:停止在隔離的 CPU 中啟用內容切換的 kernel 滴答聲
- IRQ 相容性:禁止基準測試 CPU,以避免在孤立的 CPU 中出現許多(但並非全部)核心中斷
- TurboBoost:根據高 CPU 需求停用 CPU 縮放
- P 狀態:使用「效能」管理程式停用 P 狀態和基於它們的 CPU 頻率變更
- C 狀態:將 C 狀態設定為 0,並停用變更,以避免系統不活動後 CPU 速度變慢
社群基準測試
比較包含 pandas 的資料框工具的主要基準測試為