Performance
其他過程如何影響使用“時間”進行的測量?
如果我使用該
time
命令對程序進行計時,我會得到“真實”、“使用者”和“系統”的輸出。我從這個討論中的理解是,“真實”是牆上時間,而“使用者”和“系統”是程序時間。
這是否意味著“使用者”和“系統”將不受其他程序的影響?換句話說,如果電腦處於其他程序的重負載或輕負載下,則掛鐘(“真實”)可能需要更多時間來完成我的程序。但我的過程可能只需要 5 秒的執行時間,即使它分散在 20 秒的實際時間中。
無論系統在做什麼,我是否保證我會被告知“5 秒使用者時間”?
不,程序/上下文切換不是免費的。
執行的其他程序多少會減慢您的速度是非常依賴於系統的,但它包括以下內容:
- 每次處理器切換到不同的地址空間(包括程序)時,都必須刷新 MMU 記憶體。並且可能是處理器 L1 記憶體。也許是 L2 和 L3 記憶體。這將在您的程序恢復後立即減慢記憶體訪問(這將計入您的“使用者”時間)。
- 在 SMP(或多核)機器上,如果兩個程序試圖訪問(物理)RAM 的相同部分,處理器必須合作。這需要時間。它通常在架構級別完成,甚至低於作業系統。這將計入您的使用者或系統時間,具體取決於它何時命中。
- 快速核心鎖定(實際上並沒有安排另一個程序)將計入您的系統時間。這與上面的觀點相似。
- 在 NUMA 框上,您可能會被移動到不同的節點。記憶體訪問現在可能是跨域的,因此速度較慢
- 其他程序可能會影響電源管理決策。例如,固定更多核心將降低英特爾 Turbo Boost 速度,以使處理器封裝保持在其電氣和散熱規格內。即使沒有渦輪增壓,處理器也可能因過熱而變慢。它也可以以另一種方式工作——更多的負載可能會導致 CPU 調速器提高 CPU 速度。
系統上還有其他共享資源;如果等待它們實際上並不涉及您的程序睡眠,那麼它將計入您的使用者或系統時間。