簡體   English   中英

線程測試之間的延遲:Linux 裸機與 VM 上的 QNX

[英]Latency between thread test: Linux bare metal machine vs QNX on a VM

我最近對這兩種設置進行了延遲比較: a) Ubuntu 16.04 在 12 核主機上運行; b) 在筆記本電腦主機上運行 VMware 的來賓 QNX(分配給 QNX VM 的 4 個內核)——我目前沒有更好的 QNX 設置。

測試場景:運行 10 個線程,每個線程每 30ms-ish 向隨機選擇的接收線程發送一條消息 - 消息率確實非常低; 消息機制是使用條件變量實現的,每個線程都有自己專用的 rx prod-consumer 隊列和自己的條件變量和互斥體 - 因此隊列之間沒有干擾。 我測量消息被構造/發送和接收線程獲取消息之間的時間。 均值和 std_dev min max 都為每個線程捕獲。

結果令人驚訝地有利於 QNX(盡管它在 VM 上運行)。 10us 對 40us。

對於Linux(秒):平均值= 0.000038076 std_dev = 2.7523E-05-05 min = 0.000000254 max = 0.00017410 samplys = 1023 = 1023 = 1023 = 1023 = 1023 = 1023 = Qnx(secont Qnx),

我注意到 QNX 端的時鍾不如 Linux 端那么精確(分辨率方面),因為我確實看到可測量的最小延遲為 0。

我只是想知道它是否符合其他人的經驗 - Linux線程條件喚醒平均需要40us嗎? 順便說一句,如果 QNX 時間精度為 100us 且 Linux 為納秒,那么這個差異會影響統計數據嗎? 謝謝。

結果表明,延遲測試對硬件的敏感度(以不同的方式)比我之前想象的要高。 較新的 12 核 CPU 主機啟用了超線程,並產生 40us 延遲數。 我搬到了一台舊的 4 CPU 並禁用了超線程的機器上,延遲數下降到 15-16us。 這與 QNX VM 編號在同一范圍內。 我希望我可以使平台在測試中更加一致,以便在將來獲得更確鑿的答案。

新 Linux 結果:平均值=0.000015819 std_dev=1.39205e-05 min=0.000000503 max=0.000117652 sampleSize=1528

暫無
暫無

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

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