Linux
Linux調度成本在數量級?
我讀到 Linux 有一個 O(1) 調度程序,但這並沒有告訴我上下文切換大致需要多長時間。有人有一些目前的數字嗎?
我知道這取決於很多因素,例如 CPU 類型、頻率、DRAM 連接、記憶體等等,但我很高興知道毫秒、微秒、納秒的數量級或處理器週期所需的粗略數量搶占一個程序,決定下一個程序執行並實際執行。
Linux 上的預設調度程序在過去十年中一直不是O(1)調度程序,而是完全公平調度程序,即執行隊列中的任務數量為*O(log n) 。*您必須在特定係統和工作負載上對您感興趣的特定場景進行基準測試;可以在 Internet 上找到基準測試,每個上下文切換的數據通常約為 0.5-2 µs ,即使切換到之前未在 CPU 上安排的任務也是如此。
正如您所提到的,成本會因情況而異,包括各種記憶體中的程式碼和數據。如今,成本還取決於核心版本和配置,特別是取決於哪些安全對策處於活動狀態以及 CPU 對它們的支持程度。最近的一篇論文給出了後者的相對數據,與 4.0 基線相比,變化範圍從 –14% 到 +98%。