安全、誠(chéng)信、可靠、信心
濟(jì)南市山大路157號(hào)華強(qiáng)電子世界三樓Q3059,Q3060室
當(dāng)您正在監(jiān)視磁盤 I/O 時(shí),請(qǐng)使用以下內(nèi)容來(lái)確定您的操作過(guò)程:
查找最活躍的文件、文件系統(tǒng)和邏輯卷:
“熱”文件系統(tǒng)定位在一個(gè)物理驅(qū)動(dòng)器上好還是分散在多個(gè)物理驅(qū)動(dòng)器上好?(lslv、iostat、filemon)
“熱”文件是本地的還是遠(yuǎn)程的?(filemon)
調(diào)頁(yè)空間是否支配磁盤應(yīng)用?(vmstat、filemon)
是否有足夠的內(nèi)存來(lái)高速緩存那些由正在運(yùn)行進(jìn)程使用的文件頁(yè)面?(vmstat、svmon)
應(yīng)用程序是否執(zhí)行許多同步(非高速緩存)的文件 I/O?
確定文件碎片:
“熱”文件是否嚴(yán)重碎裂?(fileplace)
查找使用率最高的物理卷:
驅(qū)動(dòng)器或 I/O 適配器類型是否產(chǎn)生瓶頸?(iostat、filemon)
在您對(duì)磁盤配置或調(diào)整參數(shù)做出重要改動(dòng)之前,構(gòu)建一條評(píng)估基線來(lái)記錄當(dāng)前的配置和性能是一個(gè)不錯(cuò)的主意。
AIX 4.3.3 及后續(xù)版本包含了用來(lái)計(jì)算 CPU 在等待磁盤 I/O(wio time)時(shí)花費(fèi)時(shí)間所占百分比這個(gè)方法的增強(qiáng)。這個(gè)方法在 AIX 4.3.2 及較早版本的操作系統(tǒng)中使用,操作系統(tǒng)可以在某些環(huán)境下在 SMP 上給出一個(gè)擴(kuò)大的 wio 時(shí)間視圖。這個(gè) wio 時(shí)間是由命令 sar(%wio)、vmstat(wa)和 iostat(% iowait)報(bào)告的。
另一個(gè)變化是 wa 列詳述了 CPU 閑置在本地和 NFS 安裝的磁盤上暫掛磁盤 I/O 的時(shí)間百分比。
在每個(gè)處理器上的每個(gè)時(shí)鐘中斷(每處理器每秒 100 次)時(shí),系統(tǒng)將決定四個(gè)類別(usr/sys/wio/idle)中的哪一個(gè)可以使用最后的 10ms 時(shí)間。如果時(shí)鐘中斷發(fā)生時(shí) CPU 繁忙運(yùn)行于 usr 方式,那么 usr 獲取時(shí)鐘滴答并添加到它的類別中。如果時(shí)鐘中斷發(fā)生時(shí) CPU 繁忙運(yùn)行于內(nèi)核方式,那么 sys 類別獲取時(shí)鐘滴答。如果 CPU 不繁忙,系統(tǒng)將檢查是否有任何磁盤 I/O 正在處理。如果有任何磁盤 I/O 正在處理,wio 類別將會(huì)遞增。如果沒(méi)有磁盤 I/O 正在處理中并且 CPU 不繁忙,那么 idle 類別獲取滴答。
這個(gè)擴(kuò)大的 wio 時(shí)間視圖是由所有空閑 CPU 被分類為 wio 時(shí)間而不管等待 I/O 的線程而產(chǎn)生的。例如,只有一個(gè)線程運(yùn)行 I/O 的系統(tǒng)會(huì)報(bào)告超過(guò) 90% 的 wio 時(shí)間而不管它擁有的 CPU 數(shù)目。
在 AIX 4.3.3 中的改變只是在有一個(gè)尚未完成的 I/O 已在 CPU 上啟動(dòng)的情況下把此空閑 CPU 標(biāo)記為 wio。當(dāng)只有幾個(gè)線程在處理 I/O 并且系統(tǒng)除此之外處于空閑狀態(tài)時(shí),此方法可以報(bào)告更少的次數(shù)。例如,一個(gè)具有四個(gè)處理器的系統(tǒng)和一個(gè)正在處理 I/O 時(shí)將會(huì)最多報(bào)告 25% 的 wio 時(shí)間。一個(gè)具有 12 個(gè)處理器的系統(tǒng)和一個(gè)正在處理 I/O 的線程將會(huì)最多報(bào)告 8.3% 的 wio 時(shí)間。
同樣,從 AIX 4.3.3 開(kāi)始,系統(tǒng)將把等待 I/O 到 NFS 安裝文件系統(tǒng)的時(shí)間報(bào)告為等待 I/O 時(shí)間。
在您的系統(tǒng)處于工作負(fù)載高峰時(shí)期或者運(yùn)行一個(gè)關(guān)鍵應(yīng)用程序用來(lái)最小化 I/O 延遲時(shí),運(yùn)行帶一個(gè)間隔時(shí)間參數(shù)的 iostat 命令來(lái)開(kāi)始評(píng)估。以下 shell 腳本在后臺(tái)運(yùn)行 iostat 命令時(shí),前臺(tái)有一個(gè)大文件的副本在運(yùn)行以便可以測(cè)量一些 I/O:
# iostat 5 3 >io.out & # cp big1 /dev/null
這個(gè)示例把下面三份報(bào)告保存在 io.out 文件中:tty: tin tout avg-cpu: % user % sys % idle % iowait 0.0 1.3 0.2 0.6 98.9 0.3 Disks: % tm_act Kbps tps Kb_read Kb_wrtn hdisk0 0.0 0.3 0.0 29753 48076 hdisk1 0.1 0.1 0.0 11971 26460 hdisk2 0.2 0.8 0.1 91200 108355 cd0 0.0 0.0 0.0 0 0 tty: tin tout avg-cpu: % user % sys % idle % iowait 0.8 0.8 0.6 9.7 50.2 39.5 Disks: % tm_act Kbps tps Kb_read Kb_wrtn hdisk0 47.0 674.6 21.8 3376 24 hdisk1 1.2 2.4 0.6 0 12 hdisk2 4.0 7.9 1.8 8 32 cd0 0.0 0.0 0.0 0 0 tty: tin tout avg-cpu: % user % sys % idle % iowait 2.0 2.0 0.2 1.8 93.4 4.6 Disks: % tm_act Kbps tps Kb_read Kb_wrtn hdisk0 0.0 0.0 0.0 0 0 hdisk1 0.0 0.0 0.0 0 0 hdisk2 4.8 12.8 3.2 64 0 cd0 0.0 0.0 0.0 0 0
第一份報(bào)告是自最近一次重新引導(dǎo)以來(lái)的摘要并且顯示了每個(gè)硬盤 I/O 的總體平衡(或者在這種情況下叫不平衡)。hdisk1 幾乎空閑,hdisk2 接受大約全部 I/O 的 63%(從 Kb_read 和 Kb_wrtn )。
自引導(dǎo)以來(lái)的磁盤歷史記錄不可用。
間隔時(shí)間磁盤 I/O 統(tǒng)計(jì)信息不會(huì)受此影響。
第二個(gè)報(bào)告顯示了 cp 運(yùn)行的 5 秒間隔時(shí)間。仔細(xì)檢查這一信息。這一 cp 的使用時(shí)間大約 2.6 秒。因此,2.5 秒的高 I/O 相關(guān)性要和 2.5 秒的空閑時(shí)間相平均以便輸出 39.5% 的 % iowait。一個(gè)較短的時(shí)間間隔能提供一個(gè)有關(guān)命令本身更加詳細(xì)的特征化信息,但是這個(gè)示例演示了當(dāng)您在查看有關(guān)顯示在時(shí)間間隔中的平均活動(dòng)信息的報(bào)告時(shí),您必須考慮的事情。
有關(guān) TTY 的兩列信息(tin 和 tou)包含于 iostat命令的輸出結(jié)果中,顯示了由所有 TTY 設(shè)備讀寫的字符數(shù)。這包含了真實(shí)的和偽的 TTY 設(shè)備。真實(shí)的 TTY 設(shè)備是那些和異步端口連接的設(shè)備。一些偽 TTY 設(shè)備是 shell,telnet 會(huì)話和 aixterm 窗口。
由于處理輸入輸出的字符要消耗 CPU 的資源,請(qǐng)找出增加的 TTY 活動(dòng)和 CPU 利用之間的相關(guān)性。如果有這種關(guān)系存在,評(píng)估它們并改進(jìn) TTY 子系統(tǒng)的性能??梢圆捎玫牟襟E包括更改應(yīng)用程序,在文件傳送時(shí)修改 TTY 端口參數(shù),或者可能的話升級(jí)至一個(gè)更快、更有效的異步通信適配器。
CPU 統(tǒng)計(jì)信息列(% user、% sys、% idle 和 % iowait)提供了 CPU 的使用故障。該信息也在 vmstat 命令輸出的標(biāo)號(hào)為 us、sy、id 和 wa 的各列中報(bào)告。要獲得各值的更為詳細(xì)的解釋,請(qǐng)參閱『vmstat 命令』。并且注意對(duì)『I/O 等待時(shí)間報(bào)告』中描述的 % iowait 所做的更改。
在運(yùn)行一個(gè)應(yīng)用程序的系統(tǒng)上,I/O 等待時(shí)間的高百分比可能與工作負(fù)載有關(guān)。在具有很多進(jìn)程的系統(tǒng)上,一些可能在運(yùn)行,而另一些在等待 I/O。在這種情況下,% iowait 可能很小或者為零,因?yàn)檎谶\(yùn)行的進(jìn)程“隱藏”了一些等待時(shí)間。盡管 % iowait 低了, 但瓶頸仍可以限制應(yīng)用程序的性能。
如果 iostat 命令表明 CPU 受限的情況不存在,并且 % iowait 時(shí)間大于 20%,則可能出現(xiàn) I/O 或磁盤受限情況。這一情況可能在缺少實(shí)內(nèi)存的情況下由過(guò)多調(diào)頁(yè)產(chǎn)生。也有可能是由于不平衡的磁盤負(fù)載、碎片數(shù)據(jù)或應(yīng)用模式而產(chǎn)生。對(duì)一個(gè)不平衡的磁盤負(fù)載來(lái)說(shuō),同樣的 iostat 報(bào)告提供了必要的信息。但是有關(guān)文件系統(tǒng)或邏輯卷,即邏輯資源來(lái)說(shuō),您必須使用諸如 filemon 或者 fileplace 命令之類的工具來(lái)獲取信息。
當(dāng)您懷疑有磁盤 I/O 性能問(wèn)題時(shí),使用 iostat 命令。為了避免 TTY 信息和 CPU 統(tǒng)計(jì)信息,使用 -d 選項(xiàng)。此外,磁盤統(tǒng)計(jì)信息可以通過(guò)指定磁盤名稱來(lái)限定用某些重要的磁盤。
請(qǐng)記住第一個(gè)數(shù)據(jù)集合代表自系統(tǒng)啟動(dòng)以來(lái)所有的活動(dòng)。
磁盤:
顯示了物理卷的名稱。他們或是 hdisk 或是 cd,并且這些名稱都跟有一個(gè)數(shù)字。如果物理卷的名稱由 iostat 命令指定,那么只有指定那些名稱時(shí)才顯示。
% tm_act
指示物理磁盤活動(dòng)所占總時(shí)間的百分比(磁盤的帶寬利用率),或者換句話說(shuō),磁盤請(qǐng)求的總時(shí)間未達(dá)到。驅(qū)動(dòng)器在數(shù)據(jù)傳送和處理命令時(shí)是活動(dòng)的,例如尋道至新的位置。“磁盤活動(dòng)時(shí)間”百分比正比于資源爭(zhēng)用,反比于性能。當(dāng)磁盤使用率增加時(shí),性能就下降并且響應(yīng)時(shí)間就增加。一般來(lái)說(shuō),當(dāng)利用率超過(guò) 70% 時(shí),進(jìn)程將等待的時(shí)間會(huì)比完成 I/O 所必需的時(shí)間更長(zhǎng),因?yàn)榇蠖鄶?shù) UNIX? 進(jìn)程在等待它們的 I/O 請(qǐng)求完成時(shí)會(huì)阻塞(或休眠)。查找相對(duì)空閑驅(qū)動(dòng)器來(lái)說(shuō)繁忙的驅(qū)動(dòng)器。把數(shù)據(jù)從繁忙的驅(qū)動(dòng)器中移到空閑驅(qū)動(dòng)器里可以幫助減輕磁盤的瓶頸。在磁盤中調(diào)入調(diào)出頁(yè)面會(huì)使 I/O 負(fù)載增加。
Kbps
指示了每秒鐘多少 KB 的數(shù)據(jù)被傳送(讀或?qū)懀?。這是在系統(tǒng)報(bào)告時(shí)間間隔內(nèi) Kb_read 加上 Kb_wrtn 的總和并除以的這段時(shí)間間隔的總數(shù)的結(jié)果。
tps
指示了每秒鐘物理磁盤傳送的次數(shù)。一次傳送是設(shè)備驅(qū)動(dòng)程序級(jí)別到物理磁盤的一次 I/O 處理請(qǐng)求。多重邏輯請(qǐng)求可以組合成單一的磁盤 I/O 請(qǐng)求。傳送的大小是不確定的。
Kb_read
報(bào)告了在測(cè)量間隔中總的從物理卷中讀取的數(shù)據(jù)量(以 KB 為單位)。
Kb_wrtn
顯示了在測(cè)量間隔中總的寫入物理卷中的數(shù)據(jù)量(以 KB 為單位)。
單獨(dú)來(lái)說(shuō),上述字段沒(méi)有不可以接受的值,因?yàn)榻y(tǒng)計(jì)信息與應(yīng)用程序的特征、系統(tǒng)配置以及物理磁盤驅(qū)動(dòng)器和適配器有著密切的關(guān)系。因此,當(dāng)您在評(píng)估數(shù)據(jù)時(shí),請(qǐng)查找相關(guān)模式和關(guān)系。最公共的關(guān)系是在磁盤利用情況(%tm_act)和數(shù)據(jù)傳送率(tps)之間的關(guān)系。
為了從數(shù)據(jù)中得出任何有效的結(jié)論,您必須不僅理解系統(tǒng)物理磁盤驅(qū)動(dòng)器與適配器的類型而且要理解應(yīng)用程序的磁盤數(shù)據(jù)存取模式諸如順序的、隨機(jī)的或組合的模式。例如,如果應(yīng)用程序順序地讀/寫,當(dāng)您擁有一個(gè)高的磁盤繁忙率(%tm_act)時(shí),您可以獲得一個(gè)高的磁盤傳送速率(Kbps)。Kb_read 和 Kb_wrtn 列可以證實(shí)對(duì)應(yīng)用程序讀/寫行為的理解。然而,這些列沒(méi)有提供有關(guān)數(shù)據(jù)存取模式的信息。
一般來(lái)說(shuō),您不必考慮高的磁盤繁忙率(%tm_act)只要磁盤傳送率(Kbps)同樣很高。然而,如果您得到一個(gè)高的系統(tǒng)繁忙率和一個(gè)低的磁盤傳送率,那么您可能有一個(gè)碎裂的邏輯卷、文件系統(tǒng)或單個(gè)文件。
有關(guān)磁盤、邏輯卷和文件系統(tǒng)性能的討論,有時(shí)候可以得出這樣一個(gè)結(jié)論:您的系統(tǒng)擁有的驅(qū)動(dòng)器越多,您的磁盤 I/O 性能就越好。但這并不總是正確,因?yàn)閱蝹€(gè)磁盤適配器能處理的數(shù)據(jù)量是有限制的。磁盤適配器也可能成為一個(gè)瓶頸。如果您所有的磁盤驅(qū)動(dòng)器都在一個(gè)磁盤適配器上,并且您的那些經(jīng)常處理的“熱點(diǎn)”文件分散在各個(gè)物理卷上,您可能通過(guò)使用多重磁盤適配器來(lái)獲得效益。性能的提高取決于數(shù)據(jù)存取的類型。
要想知道某個(gè)適配器是否飽和,使用 iostat 命令并且把所有連接到這個(gè)適配器上的磁盤的 Kbps 數(shù)量加起來(lái)。為了獲得最大的聚集性能,總的傳送率(Kbps)必須在磁盤適配器的吞吐量之下。在大多數(shù)情況下,使用 70% 的吞吐量。在 4.3.3 以后的操作系統(tǒng)版本中 -a 或 -A 選項(xiàng)會(huì)顯示這些信息。
為了證實(shí)系統(tǒng)是 I/O 綁定,您最好使用 iostat 命令。不管怎樣,這個(gè) vmstat 命令可以通過(guò)參閱 wa 列,就如在『vmstat 命令』中討論的那樣。其他關(guān)于 I/O 綁定的指示符是:
vmstat 輸出中關(guān)于磁盤 xfer 部分
為了顯示有關(guān)邏輯磁盤的統(tǒng)計(jì)信息(最大允許 4 個(gè)磁盤),請(qǐng)使用下列命令:
# vmstat hdisk0 hdisk1 1 8 kthr memory page faults cpu disk xfer---- ---------- ----------------------- ------------ ----------- ------r b avm fre re pi po fr sr cy in sy cs us sy id wa 1 2 3 40 0 3456 27743 0 0 0 0 0 0 131 149 28 0 1 99 0 0 00 0 3456 27743 0 0 0 0 0 0 131 77 30 0 1 99 0 0 01 0 3498 27152 0 0 0 0 0 0 153 1088 35 1 10 87 2 0 110 1 3499 26543 0 0 0 0 0 0 199 1530 38 1 19 0 80 0 590 1 3499 25406 0 0 0 0 0 0 187 2472 38 2 26 0 72 0 530 0 3456 24329 0 0 0 0 0 0 178 1301 37 2 12 20 66 0 420 0 3456 24329 0 0 0 0 0 0 124 58 19 0 0 99 0 0 00 0 3456 24329 0 0 0 0 0 0 123 58 23 0 0 99 0 0 0
這個(gè)磁盤 xfer 部分提供了發(fā)生在樣本時(shí)間間隔內(nèi)每秒向特定的物理卷傳送的次數(shù)。您可以指定一至四個(gè)物理卷的名稱。每一個(gè)指定的磁盤的傳送統(tǒng)計(jì)信息將按照指定的順序依次給出。這一統(tǒng)計(jì)數(shù)據(jù)代表了對(duì)物理設(shè)備的請(qǐng)求次數(shù)。但并不意味讀取或?qū)懭氲臄?shù)據(jù)量。許多邏輯請(qǐng)求可以組合成一次物理請(qǐng)求。
這個(gè)由 vmstat 命令輸出的 in 列
這列顯示了在評(píng)估間隔中(每秒)發(fā)生的硬件或設(shè)備中斷的次數(shù)。中斷的示例為磁盤請(qǐng)求完成和 10 毫秒的時(shí)鐘中斷。既然后者每秒發(fā)生 100 次,那么 in 這個(gè)字段就總是大于 100。但是 vmstat 命令同樣提供了詳細(xì)的有關(guān)系統(tǒng)中斷的信息。
vmstat -i 輸出
這個(gè) -i 參數(shù)顯示了自系統(tǒng)啟動(dòng)以來(lái)被每個(gè)設(shè)備中斷的次數(shù)。但是如果增加間隔(可選)和計(jì)數(shù)參數(shù),自啟動(dòng)以來(lái)的統(tǒng)計(jì)信息只是在第一節(jié)中顯示;每個(gè)后綴節(jié)是有關(guān)被掃描間隔的統(tǒng)計(jì)信息。
# vmstat -i 1 2 priority level type count module(handler) 0 0 hardware 0 i_misc_pwr(a868c) 0 1 hardware 0 i_scu(a8680) 0 2 hardware 0 i_epow(954e0) 0 2 hardware 0 /etc/drivers/ascsiddpin(189acd4) 1 2 hardware 194 /etc/drivers/rsdd(1941354) 3 10 hardware 10589024 /etc/drivers/mpsdd(1977a88) 3 14 hardware 101947 /etc/drivers/ascsiddpin(189ab8c) 5 62 hardware 61336129 clock(952c4) 10 63 hardware 13769 i_softoff(9527c) priority level type count module(handler) 0 0 hardware 0 i_misc_pwr(a868c) 0 1 hardware 0 i_scu(a8680) 0 2 hardware 0 i_epow(954e0) 0 2 hardware 0 /etc/drivers/ascsiddpin(189acd4) 1 2 hardware 0 /etc/drivers/rsdd(1941354) 3 10 hardware 25 /etc/drivers/mpsdd(1977a88) 3 14 hardware 0 /etc/drivers/ascsiddpin(189ab8c) 5 62 hardware 105 clock(952c4) 10 63 hardware 0 i_softoff(9527c)
sar 命令是用來(lái)收集關(guān)于系統(tǒng)的統(tǒng)計(jì)數(shù)據(jù)的標(biāo)準(zhǔn) UNIX 命令。通過(guò)它的許多選項(xiàng),sar 命令提供了排隊(duì)、頁(yè)面調(diào)度、TTY 和許多其他的統(tǒng)計(jì)信息。使用 AIX 4.3.3,sar -d 選項(xiàng)產(chǎn)生實(shí)時(shí)的磁盤 I/O 統(tǒng)計(jì)信息。
# sar -d 3 3 AIX konark 3 4 0002506F4C00 08/26/99 12:09:50 device %busy avque r+w/s blks/s avwait avserv 12:09:53 hdisk0 1 0.0 0 5 0.0 0.0 hdisk1 0 0.0 0 1 0.0 0.0 cd0 0 0.0 0 0 0.0 0.0 12:09:56 hdisk0 0 0.0 0 0 0.0 0.0 hdisk1 0 0.0 0 1 0.0 0.0 cd0 0 0.0 0 0 0.0 0.0 12:09:59 hdisk0 1 0.0 1 4 0.0 0.0 hdisk1 0 0.0 0 1 0.0 0.0 cd0 0 0.0 0 0 0.0 0.0 Average hdisk0 0 0.0 0 3 0.0 0.0 hdisk1 0 0.0 0 1 0.0 0.0 cd0 0 0.0 0 0 0.0 0.0
sar -d 命令將列出以下字段:
%busy
服務(wù)于傳送請(qǐng)求時(shí),時(shí)間設(shè)備繁忙的那部分。這是同 %tm_act 列在 iostat 命令中所報(bào)告的一樣。
avque
那段時(shí)間內(nèi)所有從適配器到設(shè)備的未完成請(qǐng)求的平均數(shù)??赡苡懈郊拥?I/O 操作在設(shè)備驅(qū)動(dòng)程序隊(duì)列中。如果存在一個(gè)瓶頸,這個(gè)數(shù)字將是一個(gè)很好的指示符。
r+w/s
進(jìn)出設(shè)備的讀/寫傳送次數(shù)。這是同 tps 在 iostat 命令中報(bào)告的一樣。
blks/s
以 512 字節(jié)為單元傳送的字節(jié)數(shù)
avwait
事物等候服務(wù)的平均次數(shù)(隊(duì)列長(zhǎng)度)。傳送請(qǐng)求在隊(duì)列中空等設(shè)備的平均時(shí)間(以毫秒為單位)。這個(gè)數(shù)字目前沒(méi)有被報(bào)告,它的缺省值顯示為 0.0。
avserv
平均每次搜索的毫秒數(shù)。設(shè)備服務(wù)每次傳送請(qǐng)求的平均時(shí)間(包括搜索時(shí)間、轉(zhuǎn)動(dòng)等待時(shí)間和數(shù)據(jù)傳送時(shí)間)(以毫秒為單位)。這個(gè)數(shù)字目前沒(méi)有被報(bào)告,它的缺省值顯示為 0.0。
lslv 命令在其他信息中顯示了邏輯卷的碎片情況。要檢查邏輯卷碎片情況,請(qǐng)使用 lslv -l lvname 命令,如下:
# lslv -l hd2 hd2:/usr PV COPIES IN BAND DISTRIBUTION hdisk0 114:000:000 22% 000:042:026:000:046
COPIES 的輸出顯示了邏輯卷 hd2 只復(fù)制了一份。IN BAND 顯示了內(nèi)策略(一個(gè)邏輯卷的屬性)是如何遵循的。這個(gè)百分比越高,分配效率就越好。每個(gè)邏輯卷都有自己的內(nèi)策略。如果操作系統(tǒng)不能滿足要求,那么它選擇最佳路徑取盡量滿足要求。在我們的示例中,有總共 144 個(gè)邏輯分區(qū)(LP);42 LP 位于中部,26 LP 位于中心,還有 46 LP 在內(nèi)緣。策略位于中心,in-band 將占 22%(26 /(42+26+46))。DISTRIBUTION 顯示了物理分區(qū)是如何根據(jù)內(nèi)策略部署的,它們是:
edge : middle : center : inner-middle : inner-edge
參閱『物理卷的位置』來(lái)獲取更多有關(guān)物理分區(qū)的布局信息。
如果負(fù)載顯示與 I/O 有很強(qiáng)的相關(guān)性,您可以在磁盤中調(diào)查文件的物理布局情況,以確定重組在一定的級(jí)別上是否會(huì)阻礙改進(jìn)。要參閱物理卷中邏輯卷 hd11 的分區(qū)布局情況,請(qǐng)使用下列命令:
# lslv -p hdisk0 hd11 hdisk0:hd11:/home/op USED USED USED USED USED USED USED USED USED USED 1-10 USED USED USED USED USED USED USED 11-17 USED USED USED USED USED USED USED USED USED USED 18-27 USED USED USED USED USED USED USED 28-34 USED USED USED USED USED USED USED USED USED USED 35-44 USED USED USED USED USED USED 45-50 USED USED USED USED USED USED USED USED USED USED 51-60 0052 0053 0054 0055 0056 0057 0058 61-67 0059 0060 0061 0062 0063 0064 0065 0066 0067 0068 68-77 0069 0070 0071 0072 0073 0074 0075 78-84
用以下命令查找在 hdisk1 磁盤上 hd11 的空余部分:
# lslv -p hdisk1 hd11 hdisk1:hd11:/home/op 0035 0036 0037 0038 0039 0040 0041 0042 0043 0044 1-10 0045 0046 0047 0048 0049 0050 0051 11-17 USED USED USED USED USED USED USED USED USED USED 18-27 USED USED USED USED USED USED USED 28-34 USED USED USED USED USED USED USED USED USED USED 35-44 USED USED USED USED USED USED 45-50 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 51-60 0011 0012 0013 0014 0015 0016 0017 61-67 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 68-77 0028 0029 0030 0031 0032 0033 0034 78-84
從上到下,五塊各自代表了邊緣、中間、中心、內(nèi)中間和內(nèi)邊緣。
一個(gè) USED 標(biāo)志指示了此位置上的物理分區(qū)除了指定的邏輯卷外,正在被另一個(gè)邏輯卷使用。使用 lslv -p 命令后,數(shù)字指示了指定邏輯卷的邏輯分區(qū)數(shù)。
一個(gè) FREE 標(biāo)志指示了此位置上的物理分區(qū)沒(méi)有被任何邏輯卷使用。如果邏輯分區(qū)在磁盤上不連續(xù),將產(chǎn)生邏輯卷碎片。
一個(gè) STALE 物理分區(qū)里的數(shù)據(jù)您不能使用。您可以使用 lspv -m 命令參閱 STALE 物理分區(qū)。把物理分區(qū)標(biāo)為 STALE 必須包含和有效物理分區(qū)相同的信息。這個(gè)進(jìn)程可以被 syncvg 命令在 vary-on 時(shí)刻或是系統(tǒng)運(yùn)行的任何時(shí)刻再同步調(diào)用。直到這個(gè) STALE 分區(qū)被有效數(shù)據(jù)重寫,它們既不響應(yīng)讀請(qǐng)求也不響應(yīng)寫請(qǐng)求。
在前面的示例中,邏輯卷 hd11 在物理卷 hdisk1 中是碎片,它的第一個(gè)邏輯分區(qū)在 inner-middle 和 hdisk1 的內(nèi)部區(qū)域,而邏輯分區(qū) 35-51 在外部區(qū)域。如果一個(gè)負(fù)載隨機(jī)訪問(wèn) hd11,將會(huì)產(chǎn)生不必要的 I/O 等待時(shí)間,因?yàn)檫壿嬀?hd11 可能需要更長(zhǎng)的搜索時(shí)間。這些報(bào)告同樣指示在 hdisk0 或 hdisk1 中沒(méi)有空閑的物理分區(qū)。
要查看先前我們復(fù)制的文件 big1,是如何存儲(chǔ)在磁盤上的,我們可以使用 fileplace 命令。fileplace 命令顯示了在一個(gè)邏輯卷或多個(gè)物理卷中一個(gè)文件塊的布局情況。
要確認(rèn) fileplace 命令是否已安裝并且可用,您可以運(yùn)行如下命令:
# lslpp -lI perfagent.tools
使用如下命令:
# fileplace -pv big1 File: big1 Size: 3554273 bytes Vol: /dev/hd10 Blk Size: 4096 Frag Size: 4096 Nfrags: 868 Compress: no Inode: 19 Mode: -rwxr-xr-x Owner: hoetzel Group: system Physical Addresses (mirror copy 1) Logical Fragment ---------------------------------- ---------------- 0001584-0001591 hdisk0 8 frags 32768 Bytes, 0.9% 0001040-0001047 0001624-0001671 hdisk0 48 frags 196608 Bytes, 5.5% 0001080-0001127 0001728-0002539 hdisk0 812 frags 3325952 Bytes, 93.5% 0001184-0001995 868 frags over space of 956 frags: space efficiency = 90.8% 3 fragments out of 868 possible: sequentiality = 99.8%
這個(gè)示例顯示了在該文件中有很小的碎片,都是一下小的間隙。因此我們可以推斷 big1 的磁盤排列沒(méi)有在很大程度上影響順序讀取的時(shí)間。此外,如果一個(gè)(剛創(chuàng)建)的容量為 3.5 MB 的文件不幸遭遇這個(gè)小碎片,但文件系統(tǒng)總體上看起來(lái)并沒(méi)有產(chǎn)生嚴(yán)重的碎片。
偶然情況下,部分文件將不會(huì)映射到任何卷的塊中。這些區(qū)域?qū)㈦[式地被文件系統(tǒng)填充為零。這些區(qū)域顯示為 unallocated 邏輯塊。一個(gè)含有這些區(qū)域的文件將顯示比實(shí)際所占空間更大的字節(jié)數(shù)(即 ls -l 命令將顯示占較大的空間,而 du 命令將顯示占較小的空間或文件實(shí)際在磁盤上占有的塊數(shù))。
fileplace 命令從邏輯卷中讀取了文件的塊列表。如果文件是新建的,那么信息可能還沒(méi)有在磁盤上。使用 sync 命令來(lái)刷新信息。同樣,fileplace 命令將不會(huì)顯示 NFS 遠(yuǎn)程文件(除非該命令運(yùn)行在服務(wù)器上)。
較高的磁盤有效性是指文件碎裂情況較輕并且可以提供較好的順序文件訪問(wèn)。較高的順序性是指文件被分配的更加具有連續(xù)性,十分有可能提供較好的順序文件訪問(wèn)。
空間有效性 =
總的被用來(lái)存儲(chǔ)文件的存儲(chǔ)塊的數(shù)目 /
(最大的存儲(chǔ)塊物理地址 -
最小的存儲(chǔ)塊物理地址 + 1)
順序性 =
(總的存儲(chǔ)塊數(shù)目 -
存儲(chǔ)塊的分組數(shù)目 + 1)/
總的存儲(chǔ)塊數(shù)目
如果您發(fā)現(xiàn)順序性或空間有效性的值在下降,您可以使用 reorgvg 命令來(lái)改善邏輯卷的使用和有效性(參閱 『邏輯卷重組』)。要改善文件系統(tǒng)的使用和有效性,參閱『文件系統(tǒng)重組』。
在這個(gè)示例中,最大的存儲(chǔ)塊物理地址 - 最小的存儲(chǔ)塊物理地址 + 1 是:0002539 - 0001584 + 1 = 956存儲(chǔ)塊;總的被使用存儲(chǔ)塊是:8 + 48 + 812 = 868;空間有效性是 868 / 956(90.8%);順序性是(868 - 3 + 1)/ 868 = 99.8%。
由于總的用來(lái)存儲(chǔ)文件的存儲(chǔ)塊數(shù)目并不包含間接塊的位置,但物理地址包括,所以對(duì)大于 32 KB 的文件來(lái)說(shuō),空間有效性可能永遠(yuǎn)達(dá)不到 100%,即使該文件位于連續(xù)的存儲(chǔ)塊中。
調(diào)頁(yè)空間的 I/O 進(jìn)出是隨機(jī)的,大多數(shù)情況下一次一頁(yè)。vmstat 命令的報(bào)告指示正在進(jìn)行調(diào)頁(yè)空間 I/O 操作的數(shù)目。以下兩個(gè)示例顯示了發(fā)生在機(jī)器進(jìn)行 C 編譯時(shí)的調(diào)頁(yè)活動(dòng)被人工地使用 rmss 命令后縮小的情況。pi 和 po(paging-space page-ins 和 paging-space page-outs)列顯示了在 5 秒的間隔內(nèi)調(diào)頁(yè)空間進(jìn)行 I/O 操作的數(shù)目(按照一頁(yè) 4096字節(jié))。第一份報(bào)告(重新引導(dǎo)后的總結(jié))已被刪除。請(qǐng)注意那些在分段中產(chǎn)生的調(diào)頁(yè)活動(dòng)。
# vmstat 5 8 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 0 1 72379 434 0 0 0 0 2 0 376 192 478 9 3 87 1 0 1 72379 391 0 8 0 0 0 0 631 2967 775 10 1 83 6 0 1 72379 391 0 0 0 0 0 0 625 2672 790 5 3 92 0 0 1 72379 175 0 7 0 0 0 0 721 3215 868 8 4 72 16 2 1 71384 877 0 12 13 44 150 0 662 3049 853 7 12 40 41 0 2 71929 127 0 35 30 182 666 0 709 2838 977 15 13 0 71 0 1 71938 122 0 0 8 32 122 0 608 3332 787 10 4 75 11 0 1 71938 122 0 0 0 3 12 0 611 2834 733 5 3 75 17
以下的“前和后”vmstat -s 的報(bào)告顯示了調(diào)頁(yè)活動(dòng)的累計(jì)情況。請(qǐng)記住是 paging space page ins 和 paging space page outs 代表了真實(shí)的調(diào)頁(yè)空間 I/O。這個(gè)(未限定)的 page ins 和 page outs 報(bào)告了總的由調(diào)頁(yè)機(jī)制執(zhí)行的 I/O,即調(diào)頁(yè)空間 I/O 和普通文件 I/O。該報(bào)告已經(jīng)經(jīng)過(guò)編輯并且刪除了和本討論無(wú)關(guān)的信息。
# vmstat -s # before | # vmstat -s # after |
---|---|
6602 page ins 3948 page outs 544 paging space page ins 1923 paging space page outs 0 total reclaims | 7022 page ins 4146 page outs 689 paging space page ins 2032 paging space page outs 0 total reclaims |
事實(shí)上在編譯時(shí)產(chǎn)生比調(diào)頁(yè)空間 page-outs 更多的 page-ins 意味著系統(tǒng)性能已被降至顛簸的邊緣。有些頁(yè)面正在重新分配空間,因?yàn)樵谒鼈兺瓿烧{(diào)度前其幀已被其他所用。
剛剛討論過(guò)的技術(shù)也可以被用在訪問(wèn)由程序生成的磁盤 I/O 負(fù)載。如果除此之外系統(tǒng)空閑,以下序列:
# vmstat -s >statout # testpgm # sync # vmstat -s >> statout # egrep "ins|outs" statout
輸出一幅有關(guān)次磁盤活動(dòng)累計(jì)數(shù)的前后視圖。例如:
5698 page ins 5012 page outs 0 paging space page ins 32 paging space page outs 6671 page ins 5268 page outs 8 paging space page ins 225 paging space page outs
在該命令(一個(gè)大型 C 編譯)運(yùn)行的這段時(shí)期內(nèi),系統(tǒng)總共讀取了 981 個(gè)頁(yè)面(其中 8 個(gè)來(lái)自調(diào)頁(yè)空間)并寫入了 449 個(gè)頁(yè)面(其中 193 個(gè)寫入調(diào)頁(yè)空間)。
filemon 命令跟蹤設(shè)備來(lái)獲取一段時(shí)間間隔內(nèi)的 I/O 活動(dòng)的詳細(xì)圖像,該時(shí)間間隔產(chǎn)生于文件系統(tǒng)應(yīng)用的不同層面,包括本地文件系統(tǒng)、虛擬內(nèi)存段、LVM 和物理磁盤層。數(shù)據(jù)可以在所有層或所有通過(guò) -O 選項(xiàng)指定的層面上被收集。缺省值是在 VM、LVM 和物理層面上收集??偨Y(jié)和詳細(xì)報(bào)告一起生成。既然它使用了跟蹤設(shè)備,那么 filemon 命令就可以只被 root 用戶或一位系統(tǒng)組的成員運(yùn)行。
為了確認(rèn) filemon 命令是否已安裝并且可用,您可以運(yùn)行如下命令:
# lslpp -lI perfagent.tools
跟蹤可以由 filemon 命令啟動(dòng),您也可以通過(guò) trcoff 子命令隨意地暫掛,并可通過(guò) trcon 子命令來(lái)恢復(fù)執(zhí)行以及使用 trcstop 子命令來(lái)終止運(yùn)行。(既然 filemon 命令正在以優(yōu)先級(jí) 40 的情況下運(yùn)行,您可能想執(zhí)行如下命令 nice -n -20 trcstop 來(lái)停止 filemon 命令。一旦跟蹤被終止,filemon 命令便把報(bào)告寫入標(biāo)準(zhǔn)輸出。
filemon 命令可以從一個(gè)指定的文件中讀取 I/O 跟蹤的數(shù)據(jù),而不是從實(shí)時(shí)跟蹤進(jìn)程中讀取。在這種情況下,filemon 報(bào)告總結(jié)了系統(tǒng)的 I/O 活動(dòng)情況和由跟蹤文件表示的周期。當(dāng)需要對(duì)遠(yuǎn)程機(jī)器上的跟蹤文件進(jìn)行后處理,或者一段時(shí)間執(zhí)行跟蹤數(shù)據(jù)收集另一段時(shí)間用來(lái)對(duì)它進(jìn)行后處理,這時(shí)這種脫機(jī)處理的方法就很有用處。
trcrpt -r 命令必須在跟蹤日志文件上執(zhí)行,并且重定向到另一個(gè)文件,如下所示:
# gennames > gennames.out # trcrpt -r trace.out > trace.rpt
在這點(diǎn)上,調(diào)整過(guò)的跟蹤日志文件伺服于 filemon 命令以便報(bào)告被先前跟蹤會(huì)話捕捉到的 I/O 活動(dòng),如下所示:
# filemon -i trace.rpt -n gennames.out | pg
在這個(gè)示例中,filemon 命令從輸入文件 trace.rpt 中讀取文件系統(tǒng)跟蹤事件。因?yàn)楦檾?shù)據(jù)已經(jīng)捕捉到文件中,filemon 命令并不把它放到后臺(tái)以便讓應(yīng)用程序運(yùn)行。整個(gè)文件被讀取之后,有關(guān)虛擬內(nèi)存、邏輯卷和物理卷級(jí)別的 I/O 活動(dòng)報(bào)告將會(huì)在標(biāo)準(zhǔn)輸出中顯示。(在這個(gè)示例中,報(bào)告被輸送到 pg 命令中)。
如果 trace 命令以帶有 -C all 標(biāo)志的方式運(yùn)行,那么同樣以帶有 -C all 標(biāo)志的方式運(yùn)行 trcrpt 命令(請(qǐng)參閱『對(duì)來(lái)自 trace -C 輸出的報(bào)告進(jìn)行格式編排』)。
下列命令的序列給出了一個(gè)有關(guān) filemon 命令使用的示例:
# filemon -o fm.out -O all; cp /smit.log /dev/null ; trcstop
這份報(bào)告是按此序列生成的(在另一類空閑系統(tǒng)),如下所示:
Thu Aug 19 11:30:49 1999 System: AIX texmex Node: 4 Machine: 000691854C00 0.369 secs in measured interval Cpu utilization: 9.0% Most Active Files ------------------------------------------------------------------------ #MBs #opns #rds #wrs file volume:inode ------------------------------------------------------------------------ 0.1 1 14 0 smit.log /dev/hd4:858 0.0 1 0 13 null 0.0 2 4 0 ksh.cat /dev/hd2:16872 0.0 1 2 0 cmdtrace.cat /dev/hd2:16739 Most Active Segments ------------------------------------------------------------------------ #MBs #rpgs #wpgs segid segtype volume:inode ------------------------------------------------------------------------ 0.1 13 0 5e93 ??? 0.0 2 0 22ed ??? 0.0 1 0 5c77 persistent Most Active Logical Volumes ------------------------------------------------------------------------ util #rblk #wblk KB/s volume description ------------------------------------------------------------------------ 0.06 112 0 151.9 /dev/hd4 / 0.04 16 0 21.7 /dev/hd2 /usr Most Active Physical Volumes ------------------------------------------------------------------------ util #rblk #wblk KB/s volume description ------------------------------------------------------------------------ 0.10 128 0 173.6 /dev/hdisk0 N/A ------------------------------------------------------------------------ Detailed File Stats ------------------------------------------------------------------------ FILE: /smit.log volume: /dev/hd4 (/) inode: 858 opens: 1 total bytes xfrd: 57344 reads: 14 (0 errs) read sizes (bytes): avg 4096.0 min 4096 max 4096 sdev 0.0 read times (msec): avg 1.709 min 0.002 max 19.996 sdev 5.092 FILE: /dev/null opens: 1 total bytes xfrd: 50600 writes: 13 (0 errs) write sizes (bytes): avg 3892.3 min 1448 max 4096 sdev 705.6 write times (msec): avg 0.007 min 0.003 max 0.022 sdev 0.006 FILE: /usr/lib/nls/msg/en_US/ksh.cat volume: /dev/hd2 (/usr) inode: 16872 opens: 2 total bytes xfrd: 16384 reads: 4 (0 errs) read sizes (bytes): avg 4096.0 min 4096 max 4096 sdev 0.0 read times (msec): avg 0.042 min 0.015 max 0.070 sdev 0.025 lseeks: 10 FILE: /usr/lib/nls/msg/en_US/cmdtrace.cat volume: /dev/hd2 (/usr) inode: 16739 opens: 1 total bytes xfrd: 8192 reads: 2 (0 errs) read sizes (bytes): avg 4096.0 min 4096 max 4096 sdev 0.0 read times (msec): avg 0.062 min 0.049 max 0.075 sdev 0.013 lseeks: 8 ------------------------------------------------------------------------ Detailed VM Segment Stats (4096 byte pages) ------------------------------------------------------------------------ SEGMENT: 5e93 segtype: ??? segment flags: segment flags: reads: 13 (0 errs) read times (msec): avg 1.979 min 0.957 max 5.970 sdev 1.310 read sequences: 1 read seq. lengths: avg 13.0 min 13 max 13 sdev 0.0 SEGMENT: 22ed segtype: ??? segment flags: inode reads: 2 (0 errs) read times (msec): avg 8.102 min 7.786 max 8.418 sdev 0.316 read sequences: 2 read seq. lengths: avg 1.0 min 1 max 1 sdev 0.0 SEGMENT: 5c77 segtype: persistent segment flags: pers defer reads: 1 (0 errs) read times (msec): avg 13.810 min 13.810 max 13.810 sdev 0.000 read sequences: 1 read seq. lengths: avg 1.0 min 1 max 1 sdev 0.0 ------------------------------------------------------------------------ Detailed Logical Volume Stats (512 byte blocks) ------------------------------------------------------------------------ VOLUME: /dev/hd4 description: / reads: 5 (0 errs) read sizes (blks): avg 22.4 min 8 max 40 sdev 12.8 read times (msec): avg 4.847 min 0.938 max 13.792 sdev 4.819 read sequences: 3 read seq. lengths: avg 37.3 min 8 max 64 sdev 22.9 seeks: 3 (60.0%) seek dist (blks): init 6344, avg 40.0 min 8 max 72 sdev 32.0 time to next req(msec): avg 70.473 min 0.224 max 331.020 sdev 130.364 throughput: 151.9 KB/sec utilization: 0.06 VOLUME: /dev/hd2 description: /usr reads: 2 (0 errs) read sizes (blks): avg 8.0 min 8 max 8 sdev 0.0 read times (msec): avg 8.078 min 7.769 max 8.387 sdev 0.309 read sequences: 2 read seq. lengths: avg 8.0 min 8 max 8 sdev 0.0 seeks: 2 (100.0%) seek dist (blks): init 608672, avg 16.0 min 16 max 16 sdev 0.0 time to next req(msec): avg 162.160 min 8.497 max 315.823 sdev 153.663 throughput: 21.7 KB/sec utilization: 0.04 ------------------------------------------------------------------------ Detailed Physical Volume Stats (512 byte blocks) ------------------------------------------------------------------------ VOLUME: /dev/hdisk0 description: N/A reads: 7 (0 errs) read sizes (blks): avg 18.3 min 8 max 40 sdev 12.6 read times (msec): avg 5.723 min 0.905 max 20.448 sdev 6.567 read sequences: 5 read seq. lengths: avg 25.6 min 8 max 64 sdev 22.9 seeks: 5 (71.4%) seek dist (blks): init 4233888, avg 171086.0 min 8 max 684248 sdev 296274.2 seek dist (%tot blks):init 48.03665, avg 1.94110 min 0.00009 max 7.76331 sdev 3.36145 time to next req(msec): avg 50.340 min 0.226 max 315.865 sdev 108.483 throughput: 173.6 KB/sec utilization: 0.10
在系統(tǒng)伴有真實(shí)負(fù)載的情況下使用 filemon 命令將產(chǎn)生更長(zhǎng)的報(bào)告并可能需要更多的跟蹤緩存空間。filemon 命令的空間和 CPU 時(shí)間消耗可能在一定范圍內(nèi)降低系統(tǒng)性能。在生產(chǎn)環(huán)境下開(kāi)始使用之前,先用 filemon 命令在非生產(chǎn)系統(tǒng)中試驗(yàn)。同樣,在脫機(jī)處理和系統(tǒng)具有許多 CPU 的情況下使用帶有 -C all 標(biāo)志的 trace 命令。
全局報(bào)告列出了在測(cè)量間隔中最活躍的文件、段、邏輯卷和物理卷。它們?cè)?filemon 報(bào)告的開(kāi)始部分顯示。缺省情況下,邏輯文件和虛擬內(nèi)存報(bào)告各自被限制在最多 20 個(gè)最活躍的文件和段,衡量標(biāo)準(zhǔn)為總的數(shù)據(jù)傳送量。如果 -v 標(biāo)志被指定了,那么所有文件和段的活動(dòng)將被報(bào)告。報(bào)告中的所有信息按照從最活躍到最不活躍的順序從上到下依次列出。
#MBs
此文件在測(cè)量間隔時(shí)間內(nèi)的傳送量(以 MBs 為單位)。各行按照此字段降序排列。
#opns
在測(cè)量周期內(nèi)的文件的打開(kāi)次數(shù)。
#rds
文件讀取調(diào)用的次數(shù)
#wrs
文件寫入調(diào)用的次數(shù)
file
文件名稱(文件路徑全稱在詳細(xì)報(bào)告中)。
volume:inode
文件駐留的邏輯卷和在相連文件系統(tǒng)總的 i-node 數(shù)目。此字段可以被用來(lái)把文件和在詳細(xì)的 VM 段報(bào)告中顯示的其相應(yīng)的永久段關(guān)聯(lián)起來(lái)。此字段對(duì)在執(zhí)行過(guò)程中創(chuàng)建和刪除的臨時(shí)文件可以為空。
最活躍的文件是在邏輯卷 hd4 和文件 null 的 smit.log。應(yīng)用程序使用 terminfo 數(shù)據(jù)庫(kù)來(lái)管理屏幕;所以 ksh.cat 和 cmdtrace.cat 同樣繁忙。任何情況下,shell 需要向屏幕傳送一條信息時(shí),它就使用數(shù)據(jù)源目錄。
為了識(shí)別未知文件,您可以把邏輯卷的名稱 /dev/hd1 轉(zhuǎn)換成文件系統(tǒng)安裝點(diǎn)名稱 /home,并且使用 find 或 ncheck 命令:
# find / -inum 858 -print /smit.log
或者
# ncheck -i 858 //:858 /smit.log/: # ncheck -i 858 //:858 /smit.log
#MBs
此段在測(cè)量間隔時(shí)間內(nèi)的傳送量(以 MBs 為單位)。各行按照此字段降序排列。
#rpgs
從磁盤讀入段中大小為 4-KB 的頁(yè)面數(shù)
#wpgs
從段中寫入磁盤大小為 4-KB 的頁(yè)面數(shù)(page out)
#segid
內(nèi)存段的 VMM 標(biāo)識(shí)
segtype
段的類型:工作段、永久段(本地文件)、客戶機(jī)段(遠(yuǎn)程文件)、頁(yè)表段、系統(tǒng)段或者包含文件系統(tǒng)數(shù)據(jù)的指定永久段(日志、根目錄、.inode、.inodemap、.inodex、.inodexmap、.indirect、 .diskmap)。
volume:inode
對(duì)永久段來(lái)說(shuō),包含相關(guān)文件的邏輯卷名稱和文件的 i-node 數(shù)目。此字段可以被用來(lái)把段和在詳細(xì)的文件狀態(tài)報(bào)告中顯示的其相應(yīng)的文件關(guān)聯(lián)起來(lái)。對(duì)非永久段來(lái)說(shuō),此字段為空。
如果命令仍是活動(dòng)的,虛擬內(nèi)存分析工具 svmon 可以被用來(lái)顯示有關(guān)段的更多的信息。給出它的段標(biāo)識(shí)(segid),如下所示: svmon -D segid。參閱『svmon 命令』以便獲取更詳盡的討論。
在我們的示例中,這個(gè) segtype ??? 意味著系統(tǒng)不能識(shí)別該段類型,并且您必須使用 svmon 命令來(lái)獲取更多的信息。
util
邏輯卷使用率。
#rblk
從邏輯卷讀取的大小為 512 字節(jié)的塊數(shù)。
#wblk
寫入邏輯卷大小為 512 字節(jié)的塊數(shù)。
KB/s
每秒鐘平均傳送速率,單位 KB。
volume
邏輯卷名稱。
description
文件系統(tǒng)安裝點(diǎn)或是邏輯卷類型(paging, jfslog, boot, or sysdump)。例如,邏輯卷 /dev/hd2 是 /usr類型;/dev/hd6 是 paging 類型以及 /dev/hd8 是 jfslog 類型。有時(shí)也可能出現(xiàn)被壓縮的這個(gè)字眼。這意味著所有的數(shù)據(jù)在被寫入磁盤前都會(huì)以 Lempel-Zev(LZ)壓縮技術(shù)自動(dòng)壓縮,在從磁盤讀取時(shí)則自動(dòng)解壓縮。(參閱『壓縮』來(lái)獲取更多信)。
使用率用百分比表示,0.06 是指 6% 的邏輯卷在測(cè)量時(shí)間間隔內(nèi)繁忙。
util
#rblk
從物理卷讀取的大小為 512 字節(jié)的塊數(shù)。
#wblk
寫入物理卷大小為 512 字節(jié)的塊數(shù)。
KB/s
每秒鐘平均傳送速率,單位 KB。
volume
物理卷名稱。
description
有關(guān)物理卷類型的簡(jiǎn)單描述,例如, SCSI 多媒體 CD-ROM 驅(qū)動(dòng)器或 16位 SCSI 磁盤驅(qū)動(dòng)器。
使用率用百分比表示,0.10 是指 10% 的物理卷在測(cè)量時(shí)間間隔內(nèi)繁忙。
詳細(xì)的報(bào)告給出了相對(duì)全局報(bào)告的一些附加信息。對(duì)每個(gè)報(bào)告文件、段或卷來(lái)說(shuō),在詳細(xì)報(bào)告中都有一個(gè)條目。每個(gè)條目中字段在下面的四個(gè)詳細(xì)報(bào)告中描述。有些字段報(bào)告了一個(gè)單值;其余的報(bào)告了被稱為。例如,響應(yīng)時(shí)間的統(tǒng)計(jì)信息保存了所有被監(jiān)視的讀寫請(qǐng)求。除了報(bào)告響應(yīng)次數(shù)的標(biāo)準(zhǔn)偏差外,平均、最小和最大的響應(yīng)次數(shù)也被報(bào)告。標(biāo)準(zhǔn)差是用來(lái)顯示單個(gè)響應(yīng)次數(shù)相對(duì)平均響應(yīng)次數(shù)而言偏差了多少。大約 2/3 的樣本響應(yīng)次數(shù)在平均數(shù)減去標(biāo)準(zhǔn)差(avg - sdev)和平均數(shù)加上標(biāo)準(zhǔn)差(avg + sdev)之間。如果響應(yīng)次數(shù)的分布在很大的范圍內(nèi)散射,那么標(biāo)準(zhǔn)差相對(duì)平均響應(yīng)時(shí)間而言就會(huì)變大。
在最活躍的文件報(bào)告中列出了為每個(gè)文件的提供的詳細(xì)文件統(tǒng)計(jì)信息。這些節(jié)可以被用來(lái)確定該文件的存取情況。除了確定總的傳送字節(jié)數(shù)、opens、writes 和 lseeks,用戶也可以確定讀?。瘜懭氲拇笮『痛螖?shù)。
FILE
文件的名稱。如有可能,路徑全稱將被給出。
volume
邏輯卷/文件系統(tǒng)包括文件的名稱。
inode
在文件系統(tǒng)中文件的 I-node 數(shù)目。
opens
監(jiān)視期內(nèi)文件打開(kāi)的次數(shù)。
total bytes xfrd
總的讀/寫、進(jìn)/出文件的字節(jié)數(shù)。
reads
對(duì)文件進(jìn)行讀取調(diào)用的次數(shù)
read sizes (bytes)
讀取傳送大小統(tǒng)計(jì)信息(avg/min/max/sdev),以字節(jié)為單位。
read times (msec)
讀取響應(yīng)時(shí)間統(tǒng)計(jì)信息(avg/min/max/sdev),單位為毫秒。
writes
對(duì)文件進(jìn)行寫入調(diào)用的次數(shù)
write sizes (bytes)
寫入傳送大小統(tǒng)計(jì)信息。
write times (msec)
寫入相應(yīng)時(shí)間的統(tǒng)計(jì)信息。
lseeks
lseek() 子例程的調(diào)用的數(shù)目。
read sizes 和 write sizes 將會(huì)給您一個(gè)有關(guān)您的應(yīng)用程序在讀取和寫入信息的性能的感性認(rèn)識(shí)。使用 4 KB 大小的多重文件為最佳結(jié)果。
每個(gè)列在 最活躍段的報(bào)告中的元素有相關(guān)的一節(jié)顯示了有關(guān)真實(shí)的 I/O 進(jìn)出內(nèi)存的詳細(xì)信息。
SEGMENT
內(nèi)部操作系統(tǒng)的段標(biāo)識(shí)。
segtype
段內(nèi)容的類型
segment flags
不同的段屬性。
volume
對(duì)永久段來(lái)說(shuō),包含相關(guān)文件的邏輯卷名稱。
inode
對(duì)永久段來(lái)說(shuō),相應(yīng)文件的 i-node 數(shù)目。
reads
讀取到段中大小為 4096 字節(jié)的頁(yè)面數(shù)(就是,paged in)。
read times (msec)
讀取響應(yīng)時(shí)間統(tǒng)計(jì)信息(avg/min/max/sdev),單位為毫秒。
read sequences
讀取的序列數(shù)。一個(gè)序列是一連串連續(xù)讀取的字符串頁(yè)面。read sequences 的數(shù)目是順序存取量的指示符。
read seq. lengths
描述了 read sequences 的長(zhǎng)度的統(tǒng)計(jì)信息,以頁(yè)位單位。
writes
從段寫入磁盤的頁(yè)面數(shù)(就是,paged out)。
write times (msec)
寫入相應(yīng)時(shí)間的統(tǒng)計(jì)信息。
write sequences
寫入的序列數(shù)。一個(gè)序列是一連串連續(xù)寫入(paged out)的頁(yè)面。
write seq. lengths
描述了寫序列的長(zhǎng)度的統(tǒng)計(jì)信息,以頁(yè)位單位。
通過(guò)檢查 reads 和 read-sequence 計(jì)數(shù)情況,您可以確定訪問(wèn)是順序的還是隨機(jī)的。例如,如果 read-sequence 計(jì)數(shù)接近 reads 計(jì)數(shù),該文件訪問(wèn)更趨于隨機(jī)化。另一方面,如果 read-sequence 計(jì)數(shù)在很大程度上比 read 計(jì)數(shù)小很多并且 read-sequence 長(zhǎng)度是一個(gè)高值,該文件根趨于順序化。這個(gè)邏輯同樣適用于 writes 和 write sequence。
每個(gè)列在最活躍邏輯卷/最活躍物理卷的報(bào)告中元素有相應(yīng)的一節(jié)顯示了有關(guān)邏輯/物理卷的詳細(xì)信息。除了讀取和寫入的數(shù)量。用戶還可以不僅確定邏輯/物理卷的初始和平均的搜索距離,而且確定讀取和寫入的次數(shù)和大小。
VOLUME
卷名。
description
有關(guān)卷的描述。(如果對(duì)象是邏輯卷則描述內(nèi)容,物理卷則描述類型。)
reads
對(duì)卷進(jìn)行讀取請(qǐng)求的次數(shù)
read sizes (blks)
讀取傳送大小統(tǒng)計(jì)信息(avg/min/max/sdev),以 512 字節(jié)大小的塊為單位。
read times (msec)
讀取響應(yīng)時(shí)間統(tǒng)計(jì)信息(avg/min/max/sdev),單位為毫秒。
read sequences
讀取的序列數(shù)。一個(gè)序列是一連串連續(xù)讀取的大小為 512 字節(jié)的塊。它表明了順序存取的數(shù)量。
read seq. lengths
統(tǒng)計(jì)信息描述了讀取序列的長(zhǎng)度,以塊為單位。
writes
對(duì)卷進(jìn)行寫入請(qǐng)求的次數(shù)。
write sizes (blks)
寫入傳送大小統(tǒng)計(jì)信息。
write times (msec)
寫入響應(yīng)時(shí)間統(tǒng)計(jì)信息。
write sequences
寫入的序列數(shù)。一個(gè)序列是一連串連續(xù)寫入的大小為 512 字節(jié)的塊。
write seq. lengths
有關(guān)描述寫入序列長(zhǎng)度的統(tǒng)計(jì)信息,以塊為單位。
seeks
在一次讀取或?qū)懭胝?qǐng)求前的尋道數(shù);也可以表達(dá)為總的需要尋道的讀請(qǐng)求數(shù)和寫請(qǐng)求數(shù)所占的百分比。
seek dist (blks)
尋道距離統(tǒng)計(jì)信息,以 512 字節(jié)一塊為單位。除了一些平常的統(tǒng)計(jì)信息(avg/min/max/sdev),初始化尋道操作(假設(shè) 0 號(hào)塊為開(kāi)始位置)的距離是分開(kāi)報(bào)告的。有時(shí)候,尋道距離會(huì)很長(zhǎng);分開(kāi)報(bào)告是為了避免是其他統(tǒng)計(jì)信息偏移。
seek dist (cyls)
(只有物理卷)尋到距離統(tǒng)計(jì)信息以磁盤柱面為單位。
time to next req
有關(guān)(avg/min/max/sdev)描述對(duì)卷執(zhí)行讀或?qū)懻?qǐng)求之間的時(shí)間長(zhǎng)度的統(tǒng)計(jì)信息,單位為毫秒。這一列表明了該卷的存取速率。
throughput
每秒總的卷吞吐量,單位為 KB。
utilization
卷繁忙的時(shí)間比重。在此報(bào)告中的各條目按照此字段降序排列。
一個(gè)長(zhǎng)的尋道時(shí)間可以增加 I/O 響應(yīng)時(shí)間,結(jié)果降低了應(yīng)用程序的性能。通過(guò)檢查讀取請(qǐng)求數(shù)和寫入請(qǐng)求數(shù)的計(jì)數(shù)情況,您可以確定訪問(wèn)是順序的還是隨機(jī)的。這個(gè)邏輯同樣適用于寫請(qǐng)求數(shù)和寫序列。
以下是一些使用 filemon 命令的用戶指南:
/etc/inittab 文件總是很活躍。指定在 /etc/inittab 中的守護(hù)程序經(jīng)常被檢查以確定它們是否要被重新生成。
/etc/passwd 文件也很活躍。因?yàn)樵S多文件和目錄的存取許可性要被核實(shí)。
一個(gè)長(zhǎng)的尋道時(shí)間增加了 I/O 的響應(yīng)時(shí)間并且降低了系統(tǒng)的性能。
如果大部分讀寫請(qǐng)求要求尋道,您可能在同一個(gè)物理磁盤上擁有碎片文件和過(guò)分活躍的文件系統(tǒng)。然而,對(duì)聯(lián)機(jī)事務(wù)處理或是數(shù)據(jù)庫(kù)系統(tǒng)來(lái)說(shuō),這種行為可能是正常的。
如果讀寫請(qǐng)求的數(shù)目接近序列數(shù),物理磁盤存取方式較順序而言更加隨機(jī)化。一個(gè)序列是一連串連續(xù)讀取(paged in)或連續(xù)寫入(paged out)的頁(yè)面。seq. lengths 是序列以頁(yè)為單位的長(zhǎng)度。一個(gè)隨機(jī)文件存取也有可能涉及許多尋道數(shù)。在這種情況下,您不能區(qū)分 filemon 命令的輸出結(jié)果是表明文件的存取方式為隨機(jī)還是文件是碎裂的。使用 fileplace 命令來(lái)進(jìn)一步調(diào)查真相。
遠(yuǎn)程文件列在 volume:inode 列中,并帶有遠(yuǎn)系統(tǒng)的名稱。
由于 filemon 命令可能潛在地消耗一些系統(tǒng)能源,所以使用時(shí)要小心謹(jǐn)慎,并且一邊考慮在運(yùn)行此工具時(shí)涉及的內(nèi)務(wù)操作,一邊分析系統(tǒng)的性能。在 CPU 飽和運(yùn)行的環(huán)境下,測(cè)試已表明:
伴隨少量的 I/O, filemon 命令顯示了大量的編譯占用大約百分之一。
伴隨高磁盤輸出率,filemon 命令顯示了編寫程序占用大約百分之五。
一般來(lái)說(shuō),高的 % iowait 表明系統(tǒng)存在一個(gè)應(yīng)用程序問(wèn)題、缺少內(nèi)存問(wèn)題或低效的 I/O 子系統(tǒng)配置。例如,應(yīng)用程序的問(wèn)題可能是由于許多 I/O 請(qǐng)求,而不是處理許多數(shù)據(jù)。理解 I/O 瓶頸并且要清楚解決瓶頸問(wèn)題的關(guān)鍵在于提高 I/O 子系統(tǒng)的效率。磁盤的靈敏度可以以幾種方式出現(xiàn),并具有不同的解決方法。一些典型的解決方案可能包括:
限制在特定的物理磁盤上活動(dòng)邏輯卷和文件系統(tǒng)的數(shù)目。該方法是為了在所有的物理磁盤驅(qū)動(dòng)器中平衡文件 I/O。
在多個(gè)物理磁盤間展開(kāi)邏輯卷。該方法在當(dāng)有一些不同的文件被存取時(shí)特別有用。
為一個(gè)卷組創(chuàng)建多個(gè) Journaled 文件系統(tǒng)(JFS)日志并且把它們分配到特定的文件系統(tǒng)中(最好在快速寫高速緩存驅(qū)動(dòng)器中)。這對(duì)應(yīng)用程序創(chuàng)建、刪除或者修改大量文件特別是臨時(shí)文件來(lái)說(shuō)十分有益。
如果 iostat 命令的輸出結(jié)果表明您的負(fù)載的 I/O 活動(dòng)沒(méi)有被均衡地分配到系統(tǒng)磁盤驅(qū)動(dòng)器中,并且一個(gè)或多個(gè)磁盤驅(qū)動(dòng)器的使用率經(jīng)常在 70-80 之間或更高,您就得考慮重組文件系統(tǒng),例如備份和恢復(fù)文件系統(tǒng)以便減少碎片。碎片將引起驅(qū)動(dòng)器過(guò)多地搜索并且可能產(chǎn)生大部分響應(yīng)時(shí)間過(guò)長(zhǎng)。
如果很大,I/O 增強(qiáng)的后臺(tái)作業(yè)將涉及和相應(yīng)時(shí)間交互,您可能希望激活 I/O 調(diào)步。
如果有跡象表明一小部分文件被一次又一次地讀取,您可以考慮附加的實(shí)存是否允許那些文件更加有效地緩存。
如果負(fù)載的存取模式是隨機(jī)占主導(dǎo)地位,您可能要考慮增加磁盤并把按那些隨機(jī)存取的文件分布到更多的磁盤中。
如果負(fù)載的存取模式是順序占主導(dǎo)地位并且涉及多個(gè)磁盤驅(qū)動(dòng)器,您可能要考慮增加一個(gè)或多個(gè)磁盤適配器。您也可以適當(dāng)?shù)乜紤]構(gòu)建一個(gè)條帶狀邏輯卷來(lái)適應(yīng)大型并且性能關(guān)鍵的順序文件。
使用快速寫高速緩存設(shè)備。
使用異步 I/O。
濟(jì)南鑒信DATAHELP山東服務(wù)器數(shù)據(jù)恢復(fù)中心,濟(jì)南承誠(chéng)鑒信信息技術(shù)有限公司 ICP備案編號(hào):魯ICP備16040624號(hào)-4
數(shù)據(jù)恢復(fù)公司電話:400-0531-988,0531-55575577 傳真:0531-62399989 數(shù)據(jù)恢復(fù)公司地址:山東省濟(jì)南市山大路157號(hào)華強(qiáng)電子世界3F
技術(shù)支持:數(shù)據(jù)恢復(fù)
服務(wù)器數(shù)據(jù)恢復(fù)QQ:1968869
RAID存儲(chǔ)數(shù)據(jù)恢復(fù)QQ:139928669