噜噜噜综合,又色又爽又高潮免费观看,综合无码一区二区三区四区五区,中文字幕无码人妻aaa片,四虎成人精品永久网站

IO模式-你不能忽視的細(xì)節(jié)

存儲(chǔ)在線編譯文章:就像在一個(gè)小黑屋里面相隔50步遠(yuǎn)的兩個(gè)擊劍手,用戶和廠商都堅(jiān)持自己刺出的是正確的方向。你是否向廠商要求可以匹配你應(yīng)用程序的設(shè)置的基準(zhǔn)測(cè)試?廠商測(cè)試中的存儲(chǔ)解決方案的測(cè)試是否是基于你所將購(gòu)買的設(shè)置的基礎(chǔ)上的?

唯一能確保用戶和廠商不會(huì)雞同鴨講的方法就是了解你的應(yīng)用程序的IO模式。

了解你的IO模式

在我的前一篇文章中,我談到了一個(gè)新的基準(zhǔn)測(cè)試現(xiàn)實(shí),即基準(zhǔn)測(cè)試應(yīng)該包含驅(qū)動(dòng)器重建期間的性能并應(yīng)該報(bào)告驅(qū)動(dòng)器在負(fù)荷下重建結(jié)束的時(shí)間。我在那篇文章中評(píng)論道:“做一個(gè)補(bǔ)充說明,客戶很經(jīng)常要求一個(gè)不匹配他們IO模式的設(shè)置,而他們這么做的原因可能僅僅是因?yàn)樾〉老?,或可能是因?yàn)橐獙?shí)際描述他們應(yīng)用程序的IO模式很復(fù)雜。”我想在本篇文章中談到這個(gè)聲明是因?yàn)槿藗兘?jīng)常忘記的一個(gè)非常非常重要的概念–了解你的應(yīng)用程序的IO模式。

讓我們來進(jìn)行一個(gè)簡(jiǎn)單的試驗(yàn)。寫下你系統(tǒng)上前三個(gè)應(yīng)用程序。這些應(yīng)用程序可以是最耗CPU時(shí)間或最經(jīng)常運(yùn)行或使用最多數(shù)據(jù)的或看起來最I(lǐng)O密集型的應(yīng)用程序,甚至可以是運(yùn)行得最慢的程序。你可以想想這些應(yīng)用程序是如何進(jìn)行IO的,然后寫下你認(rèn)為的IO模式。

其實(shí)這并不容易,不是嗎?相信還是不相信,甚至應(yīng)用程序開發(fā)人員都很難跟你講清楚他們的應(yīng)用程序是如何進(jìn)行IO的。

開發(fā)人員所能告訴你的就是在應(yīng)用程序執(zhí)行期間的哪些點(diǎn)上會(huì)進(jìn)行IO。他們有時(shí)會(huì)告訴你IO功能所使用的語(yǔ)言(比如,C和C++語(yǔ)言下的fwrite()、fread()、write()、read())他們經(jīng)常關(guān)注的是算法本身而不是數(shù)據(jù)是如何進(jìn)出存儲(chǔ)的。

當(dāng)然,我并不是真的怪他們,因?yàn)槿绻蛔⒁馑麄兊膽?yīng)用程序的IO模式的話,算法是很難設(shè)計(jì)的。不過,這也意味著要設(shè)計(jì)一個(gè)完全滿足應(yīng)用程序IO需求的存儲(chǔ)系統(tǒng)幾乎是不可能的。這就好像你到一家鞋店去想買10號(hào)網(wǎng)球鞋,結(jié)果出來的時(shí)候卻穿著15號(hào)的拖鞋和一雙黃襪子。隨著數(shù)據(jù)增長(zhǎng)速度的加快,這種情況越普遍。

如果你可以描述和演示你的應(yīng)用程序的IO模式,那你就是我知道的少數(shù)可以做到的人之一。請(qǐng)公開一下你的結(jié)果和你所使用的流程,幫助其他人做這事。但是對(duì)于世界上其他的99.9%的我們來說,描述IO模式是非常難的。作為開始,讓我們先使用一些典型的指標(biāo)來描述IO模式。

從開始線開始

關(guān)于你的應(yīng)用程序的IO模式,你能回答的最基本的問題是“IO是不是在運(yùn)行時(shí)間中占很大比例?”換句話說,“IO是不是很重要?”

無論信與不信,這個(gè)問題也不是那么容易回答的。你必須能夠衡量進(jìn)行IO所花費(fèi)的時(shí)間,同時(shí)還要不影響應(yīng)用程序的總體運(yùn)行時(shí)間。不過對(duì)許多應(yīng)用程序來說,有一個(gè)簡(jiǎn)單的辦法–Strace。

Strace是*nix類(Linux、Unix等)操作系統(tǒng)的系統(tǒng)跟蹤工具。它可以跟蹤系統(tǒng)調(diào)用并可以產(chǎn)生許多信息,比如完成狀態(tài)(進(jìn)程是否完成?),系統(tǒng)調(diào)用的參數(shù),完成系統(tǒng)調(diào)用所花的時(shí)間,以及在讀取和寫入情況下,函數(shù)的成功狀態(tài)(有多少數(shù)據(jù)被實(shí)際寫入或讀?。浚?。通過這些信息和一些工作,你可以檢驗(yàn)應(yīng)用程序的IO模式。

實(shí)際上,所有的IO都是通過系統(tǒng)函數(shù)調(diào)用來完成的,因此Strace應(yīng)該可以捕捉許多IO信息。

一個(gè)提醒–如果應(yīng)用程序在進(jìn)行mmap IO而實(shí)際沒有使用系統(tǒng)IO函數(shù),那么strace就幫不了你。但是如果你在使用mmap IO,那么你會(huì)有其他問題,因此這種情況下了解IO模式可能不是那么著急的事情。

Strace信息可以讓你從應(yīng)用程序的角度來理解IO要求。它會(huì)告訴你應(yīng)用程序向操作系統(tǒng)要求的系統(tǒng)函數(shù)調(diào)用,包括IO函數(shù)。換句話說,也就是應(yīng)用程序在系統(tǒng)上進(jìn)行的IO。數(shù)據(jù)要實(shí)際進(jìn)入存儲(chǔ)媒介還要經(jīng)過好幾個(gè)層,但是這是操作系統(tǒng)內(nèi)部的事情,不是應(yīng)用程序函數(shù)內(nèi)的事情。

下面是一個(gè)寫入一些數(shù)據(jù)結(jié)構(gòu)的Strace輸出的簡(jiǎn)單例子。

1373231279.242784 write(3, "1