溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

《Tuning I/O Performance》讀后筆記

發(fā)布時(shí)間:2020-08-15 15:39:20 來(lái)源:網(wǎng)絡(luò) 閱讀:788 作者:W小五 欄目:移動(dòng)開(kāi)發(fā)

《Tuning I/O Performance》,文章地址:http://doc.opensuse.org/products/draft/SLES/SLES-tuning_sd_draft/cha.tuning.io.html


大家在讀了原文后若有更好的見(jiàn)解,請(qǐng)不吝賜教,謝謝!


    文章以SUSE Linux Enterprise Server為例講解了Linux系統(tǒng)的IO調(diào)度策略及調(diào)優(yōu),可適應(yīng)于其他Linux操作系統(tǒng),如CentOS、UBUNTU等。

    1、查看當(dāng)前IO調(diào)度策略(大多數(shù)Linux發(fā)行版的默認(rèn)策略是CFQ)

         命令:cat /sys/block/sda/queue/scheduler

         結(jié)果:noop anticipatory deadline [cfq]   #CentOS系統(tǒng),可知可用的調(diào)度策略和當(dāng)前調(diào)度策略,[]中的為當(dāng)前系統(tǒng)采用的調(diào)度策略

    2、更改當(dāng)前調(diào)度策略

         a、在系統(tǒng)啟動(dòng)時(shí)加入elevator=SCHEDULER 的內(nèi)核參數(shù)

         b、直接修改內(nèi)核參數(shù):echo SCHEDULER > /sys/block/DEVICE/queue/scheduler

    3、策略調(diào)優(yōu)

         各個(gè)策略均有參數(shù)可以調(diào)優(yōu),參數(shù)路徑大致相同,在 /sys/block/DEVICE/queue/iosched/目錄下

         命令:echo VALUE > /sys/block/DEVICE/queue/iosched/TUNABLE

     4、各主要策略調(diào)優(yōu)

          a、CFQ(Completely Fair Queuing)

               i、CFQ是一個(gè)公平的算法,每個(gè)線程都有一個(gè)時(shí)間片來(lái)提交I/O請(qǐng)求,不同的任務(wù)也可以分配不同的I/O優(yōu)先級(jí)(man 1 ionice)

               ii、可調(diào)優(yōu)的參數(shù)

                   /sys/block/<device>/queue/iosched/slice_idle

                      #就算一個(gè)任務(wù)當(dāng)前沒(méi)有I/O請(qǐng)求了,采用此策略仍然會(huì)等待一段時(shí)間才切換到下一個(gè)線程。

                      #針對(duì) SSDs、多磁盤SAN等當(dāng)前磁道位置(不用額外花費(fèi)時(shí)間尋址)不是特別重要的,只可以把此參數(shù)設(shè)置為0可以明顯提高吞吐量。
                  

                  /sys/block/<device>/queue/iosched/quantum
                      #限制設(shè)備同時(shí)處理的請(qǐng)求數(shù)量,默認(rèn)值是4
                      #調(diào)高此值雖然可以提高性能,但因?yàn)椴l(fā)處理量增多了,可能會(huì)增加某些I/O的延時(shí)

                      #所以可調(diào)整/sys/block/<device>/queue/iosched/slice_async_rq(默認(rèn)是2,限制同一時(shí)間片的異步寫請(qǐng)求數(shù)量)


                 /sys/block/<device>/queue/iosched/low_latency
                      #對(duì)I/O延遲要求非常高的負(fù)載環(huán)境中,可以將此值設(shè)置為1會(huì)好一些


          b、NOOP

               i、它是一種非常普通的調(diào)度策略,有I/O請(qǐng)求時(shí)它就處理,它可以用來(lái)檢測(cè)其它調(diào)度算法在復(fù)雜I/O環(huán)境下是否引起了I/O性能。

               ii、有自身的的調(diào)度算法的設(shè)備,如智能存儲(chǔ)設(shè)備、SSDs等,雖然一般情況下DEADLINE更適合這些設(shè)備,但在較低負(fù)載下它的性能可能會(huì)更好。

      

          c、DEADLINE

               i、DEADLINE是為降低延時(shí)而設(shè)計(jì)的,每個(gè)I/O請(qǐng)求分配了一個(gè)結(jié)束時(shí)間,超時(shí)后便會(huì)暫存到隊(duì)列(讀和寫兩個(gè)隊(duì)列)中,當(dāng)沒(méi)有超時(shí)的請(qǐng)求時(shí)再處理這些隊(duì)                    列里的請(qǐng)求,這個(gè)算法對(duì)讀的好處大于寫。

               ii、在并發(fā)讀寫及優(yōu)先級(jí)不是非常重要的情況下,此調(diào)試要比CFQ策略性能好許多。

               iii、調(diào)優(yōu)參數(shù)

                    /sys/block/<device>/queue/iosched/writes_starved  

                      #控制在多少個(gè)讀請(qǐng)求后可以處理一個(gè)寫請(qǐng)求,設(shè)置為3表示處理3個(gè)請(qǐng)求后可以處理一個(gè)寫請(qǐng)求


                    /sys/block/<device>/queue/iosched/read_expire
                       #以毫秒為單位,默認(rèn)值是500,設(shè)置讀操作的超時(shí)時(shí)間(當(dāng)前時(shí)間往后推read_expire值便是超時(shí)的時(shí)間點(diǎn))

                    /sys/block/<device>/queue/iosched/write_expire
                       #同上,控制寫請(qǐng)求超時(shí)時(shí)間


     5、I/O Barrier調(diào)優(yōu)

         Write Barriers 是一種內(nèi)核機(jī)制,可以保證文件系統(tǒng)元數(shù)據(jù)正確有序地寫入持久化存儲(chǔ),哪怕持久化存儲(chǔ)掉電的情況也能保證。大多數(shù)文件系統(tǒng)(XFS、ext3、ext4、reiserfs)在fsync或事務(wù)提交的時(shí)候便會(huì)觸發(fā) Write Barriers ??稍谟袀溆秒姵氐拇疟P關(guān)閉 Write Barriers 來(lái)提高性能。

        可在ext3、ext4、reiserfs文件系統(tǒng)掛載時(shí)加上barrier=0的選項(xiàng),XFS掛載時(shí)使用nobarrier選項(xiàng)。        


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI