6.1 磁盤(pán)I/O介紹
一般來(lái)說(shuō)旁涤,Linux磁盤(pán)的每個(gè)分區(qū)要么包含一個(gè)文件系統(tǒng),要么包含一個(gè)交換分區(qū)。這些分區(qū)被掛載到Linux根文件系統(tǒng)姜钳,該系統(tǒng)由/etc/fstab指定。這些被掛載的文件系統(tǒng)包含了應(yīng)用程序要讀寫(xiě)的文件形耗。
當(dāng)一個(gè)應(yīng)用程序進(jìn)行讀寫(xiě)時(shí)哥桥,Linux內(nèi)核可以在其高速緩存或者緩沖區(qū)中保存文件的副本,并且可以在不訪問(wèn)磁盤(pán)的情況下返回被請(qǐng)求的信息激涤。但是觅彰,如果Linux內(nèi)核沒(méi)有在內(nèi)存中保存數(shù)據(jù)副本,那它就向磁盤(pán)I/O隊(duì)列添加一個(gè)請(qǐng)求压昼。若Linux內(nèi)核注意到多個(gè)請(qǐng)求都指向磁盤(pán)內(nèi)相鄰的區(qū)域斋陪,它會(huì)把它們合并為一個(gè)大的請(qǐng)求。這種合并能消除第二次請(qǐng)求的尋道時(shí)間辱挥,以此提高磁盤(pán)的整體性能犁嗅。當(dāng)請(qǐng)求被放入磁盤(pán)隊(duì)列,而磁盤(pán)當(dāng)前不忙時(shí)晤碘,它就開(kāi)始為I/O請(qǐng)求服務(wù)褂微。如果磁盤(pán)正忙,則請(qǐng)求就在隊(duì)列中等待园爷,直到該設(shè)備可用宠蚂,請(qǐng)求將被服務(wù)。
6.2 磁盤(pán)I/O性能工具
6.2.1 vmstat
語(yǔ)法:
vmstat [-D] [-d] [-p partition] [interval count]
vmstat選項(xiàng)說(shuō)明
選項(xiàng) | 說(shuō)明 |
---|---|
-D | 顯示Linux I/O子系統(tǒng)的統(tǒng)計(jì)信息腮介,顯示的是系統(tǒng)啟動(dòng)以來(lái)的總信息 |
-d | 按每interval一個(gè)樣本的速率顯示單個(gè)磁盤(pán)的統(tǒng)計(jì)數(shù)據(jù)肥矢,顯示的是系統(tǒng)啟動(dòng)以來(lái)的總信息。 |
-p partition | 按照每interval一個(gè)采樣的速率顯示給定分區(qū)性能統(tǒng)計(jì)數(shù)據(jù)叠洗,顯示的是系統(tǒng)啟動(dòng)以來(lái)的總信息甘改。 |
interval | 采樣之間的頻率 |
count | 所取的樣本總數(shù) |
vmstat默認(rèn)顯示的信息:
vmstat –D 顯示的信息
部分統(tǒng)計(jì)信息說(shuō)明
輸出 | 說(shuō)明 |
---|---|
disks | 系統(tǒng)中磁盤(pán)的總數(shù) |
partitions | 系統(tǒng)中分區(qū)的總數(shù) |
total reads | 讀請(qǐng)求的總數(shù) |
merged reads | 為了提升性能而被合并的不同讀請(qǐng)求的數(shù)量,這些讀請(qǐng)求訪問(wèn)的是磁盤(pán)上的相鄰位置灭抑。 |
writes | 寫(xiě)請(qǐng)求的總數(shù) |
inprogress IO | 當(dāng)前正在處理的I/O總數(shù) |
vmstat –d部分統(tǒng)計(jì)信息說(shuō)明
輸出 | 說(shuō)明 |
---|---|
reads:total | 讀請(qǐng)求的總數(shù) |
reads:merged | 為了提升性能而被合并的不同讀請(qǐng)求的數(shù)量 |
reads:sectors | 從磁盤(pán)讀取的扇區(qū)的總數(shù) |
ms | 磁盤(pán)讀所花費(fèi)的時(shí)間 |
vmstat –d 顯示的信息:
6.2.2 iostat
與vmstat相似十艾,但它是一個(gè)專門(mén)用于顯示磁盤(pán)I/O子系統(tǒng)統(tǒng)計(jì)信息的工具。iostat提供的信息細(xì)化到每個(gè)設(shè)備和每個(gè)分區(qū)從特定磁盤(pán)讀寫(xiě)了多少個(gè)塊腾节。此外忘嫉,iostat還可以提供大量的信息來(lái)顯示磁盤(pán)是如何被利用的荤牍,以及Linux花費(fèi)了多長(zhǎng)時(shí)間來(lái)等待將請(qǐng)求提交到磁盤(pán)。
iostat命令行選項(xiàng)
選項(xiàng) | 說(shuō)明 |
---|---|
-d | 只顯示磁盤(pán)I/O的統(tǒng)計(jì)信息庆冕,而不是默認(rèn)信息康吵。 |
-k | 按KB顯示統(tǒng)計(jì)數(shù)據(jù),而不是按塊顯示 |
-x | 顯示拓展性能I/O統(tǒng)計(jì)信息 |
device | 若指定設(shè)備访递,則iostat只顯示該設(shè)備的信息 |
iostat設(shè)備統(tǒng)計(jì)信息
輸出 | 說(shuō)明 |
---|---|
tps | 每秒傳輸次數(shù)晦嵌,該項(xiàng)為每秒對(duì)設(shè)備/分區(qū)讀寫(xiě)請(qǐng)求的次數(shù) |
Blk_read/s | 每秒讀取磁盤(pán)塊的速率 |
Blk_wrtn/s | 每秒寫(xiě)入磁盤(pán)塊的速率 |
Blk_read | 在時(shí)間間隔內(nèi)讀取塊的總數(shù)量 |
Blk_wrtn | 在時(shí)間間隔內(nèi)寫(xiě)入塊的總數(shù)量 |
iostat –d 顯示:
6.2.3 sar
6.2.4 lsof
lsof提供了一種方法來(lái)確定哪些進(jìn)程打開(kāi)了一個(gè)特定的文件,除了跟蹤單個(gè)文件的用戶外拷姿,lsof還可以顯示使用了特定目錄下的進(jìn)程惭载。
語(yǔ)法
**lsof [-r delay] [+D directory] [+d directory] [file]**
lsof命令選項(xiàng)說(shuō)明
選項(xiàng) | 說(shuō)明 |
---|---|
r delay | 使得lsof每間隔delay秒輸出一次統(tǒng)計(jì)數(shù)據(jù) |
D directory | 使得lsof遞歸搜索給定目錄下的所有文件,并報(bào)告哪些進(jìn)程正在使用 |
d directory | 使得lsof報(bào)告哪些進(jìn)程正在使用給定目錄下的文件 |
lsof顯示訪問(wèn)了/usr/bin下所有文件的進(jìn)程