Linux I/O調度器介紹

      網友投稿 1071 2025-04-01

      linux I/O調度器的總體目標是希望讓磁頭能夠順序訪問,在較小的影響響應速度的前提下,提高I/O的吞吐量,類似電梯的原理,所以linux的I/O調度算法也被稱為電梯調度算法。下面就Linux常見的I/O調度程序進行介紹。

      Noop(No Operation)

      Noop是針對非傳統機械硬盤(例如Dorado V3或內存設備)或自身具備I/O調度算法或較大緩存的環境,提供了最基本的合并和排序(FIFO)功能。NOOP調度器執行的唯一操作是合并,它以后向合并的方式合并了相鄰的請求,除此之外,它是一個真正的無操作調度程序,它僅按FIFO順序維護請求隊列。注意,并不是存儲足夠快就應該選擇Noop調度算法,還應該考慮主機的負載模型,如果系統是計算密集型(CPU-bound)且存儲非??欤ɡ鏒orado V3),Noop算法是一個不錯的選擇。

      CFQ(Completely Fair Queuing)

      CFQ嘗試提供由發起I/O進程決定的公平的I/O調度,是RHEL5.x(內核版本2.6.18)上默認調度策略。CFQ提供三個不同的調度等級:實時real-time(RT),最佳效果best-effort(BE)和閑置idle。可使用?ionice?命令手動分配調度等級,或者使用ioprio_set系統調用編程分配。默認情況下將進程設定為"最佳效果"調度等級。實時調度等級和最佳效果調度等級又進一步分為八個?I/O?優先級,其中?0?代表最高優先權,7?代表最低優先權。采用實時調度等級的進程比采用最佳效果等級和閑置等級的進程會被更頻繁地調度,因此所有實時等級的I/O都會在最佳效果等級或者閑置等級I/O前得到調度。這意味著實時優先權的I/O可能餓死最佳效果和閑置等級的I/O。最佳效果調度是默認調度等級,默認優先權為?4。閑置調度等級中的進程只有在系統中沒有其他I/O等待時才會被執行。

      CFQ通過為每個執行I/O的進程分配時間片段提供公平。在其時間片段中,進程每次最多可有八個請求(默認)。調度程序會嘗試根據歷史數據估計某個程序是否會在近期發出更多?I/O,如果認為該進程即將發出更多的I/O,CFQ會“空轉”,等待即將下發的I/O,即使有其他進程正在等待發出?I/O。由于CFQ執行的“空轉”等待操作,通常CFQ并不適合快速外置存儲陣列或者固態硬盤,例如Dorado V3。如果要求在此類存儲中使用CFQ(例如需要使用?cgroup加權I/O調度程序),則需要調節一些參數以改進CFQ性能。具體見RedHat Performance Tuning Guide.

      CFQ是一個非工作保留(non-work-conserving)的I/O調度器,這意味著即使有待處理的請求,它也可以是空閑的。非工作保留調度器的堆棧會在I/O路徑中引入大的延遲。例如,在基于主機的硬件RAID控制器的頂部使用CFQ,RAID控制器可以實現其自己的非工作保留調度器,從而在堆棧中引起兩次延遲。

      Deadline

      最后期限I/O調度中每個請求是基于最后期限的,即每request會被分配一個time stamp,注意:只有當請求進入I/O調度程序后方開始計算時延(這個區別非常重要,因為可能會讓程序進入睡眠等待模式以便釋放請求描述符)。

      讀請求和寫請求被分成了兩個隊列,每個隊列(讀或寫)都采用兩種方式將這些請求管理起來,一種是采用紅黑樹(RB tree)的方式將所有request組織起來,通過request的訪問地址作為索引,即按照LBA順序排序(單向遞增);另一種方式是采用隊列的方式將request管理起來,所有的request采用先來后到的方式進行排序,即FIFO隊列。

      默認情況下讀取比寫入的優先權高,因為程序更容易因讀取I/O而被阻斷,除非寫請求即將被餓死的時候,才會去調度處理寫請求。這種處理可以保證讀請求的延遲時間最小化。

      最后期限調度以批量的形式處理請求,對那些地址臨近的順序化請求,deadline給予了高優先級處理權,參數fifo_batch可指定一批包含的讀取或寫入個數,默認為16。

      處理完一批I/O后,I/O調度程序會檢查是否有寫請求已等待太久,然后決定是否開始新一批讀或者寫操作,這樣保證了每個請求的延遲時間。只在開始新一批I/O處理時才檢查FIFO請求列表的過期請求,因此,如果選擇批寫入,且同時有過期的讀取請求,那么只有在批寫入完成后方可執行讀取請求。

      Anticipatory scheduler(AS)

      該算法從Linux?2.6.33版本后被移除。Anticipatory基于“假空閑”(Deceptive idleness)的假設,意思是一個進程在剛剛做完一次讀操作后,看似空閑,但可能是在處理這些數據,處理完后還會繼續進行讀操作,這個時候如果IO調度器去處理另外一個進程的請求,那么當原進程的下一個請求到來,磁頭需要重新尋址,這樣大大增加了時延。所以,Anticipatory算法會在一個讀請求完成后,再等待一定時間,通常是6ms,如果6ms內這個進程上還有讀請求過來,則繼續服務,否則,處理下一個進程的讀寫請求。

      配置I/O調度

      下面示例查看sdc的調度策略,[cfq]表示當前的調度策略為cfq

      # cat /sys/block/sdc/queue/scheduler

      noop anticipatory deadline [cfq]

      下面示例將sdc的調度策略臨時修改為noop,服務器重啟后將恢復默認

      # echo noop > /sys/block/sdc/queue/scheduler

      在內核啟動參數指定調度策略,例如elevator=noop

      kernel /boot/vmlinuz-2.6.32.54-0.3-default root=/dev/disk/by-id/scsi-3600508e00000000099853793bd56b80b-part1 resume=/dev/disk/by-id/scsi-3600508e00000000099853793bd56b80b-part2 splash=silent crashkernel=128M@32M??elevator=noop

      參考

      switching-sched.txt??https://www.kernel.org/doc/Documentation/block/switching-sched.txt

      Veloces: An Efficient I/O Scheduler for Solid State Devices??https://www.kernel.org/doc/ols/2014/ols2014-rangnekar.pdf

      Enhancements to Linux I/O Scheduling???https://www.kernel.org/doc/ols/2005/ols2005v2-pages-183-200.pdf

      Workload Dependent Performance Evaluation of the Linux 2.6 I/O Schedulers??https://www.kernel.org/doc/ols/2004/ols2004v2-pages-139-162.pdf

      Completely Fair Queuing (CFQ)

      Linux I/O調度器介紹

      https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/ch06s04.html

      Linux中常見IO調度器??http://alanwu.blog.51cto.com/3652632/1393068

      Linux 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:大數據技術原理應用之【HDFS】習題
      下一篇:wps怎么給表格添加豎線的方法(wps表格怎樣在一個單元格中添加豎線)
      相關文章
      国产精品亚洲一区二区无码| 麻豆亚洲av熟女国产一区二| 亚洲国产成人资源在线软件| 亚洲成av人影院| 伊伊人成亚洲综合人网7777| 亚洲免费一区二区| 亚洲国产成人精品无码久久久久久综合| 亚洲精品动漫免费二区| 亚洲欧美自偷自拍另类视| 亚洲欧美aⅴ在线资源| 亚洲精品国产精品| 国产大陆亚洲精品国产| 国产午夜亚洲精品不卡| mm1313亚洲精品无码又大又粗| 国产精品亚洲一区二区三区在线观看| 亚洲人成电影网站色| 亚洲AV无码一区二区三区电影| 亚洲中文字幕乱码熟女在线| 亚洲夂夂婷婷色拍WW47| 亚洲AV无码国产精品永久一区| 狠狠入ady亚洲精品| 亚洲成A人片在线观看中文| 亚洲日韩在线观看免费视频| 久久综合亚洲色HEZYO国产| 在线日韩日本国产亚洲| 亚洲av中文无码乱人伦在线咪咕| 亚洲第一视频网站| 亚洲欧洲日产国产最新| 国产99在线|亚洲| 人人狠狠综合久久亚洲| 亚洲国产中文字幕在线观看| a级亚洲片精品久久久久久久 | 亚洲乱色熟女一区二区三区蜜臀| 亚洲精品久久无码av片俺去也| 亚洲AV之男人的天堂| 亚洲中文字幕无码久久精品1 | 中文字幕乱码亚洲无线三区| 亚洲第一综合天堂另类专 | 亚洲高清无在码在线无弹窗| 国产成人亚洲合集青青草原精品 | 亚洲AV色香蕉一区二区|