您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何使用vmstat命令確定內(nèi)存使用情況,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
vmstat 命令總結(jié)了系統(tǒng)中所有進(jìn)程使用的總活動(dòng)虛擬內(nèi)存,以及空閑列表上實(shí)內(nèi)存頁(yè)幀的數(shù)量。
活動(dòng)的虛擬內(nèi)存定義為虛擬內(nèi)存中實(shí)際可以得到的工作段頁(yè)面的數(shù)量。這個(gè)數(shù)字可能大于機(jī)器中的實(shí)際頁(yè)幀數(shù),因?yàn)橐恍┗顒?dòng)的虛擬內(nèi)存頁(yè)可能已寫出到調(diào)頁(yè)空間中。
當(dāng)確定系統(tǒng)內(nèi)存是否短缺或者是否需要進(jìn)行某種內(nèi)存調(diào)整時(shí),在設(shè)定的時(shí)間間隔內(nèi)運(yùn)行 vmstat 命令,并檢查結(jié)果報(bào)告中的 pi 和 po 列。這兩列表明了每秒調(diào)頁(yè)空間頁(yè)面調(diào)入的數(shù)量和每秒調(diào)頁(yè)空間頁(yè)面調(diào)出的數(shù)量。如果這些值經(jīng)常為非零值,說明可能存在內(nèi)存瓶頸。偶爾出現(xiàn)的非零值不用在意,因?yàn)轫?yè)面調(diào)度是虛擬內(nèi)存的主要原理。
# vmstat 2 10 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 1 3 113726 124 0 14 6 151 600 0 521 5533 816 23 13 7 57 0 3 113643 346 0 2 14 208 690 0 585 2201 866 16 9 2 73 0 3 113659 135 0 2 2 108 323 0 516 1563 797 25 7 2 66 0 2 113661 122 0 3 2 120 375 0 527 1622 871 13 7 2 79 0 3 113662 128 0 10 3 134 432 0 644 1434 948 22 7 4 67 1 5 113858 238 0 35 1 146 422 0 599 5103 903 40 16 0 44 0 3 113969 127 0 5 10 153 529 0 565 2006 823 19 8 3 70 0 3 113983 125 0 33 5 153 424 0 559 2165 921 25 8 4 63 0 3 113682 121 0 20 9 154 470 0 608 1569 1007 15 8 0 77 0 4 113701 124 0 3 29 228 635 0 674 1730 1086 18 9 0 73
在上述示例輸出中,請(qǐng)注意輸出中的較高的 I/O 等待率以及阻塞隊(duì)列中的線程數(shù)。其他 I/O 活動(dòng)可能會(huì)造成 I/O 等待,但是在這種特殊情況下,I/O 等待最大可能是由于與頁(yè)面空間之間的頁(yè)面調(diào)進(jìn)調(diào)出造成的。
要察看系統(tǒng)的 VMM 是否有性能問題,請(qǐng)檢查 memory 和 page 下的列:
memory
提供了實(shí)際和虛擬內(nèi)存的信息。
avm
活動(dòng)虛擬內(nèi)存(avm)列代表在收集 vmstat 樣本時(shí)存在的活動(dòng)虛擬內(nèi)存頁(yè)數(shù)。缺省策略為延遲頁(yè)面空間策略。在該策略下,avm 的值可能比使用的調(diào)頁(yè)空間頁(yè)面數(shù)要高。avm 統(tǒng)計(jì)信息并不包含文件頁(yè)面。
fre
fre 列顯示出空閑內(nèi)存頁(yè)面的平均數(shù)量。一個(gè)頁(yè)面是實(shí)內(nèi)存中的 4 KB 的區(qū)域。系統(tǒng)維護(hù)內(nèi)存頁(yè)面的緩沖區(qū),稱為空閑列表。當(dāng) VMM 需要空間時(shí)可以很方便地訪問此空閑列表。VMM 保留在空閑列表上的最少頁(yè)數(shù)由 vmo 命令的 minfree 參數(shù)決定。
當(dāng)一個(gè)應(yīng)用程序終止時(shí),它所有的工作頁(yè)面會(huì)立即返回給空閑列表。然而,它的永久頁(yè)面(或文件)仍然在 RAM 中,不會(huì)添加回空閑列表中,直到由 VMM 竊取用于其他程序?yàn)橹?。如果刪除相應(yīng)的文件,也會(huì)釋放其永久頁(yè)面。
由于這個(gè)原因,fre 的值可能不表示進(jìn)程可以方便使用所有實(shí)內(nèi)存。如果需要頁(yè)幀,那與已終止應(yīng)用程序相關(guān)的永久頁(yè)面將會(huì)最先移交給另一個(gè)程序。
如果 fre 的值遠(yuǎn)大于 maxfree 的值,那么不太可能出現(xiàn)系統(tǒng)顛簸。系統(tǒng)顛簸意味著系統(tǒng)一直在進(jìn)行頁(yè)面調(diào)進(jìn)調(diào)出。然而,如果系統(tǒng)正在經(jīng)歷顛簸,可以肯定 fre 值很小。
page
關(guān)于缺頁(yè)故障和頁(yè)面調(diào)度活動(dòng)的信息。它們是一段時(shí)間間隔的平均值并以秒為單位給出。
re
注: 這一欄當(dāng)前不受支持。
pi
pi 列詳細(xì)描述了從調(diào)頁(yè)空間調(diào)入的頁(yè)數(shù)。調(diào)頁(yè)空間是駐留在磁盤上的虛擬內(nèi)存的一部分。當(dāng)內(nèi)存過量使用時(shí),它用作溢出。調(diào)頁(yè)空間由用于存儲(chǔ)從實(shí)內(nèi)存中竊取到的工作組頁(yè)面的邏輯卷組成。當(dāng)進(jìn)程訪問一個(gè)竊取頁(yè)時(shí),產(chǎn)生了一個(gè)缺頁(yè)故障,這一頁(yè)必須從調(diào)頁(yè)空間讀入內(nèi)存。
因?yàn)橛布渲?、軟件和?yīng)用程序的不同,沒有絕對(duì)的數(shù)字可以用以參考。這個(gè)字段作為調(diào)頁(yè)空間活動(dòng)的關(guān)鍵指示符。如果發(fā)生頁(yè)面調(diào)進(jìn),該頁(yè)面就一定有一個(gè)較早的頁(yè)面調(diào)出。在內(nèi)存受限的環(huán)境下也有可能每一次頁(yè)面調(diào)進(jìn)會(huì)迫使另一個(gè)頁(yè)面被竊取而頁(yè)面調(diào)出。
po
po 一欄顯示了調(diào)出到調(diào)頁(yè)空間的頁(yè)面數(shù)(速率)。無(wú)論什么時(shí)候竊取工作存儲(chǔ)器的一頁(yè),如果它仍未駐留在調(diào)頁(yè)空間中或已被修改,那它會(huì)被寫入調(diào)頁(yè)空間。如果不被再次訪問,它會(huì)留在頁(yè)面調(diào)度設(shè)備中直到進(jìn)程終止或放棄空間。如果包含在出故障頁(yè)面中的后續(xù)地址引用導(dǎo)致缺頁(yè)故障,那么這些頁(yè)面將會(huì)由系統(tǒng)個(gè)別調(diào)進(jìn)。當(dāng)一個(gè)進(jìn)程正常終止,任何分配給該進(jìn)程的調(diào)頁(yè)空間將被釋放。如果系統(tǒng)讀入大量的永久頁(yè)面,您會(huì)發(fā)覺 po 欄里增加了而在 pi 欄里沒有相應(yīng)增加。這并不一定會(huì)造成系統(tǒng)顛簸,但可以保證對(duì)于應(yīng)用程序數(shù)據(jù)存取模式的調(diào)查。
fr
在一定時(shí)間間隔內(nèi)根據(jù)頁(yè)面替換算法每秒所釋放的頁(yè)數(shù)。當(dāng) VMM 頁(yè)面替換例程掃描頁(yè)面幀表(Page Frame. Table,PFT)時(shí),它使用一些條件選取要竊取的頁(yè)面以插入到可用內(nèi)存幀的空閑列表中。該條件包含了兩種頁(yè)面,工作(計(jì)算的)和文件(永久的)頁(yè)面。就因?yàn)轫?yè)面已經(jīng)釋放,并不意味著發(fā)生了任何 I/O。例如,如果某個(gè)永久存儲(chǔ)(文件)頁(yè)面尚未修改,它就不會(huì)被寫回磁盤。如果 I/O 不是必需的,那么要求最小的系統(tǒng)資源來(lái)釋放頁(yè)面。
sr
在一定時(shí)間間隔內(nèi)根據(jù)頁(yè)面替換算法每秒所檢查的頁(yè)面數(shù)。頁(yè)面替換算法在可以竊取足夠的頁(yè)面以滿足頁(yè)面替換線程的需要之前可能不得不掃描許多頁(yè)面幀。sr 值比 fr值高得越多,頁(yè)面替換算法查找要竊取的合格頁(yè)面就越困難。
cy
時(shí)鐘算法中每秒的周期數(shù)。VMM 使用一種叫時(shí)鐘算法的技術(shù)來(lái)選擇要替換的頁(yè)面。這種技術(shù)利用了每一個(gè)頁(yè)面的訪問位來(lái)指示哪些頁(yè)最近曾被使用(訪問)過。調(diào)用頁(yè)面竊取程序例程時(shí),它遍歷整個(gè) PFT,檢查每一頁(yè)的訪問位。
cy 一欄顯示了每秒頁(yè)面替換代碼掃描了 PFT 多少次。因?yàn)椴迦肟臻e列表可以不需要完全掃描 PFT,并且因?yàn)樗械?nbsp;vmstat 字段報(bào)告為整數(shù),這一字段通常為 0。
確定系統(tǒng)的適當(dāng) RAM 數(shù)量的一種方法是查看 vmstat 命令報(bào)告的 avm 的最大值。將該數(shù)字乘以 4K 得到字節(jié)數(shù),然后將其與系統(tǒng)的 RAM 字節(jié)數(shù)比較。理想情況下,avm 應(yīng)該小于總 RAM。如果不是,可能會(huì)出現(xiàn)一些虛擬內(nèi)存頁(yè)面調(diào)度量。有多少頁(yè)面調(diào)度發(fā)生取決于兩個(gè)值之間的差值。記住,虛擬內(nèi)存的概念是提供給我們尋址大于實(shí)內(nèi)存容量的能力(一些在 RAM 內(nèi)存中,而另一些在調(diào)頁(yè)空間中)。但是如果虛擬內(nèi)存遠(yuǎn)大于實(shí)內(nèi)存,可能造成過度的頁(yè)面調(diào)度,從而導(dǎo)致延時(shí)。如果 avm 小于 RAM,那么當(dāng) RAM 中填滿文件頁(yè)時(shí)就會(huì)引起調(diào)頁(yè)空間的頁(yè)面調(diào)度。這種情況下,調(diào)整 minperm、maxperm 和 maxclient 的值可以減少調(diào)頁(yè)空間的頁(yè)面調(diào)度量。
看完上述內(nèi)容,你們對(duì)如何使用vmstat命令確定內(nèi)存使用情況有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。