Linux IO調(diào)度(電梯算法)

磁盤IO的基礎(chǔ)原理

磁盤的組成

一塊機(jī)械硬盤是由盤面驯遇、磁頭和懸臂三個(gè)部件組成的芹彬。

機(jī)械磁盤
磁盤構(gòu)造
  1. 盤面:是實(shí)際存儲(chǔ)數(shù)據(jù)的盤片。盤面上有一層磁性的涂層叉庐。數(shù)據(jù)就存儲(chǔ)在這個(gè)磁性的涂層上舒帮。 盤面中間有一個(gè)受電機(jī)控制的轉(zhuǎn)軸。這個(gè)轉(zhuǎn)軸會(huì)控制盤面去旋轉(zhuǎn)陡叠。與盤面有關(guān)系的指標(biāo)叫轉(zhuǎn)速玩郊,如硬盤有5400 轉(zhuǎn)的、7200 轉(zhuǎn)的枉阵,乃至 10000 轉(zhuǎn)的译红。這個(gè)多少多少轉(zhuǎn),指的就是盤面中間電機(jī)控制的轉(zhuǎn)軸的旋轉(zhuǎn)速度兴溜,英文單位叫RPM侦厚,也就是每分鐘的旋轉(zhuǎn)圈數(shù)。7200RPM拙徽,指的就是一旦電腦開機(jī)供電之后刨沦,我們的硬盤就可以一直做到每分鐘轉(zhuǎn)上 7200 圈。如果折算到每一秒鐘膘怕,就是 120 圈想诅。

  2. 磁頭:數(shù)據(jù)并不能直接從盤面?zhèn)鬏數(shù)娇偩€上,而是通過磁頭岛心,從盤面上讀取到来破,然后再通過電路信號(hào)傳輸給控制電路、接口忘古,再到總線上的徘禁。通常,一個(gè)盤面上會(huì)有兩個(gè)磁頭存皂,分別在盤面的正反面。盤面在正反兩面都有對(duì)應(yīng)的磁性涂層來存儲(chǔ)數(shù)據(jù),而且一塊硬盤也不是只有一個(gè)盤面旦袋,而是上下堆疊了很多個(gè)盤面骤菠,各個(gè)盤面之間是平行的。每個(gè)盤面的正反兩面都有對(duì)應(yīng)的磁頭疤孕。

  3. 懸臂:懸臂鏈接在磁頭上商乎,并且在一定范圍內(nèi)會(huì)去把磁頭定位到盤面的某個(gè)特定的磁道上画恰。

一個(gè)盤面通常是圓形的画侣,由很多個(gè)同心圓組成实夹,每一圈都是一個(gè)磁道棋电。每個(gè)磁道都有自己的一個(gè)編號(hào)骏融。懸臂其實(shí)只是控制锦担,到底是讀最里面那個(gè)圈的數(shù)據(jù)漂彤,還是最外面圈的數(shù)據(jù)霹粥。

一個(gè)磁道伦腐,會(huì)分成一個(gè)一個(gè)扇區(qū)赢底。上下平行的一個(gè)一個(gè)盤面的相同扇區(qū)呢,叫作一個(gè)柱面柏蘑,讀取數(shù)據(jù)幸冻,兩個(gè)步驟。

  1. 把盤面旋轉(zhuǎn)到某一個(gè)位置咳焚。在這個(gè)位置上洽损,懸臂可以定位到整個(gè)盤面的某一個(gè)子區(qū)間。這個(gè)子區(qū)間的形狀有點(diǎn)兒像一塊披薩餅革半,一般把這個(gè)區(qū)間叫作幾何扇區(qū)碑定。意思是,在幾何位置上督惰,所有這些扇區(qū)都可以被懸臂訪問到不傅。

  2. 就是把懸臂移動(dòng)到特定磁道的特定扇區(qū),也就在這個(gè)幾何扇區(qū)里面赏胚,找到我們實(shí)際的扇區(qū)访娶。找到之后,磁頭會(huì)落下觉阅,就可以讀取到正對(duì)著扇區(qū)的數(shù)據(jù)崖疤。

數(shù)據(jù)存取方式

磁盤的數(shù)據(jù)讀/寫一般是按柱面進(jìn)行的,即讀/寫數(shù)據(jù)時(shí)首先在同一柱面內(nèi)從“0”磁頭開始進(jìn)行操作典勇,依次向下在同一柱面的不同盤面即不同磁頭上進(jìn)行操作劫哼,只有當(dāng)同一柱面所有的磁頭全部讀/寫完畢后,磁頭才轉(zhuǎn)移到下一柱面(即尋道)割笙。

因?yàn)榍袚Q磁頭只需通過電子設(shè)備切換即可权烧,而切換柱面則必須通過機(jī)械設(shè)備切換眯亦。電子磁頭間的切換比機(jī)械磁頭向臨近磁道或柱面切換要快的多。所以般码,數(shù)據(jù)的讀/寫按柱面進(jìn)行妻率,而不按盤面進(jìn)行。也就是說板祝,一個(gè)磁道寫滿數(shù)據(jù)后宫静,就在同一柱面的下一個(gè)盤面的相同半徑磁道來寫,一個(gè)柱面寫滿后券时,才移到下一個(gè)柱面開始寫數(shù)據(jù)孤里。讀數(shù)據(jù)也按照這種方式進(jìn)行,這樣就大大提高了磁盤的讀/寫效率橘洞。

磁盤數(shù)據(jù)定位

機(jī)械硬盤的硬件捌袜,主要由盤面、磁頭和懸臂三部分組成震檩。我們的數(shù)據(jù)在盤面上的位置琢蛤,可以通過磁道、扇區(qū)和柱面來定位抛虏。實(shí)際的一次對(duì)于硬盤的訪問博其,需要把盤面旋轉(zhuǎn)到某一個(gè)“幾何扇區(qū)”,對(duì)準(zhǔn)懸臂的位置迂猴。然后慕淡,懸臂通過尋道,把磁頭放到我們實(shí)際要讀取的扇區(qū)上沸毁。

受制于機(jī)械硬盤的結(jié)構(gòu)峰髓,我們對(duì)于隨機(jī)數(shù)據(jù)的訪問速度,就要包含旋轉(zhuǎn)盤面的平均延時(shí)和移動(dòng)懸臂的尋道時(shí)間息尺。

磁盤尋道示例

image.png

數(shù)據(jù)存放在磁盤的第六磁道的第八扇區(qū)上:

那磁頭就會(huì)先擺動(dòng)到第六磁道上空携兵,然后等待第八扇區(qū)轉(zhuǎn)過來。當(dāng)?shù)诎松葏^(qū)轉(zhuǎn)到磁頭下面的時(shí)候搂誉,才可以讀取數(shù)據(jù)徐紧。

這就是機(jī)械硬盤的工作原理,也正是因?yàn)闄C(jī)械硬盤是利用磁性極粒來存儲(chǔ)數(shù)據(jù)的炭懊,所以機(jī)械硬盤通常又被稱作磁盤并级。

磁盤數(shù)據(jù)尋址方式

訪問硬盤上的數(shù)據(jù)總是以扇區(qū)為單位進(jìn)行的,即每次讀或?qū)懼辽偈且粋€(gè)扇區(qū)的數(shù)據(jù)侮腹。
常用兩種:物理尋址方式(CHS)和邏輯尋址方式(LBA)

物理尋址方式

物理尋址方式又稱為CHS(Cylinder柱面/Head磁頭/Sector扇區(qū))方式嘲碧,用柱面號(hào)(即磁道號(hào))、磁頭號(hào)(即盤面號(hào))和扇區(qū)號(hào)來表示一個(gè)特定扇區(qū)父阻。柱面和扇區(qū)從0開始編號(hào)愈涩,而扇區(qū)從1開始編號(hào)的望抽。
磁盤容量=磁頭數(shù)×柱面數(shù)×扇區(qū)數(shù)×512字節(jié)
系統(tǒng)在寫入數(shù)據(jù)時(shí)是按照從柱面到柱面的方式,當(dāng)上一個(gè)柱面寫滿數(shù)據(jù)后才移動(dòng)磁頭到下一個(gè)柱面履婉,而且是從柱面的第一個(gè)磁頭的第一個(gè)扇區(qū)開始寫入糠聪,從而使磁盤性能最優(yōu)。

邏輯尋址方式

尋址方式也改為以扇區(qū)為單位的線性尋址谐鼎,這種尋址方式便是LBA。即將所有的扇區(qū)統(tǒng)一編號(hào)趣惠。C/H/S中的扇區(qū)編號(hào)是從“1”至“63”狸棍,而邏輯扇區(qū)LBA方式下扇區(qū)是從“0”開始編號(hào),所有扇區(qū)編號(hào)按順序進(jìn)行味悄。
對(duì)于任何一個(gè)硬盤草戈,都可以認(rèn)為其扇區(qū)是從0號(hào)開始。

硬盤特性

硬盤尋址時(shí)間

即完成一個(gè)io請(qǐng)求所花費(fèi)的時(shí)間(它由尋道時(shí)間侍瑟、旋轉(zhuǎn)延遲和數(shù)據(jù)傳輸時(shí)間三部分構(gòu)成)

  1. 尋道時(shí)間:磁頭移動(dòng)到數(shù)據(jù)所在磁道的時(shí)間

7200 rpm的硬盤平均物理尋道時(shí)間是9ms

10000 rpm的硬盤平均物理尋道時(shí)間是6ms

15000 rpm的硬盤平均物理尋道時(shí)間是4ms

  1. 旋轉(zhuǎn)延遲時(shí)間:磁頭移動(dòng)到數(shù)據(jù)所在磁道后唐片,數(shù)據(jù)轉(zhuǎn)到磁頭下的時(shí)間(旋轉(zhuǎn)延遲取決于磁盤轉(zhuǎn)速,通常使用磁盤旋轉(zhuǎn)一周所需時(shí)間的1/2表示)

7200 rpm的磁盤平均旋轉(zhuǎn)延遲大約為60*1000/7200/2 = 4.17ms

10000 rpm的磁盤平均旋轉(zhuǎn)延遲大約為60*1000/10000/2 = 3ms

15000 rpm的磁盤其平均旋轉(zhuǎn)延遲約為60*1000/15000/2 = 2ms

  1. 數(shù)據(jù)傳輸時(shí)間:忽略不計(jì)(由于磁盤是機(jī)械運(yùn)動(dòng)涨颜,浪費(fèi)的時(shí)間主要在尋道和旋轉(zhuǎn)時(shí)間上)

兩部分組成了硬盤隨機(jī)訪問數(shù)據(jù)的時(shí)間耗費(fèi):

  1. 平均延時(shí):這個(gè)時(shí)間费韭,其實(shí)就是把盤面旋轉(zhuǎn),把幾何扇區(qū)對(duì)準(zhǔn)懸臂位置的時(shí)間庭瑰。隨機(jī)情況下星持,平均找到一個(gè)幾何扇區(qū),需要旋轉(zhuǎn)半圈盤面弹灭。如:7200 轉(zhuǎn)的硬盤督暂,那么一秒里面,就可以旋轉(zhuǎn) 240 個(gè)半圈穷吮。那么逻翁,這個(gè)平均延時(shí)就是1s / 240 = 4.17ms

  2. 平均尋道時(shí)間:也就是在盤面旋轉(zhuǎn)之后,懸臂定位到扇區(qū)的的時(shí)間〖裼悖現(xiàn)在用的 HDD 硬盤的平均尋道時(shí)間一般在 4-10ms八回。

所以可得,隨機(jī)在整個(gè)硬盤上找一個(gè)數(shù)據(jù)堰汉,需要 8-14 ms辽社。一塊 7200 轉(zhuǎn)的硬盤,一秒鐘隨機(jī)的 IO 訪問次數(shù)翘鸭,也就是1s / 8 ms = 125 IOPS 或者 1s / 14ms = 70 IOPS滴铅,符合前述HDD 硬盤的 IOPS 每秒 100 次左右。

相應(yīng)的就乓,如果不是去進(jìn)行隨機(jī)的數(shù)據(jù)訪問汉匙,而是進(jìn)行順序的數(shù)據(jù)讀寫拱烁,最大化讀取效率就是:我們可以選擇把順序存放的數(shù)據(jù),盡可能地存放在同一個(gè)柱面上噩翠。這樣戏自,我們只需要旋轉(zhuǎn)一次盤面,進(jìn)行一次尋道伤锚,就可以去寫入或者讀取擅笔,同一個(gè)垂直空間上的多個(gè)盤面的數(shù)據(jù)。如果一個(gè)柱面上的數(shù)據(jù)不夠屯援,也不要去動(dòng)懸臂猛们,而是通過電機(jī)轉(zhuǎn)動(dòng)盤面,這樣就可以順序讀完一個(gè)磁道上的所有數(shù)據(jù)狞洋。所以弯淘,其實(shí)對(duì)于 HDD 硬盤的順序數(shù)據(jù)讀寫,吞吐率還是很不錯(cuò)的吉懊,可以達(dá)到 200MB/s 左右庐橙。

Linux IO調(diào)度(電梯算法)

https://kernel.org/

https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram

image.png

Linux內(nèi)核2.6開始引入了全新的IO調(diào)度子系統(tǒng),IO調(diào)度器的總體目標(biāo)是希望讓磁頭能夠總是往一個(gè)方向移動(dòng)借嗽,移動(dòng)到底了再往反方向走态鳖,這恰恰就是現(xiàn)實(shí)生活中的電梯模型,所以IO調(diào)度器也被叫做電梯恶导。 (elevator)而相應(yīng)的算法也就被叫做電梯算法郁惜。而Linux中IO調(diào)度的電梯算法有好如下幾種:as(Anticipatory)、cfq(Complete Fairness Queueing)甲锡、deadline兆蕉、noop(No Operation)。具體使用哪種算法我們可以在啟動(dòng)的時(shí)候通過內(nèi)核參數(shù)elevator來指定缤沦,默認(rèn)使用的算法是cfq虎韵。

image.png

對(duì)于磁盤I/O,Linux提供了cfq, deadline和noop三種調(diào)度策略

考慮到硬件配置缸废、實(shí)際應(yīng)用場(chǎng)景(讀寫比例包蓝、順序還是隨機(jī)讀寫)的差異,實(shí)際該選擇哪個(gè)基本還是要實(shí)測(cè)來驗(yàn)證企量。不過下面幾條說明供參考:

  • deadline和noop差異不是太大测萎,但它們倆與cfq差異就比較大。

  • MySQL這類數(shù)據(jù)存儲(chǔ)系統(tǒng)不要使用cfq(時(shí)序數(shù)據(jù)庫可能會(huì)有所不同)届巩。

Deadline確保了在一個(gè)截止時(shí)間內(nèi)服務(wù)請(qǐng)求,這個(gè)截止時(shí)間是可調(diào)整的,而默認(rèn)讀期限短于寫期限.這樣就防止了寫操作因?yàn)椴荒鼙蛔x取而餓死的現(xiàn)象.Deadline對(duì)數(shù)據(jù)庫環(huán)境(ORACLE RAC,MYSQL等)是最好的選擇硅瞧。

  • 對(duì)于虛擬機(jī)上面的磁盤,建議采用比較簡(jiǎn)單的noop恕汇,畢竟數(shù)據(jù)實(shí)際上怎么落盤取決于虛擬化那一層.

NOOP算法

NOOP算法的全寫為No Operation腕唧。該算法實(shí)現(xiàn)了最最簡(jiǎn)單的FIFO隊(duì)列或辖,所有IO請(qǐng)求大致按照先來后到的順序進(jìn)行操作。之所以說“大致”枣接,原因是NOOP在FIFO的基礎(chǔ)上還做了相鄰IO請(qǐng)求的合并颂暇,并不是完完全全按照先進(jìn)先出的規(guī)則滿足IO請(qǐng)求。

假設(shè)有如下的io請(qǐng)求序列:
100但惶,500耳鸯,101,10膀曾,56片拍,1000
NOOP將會(huì)按照如下順序滿足:
100(101),500妓肢,10,56苫纤,1000

NOOP是在Linux2.4或更早的版本的使用的唯一調(diào)度算法碉钠。由于該算法比較簡(jiǎn)單,減了IO占用CPU中的計(jì)算時(shí)間最少卷拘。不過容易造成IO請(qǐng)求餓死喊废。

NOOP實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的FIFO隊(duì)列,它像電梯的工作一樣對(duì)I/O請(qǐng)求進(jìn)行組織,當(dāng)有一個(gè)新的請(qǐng)求到來時(shí),它將請(qǐng)求合并到最近的請(qǐng)求之后,以此來保證請(qǐng)求同一介質(zhì).

NOOP傾向餓死讀而利于寫.

NOOP對(duì)于閃存設(shè)備,RAM,嵌入式系統(tǒng)是最好的選擇.(寫得快,容易插隊(duì))

關(guān)于IO餓死的描述如下:因?yàn)閷懻?qǐng)求比讀請(qǐng)求更容易栗弟。寫請(qǐng)求通過文件系統(tǒng)cache污筷,不需要等一次寫完成,就可以開始下一次寫操作乍赫,寫請(qǐng)求通過合并瓣蛀,堆積到I/O隊(duì)列中。讀請(qǐng)求需要等到它前面所有的讀操作完成雷厂,才能進(jìn)行下一次讀操作惋增。在讀操作之間有幾毫秒時(shí)間,而寫請(qǐng)求在這之間就到來 改鲫,餓死了后面的讀請(qǐng)求 诈皿。其適用于SSD或Fusion IO環(huán)境下.

Excerpt from ULK3 ch15.3

“ULK3”是“Understanding the Linux Kernel, 3rd Edition”

image.png
Unix systems allow the deferred writes of dirty pages into block devices,  
because this noticeably improves system performance. 
Several write operations  on a page in cache could be satisfied by just one slow 
physical update of the  corresponding disk sectors. Moreover, write operations
 are less critical than  read operations, 
because a process is usually not suspended due to delayed  writings, 
while it is most often suspended because of delayed reads. 
Thanks to  deferred writes, each physical block device will service,
on the average, many  more read requests than write ones.

CFQ (Complete Fairness Queueing)算法

該算法的特點(diǎn)是按照IO請(qǐng)求的地址進(jìn)行排序,而不是按照先來后到的順序來進(jìn)行響應(yīng)像棘。CFQ為每個(gè)進(jìn)程/線程稽亏,單獨(dú)創(chuàng)建一個(gè)隊(duì)列來管理該進(jìn)程所產(chǎn)生的請(qǐng)求,也就是說每個(gè)進(jìn)程一個(gè)隊(duì)列缕题,各隊(duì)列之間的調(diào)度使用時(shí)間片來調(diào)度截歉,以此來保證每個(gè)進(jìn)程都能被很好的分配到I/O帶寬。假設(shè)有如下的io請(qǐng)求序列:

100烟零,500怎披,101胸嘁,10,56凉逛,1000
CFQ將會(huì)按照如下順序滿足:
100性宏,101,500状飞,1000毫胜,10,56

在傳統(tǒng)的SAS盤上诬辈,磁盤尋道花去了絕大多數(shù)的IO響應(yīng)時(shí)間酵使。CFQ的出發(fā)點(diǎn)是對(duì)IO地址進(jìn)行排序,以盡量少的磁盤旋轉(zhuǎn)次數(shù)來滿足盡可能多的IO請(qǐng)求焙糟。在CFQ算法下口渔,SAS盤的吞吐量大大提高了。但是相比于NOOP的缺點(diǎn)是穿撮,先來的IO請(qǐng)求并不一定能被滿足缺脉,也可能會(huì)出現(xiàn)餓死的情況,不過其作為最新的內(nèi)核版本和發(fā)行版中默認(rèn)的I/O調(diào)度器悦穿,對(duì)于通用的服務(wù)器也是最好的選擇攻礼。CFQ是deadline和as調(diào)度器的折中,CFQ對(duì)于多媒體應(yīng)用(video栗柒,audio)和桌面系統(tǒng)是最好的選擇礁扮。

DEADLINE算法

DEADLINE在CFQ的基礎(chǔ)上,解決了IO請(qǐng)求餓死的極端情況瞬沦。除了CFQ本身具有的IO排序隊(duì)列之外太伊,DEADLINE額外分別為讀IO和寫IO提供了FIFO隊(duì)列。讀FIFO隊(duì)列的最大等待時(shí)間為500ms逛钻,寫FIFO隊(duì)列的最大等待時(shí)間為5s倦畅。FIFO隊(duì)列內(nèi)的IO請(qǐng)求優(yōu)先級(jí)要比CFQ隊(duì)列中的高,而讀FIFO隊(duì)列的優(yōu)先級(jí)又比寫FIFO隊(duì)列的優(yōu)先級(jí)高绣的。優(yōu)先級(jí)可以表示如下:

FIFO(Read) > FIFO(Write) > CFQ

Deadline確保了在一個(gè)截止時(shí)間內(nèi)服務(wù)請(qǐng)求叠赐,這個(gè)截止時(shí)間是可調(diào)整的,而默認(rèn)讀期限短于寫期限屡江。這樣就防止了寫操作因?yàn)椴荒鼙蛔x取而餓死的現(xiàn)象芭概。Deadline對(duì)數(shù)據(jù)庫環(huán)境(ORACLE RAC,MYSQL等)是最好的選擇惩嘉。

ANTICIPATORY(預(yù)期)算法

CFQ和DEADLINE考慮的焦點(diǎn)在于滿足零散IO請(qǐng)求上罢洲。對(duì)于連續(xù)的IO請(qǐng)求,比如順序讀,并沒有做優(yōu)化惹苗。為了滿足隨機(jī)IO和順序IO混合的場(chǎng)景殿较,Linux還支持ANTICIPATORY調(diào)度算法。ANTICIPATORY的在DEADLINE的基礎(chǔ)上桩蓉,為每個(gè)讀IO都設(shè)置了6ms的等待時(shí)間窗口淋纲。如果在這6ms內(nèi)OS收到了相鄰位置的讀IO請(qǐng)求,就可以立即滿足院究。

本質(zhì)上與Deadline一樣洽瞬,但在最后一次讀操作后,要等待6ms业汰,才能繼續(xù)進(jìn)行對(duì)其它I/O請(qǐng)求進(jìn)行調(diào)度伙窃。可以從應(yīng)用程序中預(yù)訂一個(gè)新的讀請(qǐng)求样漆,改進(jìn)讀操作的執(zhí)行为障,但以一些寫操作為代價(jià)。它會(huì)在每個(gè)6ms中插入新的I/O操作放祟,而會(huì)將一些小寫入流合并成一個(gè)大寫入流鳍怨,用寫入延時(shí)換取最大的寫入吞吐量。AS適合于寫入較多的環(huán)境舞竿,比如文件服務(wù)器,但對(duì)對(duì)數(shù)據(jù)庫環(huán)境表現(xiàn)很差窿冯。

IO調(diào)度配置

查看當(dāng)前系統(tǒng)支持的IO調(diào)度算法

root@harry:~# cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
root@harry:/# cat /sys/block/sda/queue/scheduler 
[mq-deadline] none
root@harry:/# cat /sys/block/sda/queue/scheduler 
[mq-deadline] none

修改調(diào)度策略

root@harry:/# echo none > /sys/block/sda/queue/scheduler
root@harry:/# cat /sys/block/sda/queue/scheduler 
[none] mq-deadline 

永久修改調(diào)度策略

修改內(nèi)核引導(dǎo)參數(shù)骗奖,加入elevator=調(diào)度程序名

總結(jié)

CFQ和DEADLINE考慮的焦點(diǎn)在于滿足零散IO請(qǐng)求上。對(duì)于連續(xù)的IO請(qǐng)求醒串,比如順序讀执桌,并沒有做優(yōu)化。為了滿足隨機(jī)IO和順序IO混合的場(chǎng)景芜赌,Linux還支持ANTICIPATORY調(diào)度算法仰挣。ANTICIPATORY的在DEADLINE的基礎(chǔ)上,為每個(gè)讀IO都設(shè)置了6ms的等待時(shí)間窗口缠沈。如果在這6ms內(nèi)OS收到了相鄰位置的讀IO請(qǐng)求膘壶,就可以立即滿足。

IO調(diào)度器算法的選擇洲愤,既取決于硬件特征颓芭,也取決于應(yīng)用場(chǎng)景。

在傳統(tǒng)的SAS盤上柬赐,CFQ亡问、DEADLINE、ANTICIPATORY都是不錯(cuò)的選擇肛宋;對(duì)于專屬的數(shù)據(jù)庫服務(wù)器州藕,DEADLINE的吞吐量和響應(yīng)時(shí)間都表現(xiàn)良好束世。然而在新興的固態(tài)硬盤比如SSD、Fusion IO上床玻,最簡(jiǎn)單的NOOP反而可能是最好的算法毁涉,因?yàn)槠渌齻€(gè)算法的優(yōu)化是基于縮短尋道時(shí)間的,而固態(tài)硬盤沒有所謂的尋道時(shí)間且IO響應(yīng)時(shí)間非常短笨枯。

參考文章

https://blog.csdn.net/BaiWfg2/article/details/52885287

https://kernel.org/

https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末薪丁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子馅精,更是在濱河造成了極大的恐慌严嗜,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洲敢,死亡現(xiàn)場(chǎng)離奇詭異漫玄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)压彭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門睦优,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人壮不,你說我怎么就攤上這事汗盘。” “怎么了询一?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵隐孽,是天一觀的道長。 經(jīng)常有香客問我健蕊,道長菱阵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任缩功,我火速辦了婚禮晴及,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嫡锌。我一直安慰自己虑稼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布势木。 她就那樣靜靜地躺著动雹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪跟压。 梳的紋絲不亂的頭發(fā)上胰蝠,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼茸塞。 笑死躲庄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的钾虐。 我是一名探鬼主播噪窘,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼效扫!你這毒婦竟也來了倔监?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤菌仁,失蹤者是張志新(化名)和其女友劉穎浩习,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體济丘,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谱秽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摹迷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疟赊。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖峡碉,靈堂內(nèi)的尸體忽然破棺而出近哟,到底是詐尸還是另有隱情,我是刑警寧澤鲫寄,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布吉执,位于F島的核電站,受9級(jí)特大地震影響塔拳,放射性物質(zhì)發(fā)生泄漏鼠证。R本人自食惡果不足惜峡竣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一靠抑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧适掰,春花似錦颂碧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至费就,卻和暖如春诉瓦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工睬澡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留固额,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓煞聪,卻偏偏與公主長得像斗躏,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昔脯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容