《Tuning I/O Performance》读后笔记
《Tuning I/O Performance》,文章地址:http://doc.opensuse.org/products/draft/SLES/SLES-tuning_sd_draft/cha.tuning.io.html
大家在讀了原文后若有更好的見解,請(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í)間片來提交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)前沒有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í)它就處理,它可以用來檢測(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)沒有超時(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 來提高性能。
? ?? ???可在ext3、ext4、reiserfs文件系統(tǒng)掛載時(shí)加上barrier=0的選項(xiàng),XFS掛載時(shí)使用nobarrier選項(xiàng)。 ?? ? ??
轉(zhuǎn)載于:https://blog.51cto.com/wxiaowu/1547122
總結(jié)
以上是生活随笔為你收集整理的《Tuning I/O Performance》读后笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模式识别之基础---使用纹理滤波器分割图
- 下一篇: 澳洲中产收入水平[转]