磁盤的IO重排序與調(diào)度策略
萬芝堂是百年老字號(hào)了,主營(yíng)中草藥,并兼老中醫(yī)出診。雖然萬芝堂有近百年的歷史,但活動(dòng)范圍僅限北京城,即使在北京城也僅有2個(gè)分號(hào)。最近萬芝堂換了新掌柜的。新掌柜新官上任三把火,不僅在北京增加了分號(hào)數(shù)量,在保定府也開了好幾家分號(hào)。

圖1 總號(hào)與分號(hào)
保定府本身也比較大,分號(hào)開了5家,具體的在各大街區(qū)基本都有,繁華街區(qū)開了3家。這樣也符合供求關(guān)系的規(guī)則,畢竟繁華街區(qū)人多,需要草藥的人也會(huì)多一些。

圖2 保定府分號(hào)
分號(hào)多了,管理的難度就上來了。首先要考慮的是草藥質(zhì)量的問題。如果各個(gè)分號(hào)各自負(fù)責(zé)采購,藥品質(zhì)量很難保證質(zhì)量。況且還有很多是秘方藥,不可能在分號(hào)生產(chǎn)。思來想去,只能在總號(hào)生產(chǎn),然后通過鏢局分發(fā)到各個(gè)分號(hào)。由于實(shí)際情況不同,各個(gè)分號(hào)需要補(bǔ)充的草藥類型可能是不同的。具體方法是分號(hào)提供草藥的類型和數(shù)量,總號(hào)統(tǒng)一分發(fā)。
策略確定好了,生意也就這么運(yùn)行了。萬芝堂就找了本地一家比較有名的鏢局---會(huì)友鏢局。比較草藥這東西事關(guān)人命,不能不重視,找一個(gè)好點(diǎn)的鏢局還能放心一些,免得有些小鏢局掉包。
很快,保定府的分號(hào)1通過飛鴿傳書要求發(fā)一批保命丸。總號(hào)收到消息馬上與會(huì)友鏢局聯(lián)系,安排發(fā)貨。鏢局的人剛把貨送到保定分號(hào)1,還沒喘口氣,又來新單子了。萬芝堂又要向保定府分號(hào)2發(fā)一批狗皮膏藥。會(huì)友鏢局的人馬不停蹄的將藥運(yùn)到了保定府分號(hào)2。回來不久,飯還沒顧上吃一口,萬芝堂又要發(fā)送一箱麻沸散到保定府分號(hào)3。

圖3 傻干活
IO的蓄流和泄流
大當(dāng)家的感覺心力交瘁,渾身乏力啊。雖然錢是給夠了,這么天天溜也不是個(gè)事啊。于是大當(dāng)家叫上二當(dāng)家和三當(dāng)家一塊商量一下對(duì)策。
三當(dāng)家若有所思的說:“既然萬芝堂生意這么火,那我們何不把草藥先放到鏢局。在鏢局壓兩三天,如果有新的貨物要送,我們就一起送過去,要是沒有,那我們?cè)偎鸵膊贿t。”(注:這就是磁盤驅(qū)動(dòng)中的蓄流/泄流,也就是IO不會(huì)馬上發(fā)送給驅(qū)動(dòng),而是攢一批再發(fā)送)
其他當(dāng)家的覺得此計(jì)甚好,于是大家一拍即合。
沒過兩天,萬芝堂又要給保定府的分號(hào)1送一批大力丸。鏢局將大力丸收下,但并沒有安排馬上送貨。果然,第二天萬芝堂有送過來一批狗皮膏藥,要送到分號(hào)5。又等了2天,不見萬芝堂來送貨,于是會(huì)友鏢局就押鏢送貨,將大力丸和狗皮膏藥一起送到了保定府,并依次送到了分號(hào)1和分號(hào)5。

圖4 贊起來一起
IO重排序
萬芝堂的生意確實(shí)是好,會(huì)友鏢局押鏢的剛回來,萬芝堂又給送過來一批貨,而且這次貨物非常多。上面有個(gè)清單,萬芝堂交代依照清單送貨就行。清單是這么寫的:
分號(hào)1 -> 狗皮膏藥一箱
分號(hào)4 -> 大力丸一箱
分號(hào)2 -> 健骨粉兩箱
分號(hào)5 -> 保命丸一箱
分號(hào)3 -> 保命丸一箱
會(huì)友鏢局馬不停蹄的將貨物送到了保定府。由于長(zhǎng)途跋涉,大家實(shí)在太累了。于是大當(dāng)家的先讓大家找個(gè)客棧休息,明天再挨家送貨。
在休息的時(shí)候大當(dāng)家的想:“雖然這幾家都在保定府內(nèi),但保定府這么大,我要想想怎么送省力一些。”
大當(dāng)家的繼續(xù)想:“既然都已經(jīng)到保定了,也不差這一時(shí)半會(huì)兒了。那我就不安清單的順序送貨,我按整個(gè)路程送貨,怎么方便我就怎么來。”于是大當(dāng)家的將本來應(yīng)該由圖5左側(cè)的送貨路徑安排成了圖5右側(cè)的送貨順序。這樣,整個(gè)送貨的路徑減少了一大半。(注:這就是磁盤IO的重排序,盡量保證路徑最優(yōu),避免磁臂來回?cái)[動(dòng)的耗時(shí))

圖5 規(guī)劃路徑
隨著生意越做越多,會(huì)友鏢局的名聲也打出來了。除了萬芝堂,其它XX堂也都讓會(huì)友鏢局送貨。會(huì)友鏢局還是故技重施,所有貨物攢到一定量之后再發(fā)。
Deadline調(diào)度策略
有一天萬芝堂的掌柜的過來了,說:“大當(dāng)家的啊,你們這不靠譜啊。我這前幾天發(fā)的貨,怎么還沒送到啊。保定府那邊都發(fā)了兩個(gè)飛鴿傳書了。”
大當(dāng)家的賠笑道:“不好意思啊,佟掌柜,最近貨物實(shí)在太多,我也是沒辦法啊。”
經(jīng)過兩人的協(xié)商,最后萬芝堂的貨物送來后都要確定一個(gè)送到的時(shí)間,然后會(huì)友鏢局必須在規(guī)定時(shí)間內(nèi)送到。這樣,分號(hào)再也不會(huì)出現(xiàn)過了半個(gè)月還沒收到貨的情況。(注: 這就是磁盤的Deadline調(diào)度策略,保證IO能在規(guī)定時(shí)間內(nèi)完成)
CFQ調(diào)度策略
雖然其它XX堂也讓會(huì)友鏢局送貨,但他們的分號(hào)本來就少,而且有些并不在保定府。比如醫(yī)仁堂的分號(hào)在保定有一家,在太原有一家,而萬友堂的分號(hào)則在石家莊。以醫(yī)仁堂為例,他的貨物每次總是放好幾天,什么時(shí)候萬芝堂送貨的時(shí)候,會(huì)友鏢局才捎帶著將貨物一起送過去。因?yàn)閱为?dú)送醫(yī)仁堂的那點(diǎn)貨物實(shí)在是不劃算。
由于現(xiàn)在貨物多,押鏢的人有少,實(shí)在忙不過來。會(huì)友鏢局大部分貨物是送往保定的,太原等其它地方的貨物比較少。因此,鏢局大部分時(shí)間往返北京保定之間,太原的貨物總是很慢才能送到。這導(dǎo)致醫(yī)仁堂非常不滿意,于是醫(yī)仁堂的掌柜的去找大當(dāng)家的理論:“我們付的錢又不少,憑啥我們的貨物發(fā)送的總是這么慢.....”
雖然吵了一架,但大當(dāng)家還是一個(gè)比較好的CEO,他反思到:“顧客就是上帝,確實(shí)不應(yīng)該這樣。我們應(yīng)該保證每一個(gè)客戶的滿意,不能只顧大客戶啊!”
于是大當(dāng)家的制定了一個(gè)策略,要求大家發(fā)貨的時(shí)候盡量保證每個(gè)客戶的貨物都能盡量公平的發(fā)送出去。即使是小客戶貨物少,也不能不發(fā)。(注: 這就是磁盤的CFQ調(diào)度策略,它保證各個(gè)進(jìn)程盡量公平)
各種制度不斷完善,鏢局的生意也越來越好了。