簡體   English   中英

Linux 2.6.18上IPC延遲測試的非常有趣的結果

[英]very interesting result from latency test of IPC on Linux 2.6.18

我正在linux 2.6.18下對unix socket進行性能(延遲)測試,
進程A每10毫秒寫入1024個字節到進程B,結果顯示平均延遲為20 us,標准偏差小(2~3 us)。

當我與進程A和B同時運行一些額外的CPU綁定進程時,測試變得有趣,這些新進程非常緩存,例如簡單數學計算的繁忙循環,但結果讓我感到驚訝,IPC延遲突然下降,平均成為15美元。

據我所知,為了提高交互性,O(1)調度程序(2.6.23之前的2.6)通過某種啟發式方法獎勵IO綁定進程,但這無法解釋為什么速度甚至比第一種情況更快。

我還考慮過,如果Linux在進程A得到獎勵時做了一些特殊的繁忙循環,但似乎沒有進一步測試。

這真讓我困惑。


我的配置:CPU:Intel(R)Xeon(R)CPU E5-2609 0 @ 2.40GHz,10M L3緩存MEM:32G OS:Linux 2.6.18-308.el5 SMP x86_64

我懷疑硬件的某些省電功能在這里起作用。 10ms的睡眠時間足以讓現代硬件進入低功耗狀態。 當您在微秒級別上查看事物時,從節能狀態出來會有一個真實的,可測量的延遲。

我的猜測是並行運行“忙”程序可以防止硬件進入低功耗狀態。 標准的嘗試:

  • 在BIOS級別,禁用任何和所有節能功能,包括C狀態
  • 在操作系統級別,禁用cpuspeed(或發行版使用的任何頻率擴展程序)
  • 嘗試使用“idle = poll”內核參數啟動

最后一個建議對於Sandy Bridge CPU(這就是你所擁有的)尤為重要,至少對於RHEL / CentOS 5.x(我猜你正在運行)。 我發現Linux內核仍會覆蓋某些BIOS設置。 其他可以幫助您的Linux內核參數:

  • intel_idle.max_state = 0
  • processor.max_cstate = 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM