Linux實現了4種I O排程演算法

2022-06-08 21:51:13 字數 791 閱讀 3649

linux實現了4種i/o排程演算法,分別為:noop演算法(no operate)、最後期限演算法(deadline)、完全公平佇列演算法(cfq)和預期演算法(anticipatory)。

不對i/o請求排序,但會合併請求,除此之外無其他任何優化。它用fifo佇列順序提交i/o請求。noop演算法適用於如ssd的隨機訪問裝置,因為隨機訪問裝置不存在磁頭移動造成的尋道時間,無需做多餘的事情。

最後期限演算法維護了三個佇列,分別是具備合併和排序功能的請求佇列、讀請求佇列和寫請求佇列。這三個佇列均為帶有超時時間的fifo佇列。當有新的i/o請求時,會被同時插入普通佇列和讀/寫佇列,然後i/o排程器正常處理普通佇列中的請求。當排程器發現讀/寫請求佇列中有請求即將超時時,會優先處理這些請求,以保證盡量不產生飢餓請求。

此演算法在全域性吞吐量和延遲方面做了權衡,犧牲了一定的全域性吞吐量來避免飢餓請求的可能。當系統存在大量順序i/o請求的時候,此演算法可能導致i/o請求無法被很好的排序,引發頻繁尋道。

每個提交i/o請求的程序都會有自己的i/o佇列,此演算法將i/o請求按照程序分別放入程序對應的佇列中。cfq的公平是針對程序而言的,它以時間片演算法為前提,輪轉調動佇列,預設從當前佇列中取出4個i/o請求處理,然後處理下乙個佇列中的4個請求,確保每個程序享有的i/o資源是均衡的。

是基於**的i/o演算法,和最後期限演算法類似,維護了三個佇列。但是此演算法在處理完乙個i/o請求之後不會立即返回處理下乙個請求,而是等待片刻(預設6ms),等待期間如果有新來的相鄰扇區的請求,會直接處理此新來的相鄰扇區的請求。當等待時間結束後,才會處理下乙個佇列的請求。此演算法適合寫入較多的環境,不適合mysql等隨機讀取較多的資料庫環境。

LINUX磁碟IO調優指標

磁碟 i o 效能監控的主要指標介紹如下 指標 1 每秒 i o 數 iops 或 tps 對於磁碟來說,一次磁碟的連續讀或者連續寫稱為一次磁碟 i o,磁碟的 iops 就是每秒磁碟連續讀次數和連續寫次數之和。當傳輸小塊不連續資料時,該指標有重要參考意義。指標 2 吞吐量 throughput 指...

Linux五種IO模型

五種io模型的理解 阻塞io 收銀台等待 在核心將資料準備好之前,系統調 會 直等待.所有的套接字,預設都是阻塞 式.阻塞io 座位等待 往往需要程式設計師迴圈的方式反覆嘗試讀寫檔案描述符,這個過程稱為輪詢.訊號驅動io 等服務員叫 核心將資料準備好的時候,使 sigio訊號通知應用程式進行io操作...

Linux 五種I O模型

首先,我們來看一下,有哪五種i o模型 小結 非阻塞i o,記錄鎖,系統v流機制,i o多路轉接 也叫i o多路復用 readv和writev函式以及儲存對映i o mmap 這些統稱為高階i o。首先,我們來看乙個介面 int fcntl int fd,int cmd,arg 功能 針對描述符提供...