![低延遲 IO 調度器](https://rvso.com/image/658742/%E4%BD%8E%E5%BB%B6%E9%81%B2%20IO%20%E8%AA%BF%E5%BA%A6%E5%99%A8.png)
我有一些虛擬機器運行基於 Ubuntu 雲端的映像 14.04-1 LTS 版本。我想查看虛擬機器上不同 IO 調度程式的 IO 效能,因此我在/sys/block/<drive>/queue/scheduler
來賓作業系統上更改 IO 調度程式。通常應有 、cfq
、deadline
或noop
來選擇。但我看到的是none
。這是否意味著Canonical已經刪除了基於雲端的鏡像中的I/O調度器或none
這裡的調度器是重命名的noop
調度器?如果系統中沒有 I/O 調度程式會發生什麼?所有的io請求都是按照先進先出的順序直接傳送給主機嗎?
感謝您提供一些線索!
答案1
低延遲 IO 調度器
(對於使用 NVMe 協定而不是 SATA 的 SSD,則不需要執行此步驟,因為它會繞過傳統的 I/O 調度程式並使用該
blk-mq
模組。)預設 I/O 調度程序對資料進行排隊,以最大程度地減少 HDD 上的查找,這對於 SSD 來說不是必需的。因此,使用
"deadline"
僅確保批量事務不會減慢小事務的調度程序:安裝sysfsutils
並echo "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf
(調整 sdX 以符合您的 SSD)重新啟動或
echo deadline > /sys/block/sdX/queue/scheduler
所以,答案是:none
不是 的別名noop
。none
表示“未使用調度程序”。
答案2
似乎在內核 >= 3.13 上none
不再是 的別名noop
。當blk-mq
輸入/輸出框架正在使用中;這意味著完全繞過舊的調度程序,因為blk-mq
(現在)根本沒有調度程序可供選擇。
在早期的核心中,none
really 是一個記錄很少的別名noop
。看這裡更多細節。
答案3
None 不是 noop 的別名。
由於沒有使用調度程序,因此未顯示任何內容。使用 NVMe 協定而不是 SATA 的 SSD 繞過了傳統的 I/O 調度程序。
答案4
https://wiki.ubuntu.com/Kernel/Reference/IOSchedulers
none (Multiqueue) 多隊列無操作 I/O 調度程式。不重新排序請求,最小的開銷。非常適合快速隨機 I/O 設備,例如 NVME。