• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 34, comments - 0, trackbacks - 0, articles - 1
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            在Linux 2.6中,有四種關(guān)于IO的調(diào)度算法,下面綜合小結(jié)一下:

            1) NOOP

            NOOP算法的全寫(xiě)為No Operation。該算法實(shí)現(xiàn)了最最簡(jiǎn)單的FIFO隊(duì)列,所有IO請(qǐng)求大致按照先來(lái)后到的順序進(jìn)行操作。之所以說(shuō)“大致”,

            原因是NOOP在FIFO的基礎(chǔ)上還做了相鄰IO請(qǐng)求的合并,并不是完完全全按照先進(jìn)先出的規(guī)則滿足IO請(qǐng)求。NOOP假定I/O請(qǐng)求由驅(qū)動(dòng)程序或者設(shè)

            備做了優(yōu)化或者重排了順序(就像一個(gè)智能控制器完成的工作那樣)。在有些SAN環(huán)境下,這個(gè)選擇可能是最好選擇。Noop 對(duì)于 IO 不那么操

            心,對(duì)所有的 IO請(qǐng)求都用 FIFO 隊(duì)列形式處理,默認(rèn)認(rèn)為 IO 不會(huì)存在性能問(wèn)題。這也使得 CPU 也不用那么操心。www.linuxidc.com當(dāng)然

            ,對(duì)于復(fù)雜一點(diǎn)的應(yīng)用類型,使用這個(gè)調(diào)度器,用戶自己就會(huì)非常操心。


            2) Deadline scheduler

            DEADLINE在CFQ的基礎(chǔ)上,解決了IO請(qǐng)求餓死的極端情況。除了CFQ本身具有的IO排序隊(duì)列之外,DEADLINE額外分別為讀IO和寫(xiě)IO提供了FIFO

            隊(duì)列。讀FIFO隊(duì)列的最大等待時(shí)間為500ms,寫(xiě)FIFO隊(duì)列的最大等待時(shí)間為5s。FIFO隊(duì)列內(nèi)的IO請(qǐng)求優(yōu)先級(jí)要比CFQ隊(duì)列中的高,,而讀FIFO

            隊(duì)列的優(yōu)先級(jí)又比寫(xiě)FIFO隊(duì)列的優(yōu)先級(jí)高。優(yōu)先級(jí)可以表示如下:

            FIFO(Read) > FIFO(Write) > CFQ

            deadline 算法保證對(duì)于既定的 IO 請(qǐng)求以最小的延遲時(shí)間,從這一點(diǎn)理解,對(duì)于 DSS 應(yīng)用應(yīng)該會(huì)是很適合的。

            3) Anticipatory scheduler

            CFQ和DEADLINE考慮的焦點(diǎn)在于滿足零散IO請(qǐng)求上。對(duì)于連續(xù)的IO請(qǐng)求,比如順序讀,并沒(méi)有做優(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)求,就可以立即滿足

            Anticipatory scheduler(as) 曾經(jīng)一度是 Linux 2.6 Kernel 的 IO scheduler 。Anticipatory 的中文含義是”預(yù)料的, 預(yù)想的”, 這個(gè)

            詞的確揭示了這個(gè)算法的特點(diǎn),簡(jiǎn)單的說(shuō),有個(gè) IO 發(fā)生的時(shí)候,如果又有進(jìn)程請(qǐng)求 IO 操作,則將產(chǎn)生一個(gè)默認(rèn)的 6 毫秒猜測(cè)時(shí)間,猜測(cè)

            下一個(gè) 進(jìn)程請(qǐng)求 IO 是要干什么的。這對(duì)于隨即讀取會(huì)造成比較大的延時(shí),對(duì)數(shù)據(jù)庫(kù)應(yīng)用很糟糕,而對(duì)于 Web Server 等則會(huì)表現(xiàn)的不錯(cuò)。

            這個(gè)算法也可以簡(jiǎn)單理解為面向低速磁盤(pán)的,因?yàn)槟莻€(gè)”猜測(cè)”實(shí)際上的目的是為了減少磁頭移動(dòng)時(shí)間。

            4)CFQ

            CFQ算法的全寫(xiě)為Completely Fair Queuing。該算法的特點(diǎn)是按照IO請(qǐng)求的地址進(jìn)行排序,而不是按照先來(lái)后到的順序來(lái)進(jìn)行響應(yīng)。

            在傳統(tǒng)的SAS盤(pán)上,磁盤(pán)尋道花去了絕大多數(shù)的IO響應(yīng)時(shí)間。CFQ的出發(fā)點(diǎn)是對(duì)IO地址進(jìn)行排序,以盡量少的磁盤(pán)旋轉(zhuǎn)次數(shù)來(lái)滿足盡可能多的

            IO請(qǐng)求。在CFQ算法下,SAS盤(pán)的吞吐量大大提高了。但是相比于NOOP的缺點(diǎn)是,先來(lái)的IO請(qǐng)求并不一定能被滿足,可能會(huì)出現(xiàn)餓死的情況。

            Completely Fair Queuing (cfq, 完全公平隊(duì)列) 在 2.6.18 取代了 Anticipatory scheduler 成為 Linux Kernel 默認(rèn)的 IO scheduler

            。cfq 對(duì)每個(gè)進(jìn)程維護(hù)一個(gè) IO 隊(duì)列,各個(gè)進(jìn)程發(fā)來(lái)的 IO 請(qǐng)求會(huì)被 cfq 以輪循方式處理。也就是對(duì)每一個(gè) IO 請(qǐng)求都是公平的。這使得

            cfq 很適合離散讀的應(yīng)用(eg: OLTP DB)。我所知道的企業(yè)級(jí) Linux 發(fā)行版中,SUSE Linux 好像是最先默認(rèn)用 cfq 的.

            查看和修改IO調(diào)度器的算法非常簡(jiǎn)單。假設(shè)我們要對(duì)sda進(jìn)行操作,如下所示:

            cat /sys/block/sda/queue/scheduler

            echo “cfq” > /sys/block/sda/queue/scheduler

            總結(jié):

            1 CFQ和DEADLINE考慮的焦點(diǎn)在于滿足零散IO請(qǐng)求上。對(duì)于連續(xù)的IO請(qǐng)求,比如順序讀,并沒(méi)有做優(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盤(pán)上,CFQ、DEADLINE、ANTICIPATORY都是不錯(cuò)的選擇;對(duì)于專屬的數(shù)據(jù)庫(kù)服務(wù)器,DEADLINE的吞吐量和響應(yīng)時(shí)間都表現(xiàn)良好。

            然而在新興的固態(tài)硬盤(pán)比如SSD、Fusion IO上,最簡(jiǎn)單的NOOP反而可能是最好的算法,因?yàn)槠渌齻€(gè)算法的優(yōu)化是基于縮短尋道時(shí)間的,而

            固態(tài)硬盤(pán)沒(méi)有所謂的尋道時(shí)間且IO響應(yīng)時(shí)間非常短。

            2 對(duì)于數(shù)據(jù)庫(kù)應(yīng)用, Anticipatory Scheduler 的表現(xiàn)是最差的。Deadline 在 DSS 環(huán)境表現(xiàn)比 cfq 更好一點(diǎn),而 cfq 綜合來(lái)看表現(xiàn)更好一

            些。這也難怪 RHEL 4 默認(rèn)的 IO 調(diào)度器設(shè)置為 cfq. 而 RHEL 4 比 RHEL 3,整體 IO 改進(jìn)還是不小的。

             

            国产精久久一区二区三区| 久久不见久久见免费视频7| 91精品国产综合久久久久久| 日产精品久久久一区二区| 国产99久久精品一区二区| 久久99精品国产| 天堂无码久久综合东京热| 无码人妻久久一区二区三区免费丨| 精品综合久久久久久97超人| 久久国产香蕉视频| 久久香蕉国产线看观看精品yw| 日韩欧美亚洲综合久久影院d3| 伊人久久精品影院| 99久久99久久精品免费看蜜桃| 久久国产免费| 亚洲国产成人久久精品动漫| 久久久久亚洲AV无码观看| 久久本道久久综合伊人| 久久香蕉超碰97国产精品| 久久天天躁狠狠躁夜夜不卡| 久久久久人妻一区二区三区vr| 狠狠综合久久综合中文88| 亚洲αv久久久噜噜噜噜噜| 久久久久亚洲?V成人无码| 无码AV中文字幕久久专区| 日韩AV毛片精品久久久| 久久精品无码一区二区无码| 久久国内免费视频| 久久99精品久久久久久齐齐| 蜜臀av性久久久久蜜臀aⅴ麻豆| 一本色道久久综合狠狠躁篇| 精品久久久久久久久久中文字幕 | 少妇人妻综合久久中文字幕| 久久综合狠狠色综合伊人| 久久99精品久久久久婷婷| 伊人久久大香线蕉精品不卡 | 久久综合久久综合久久| 亚洲国产精品无码久久一区二区| 久久亚洲高清综合| 久久久亚洲精品蜜桃臀| 久久精品亚洲福利|