資源描述:
《Linux內(nèi)存監(jiān)控工具》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Linux內(nèi)存監(jiān)控工具一、free?該工具主要是顯示系統(tǒng)里可用和已用的內(nèi)存Linux通常按一定的算法把常用的數(shù)據(jù)加載到系統(tǒng)的虛擬內(nèi)存buffers和cached中,以便于用戶程序在訪問系統(tǒng)資源更快。而由free查看到的buffers是用于存放元數(shù)據(jù),而cached是用于存放真實的文件內(nèi)容。?由上圖free-k的輸出結(jié)果中可知:系統(tǒng)總物理內(nèi)存(total)是4144656K(約4G);已用(Mem行對應(yīng)的used)的物理內(nèi)存是3871932K(約3.8G,注:這里包含了buffers的152460K(約152M)和cached的225
2、3060K(2.2G).),他包含系統(tǒng)的buffers和cached的。-/+buffers/cache對應(yīng)的used是1466412K(約1.4G),也就是Mem行used(3871932K)-Mem行buffers(152460K)-Mem行cached(2253060K)=1466412K(約1.4G).所以實際上可用于分配的物理內(nèi)存(-/+buffers/cache行對應(yīng)的free)是2678244K(約2.6G).Shared在man手冊里提示應(yīng)該忽略(manfree:Thesharedmemorycolumnshould
3、beignored;itisobsolete.)。Mem行對應(yīng)的free對應(yīng)的274220K(約274M).其實這個free是有一定限制的:不能低于min_free_kbytes。min_free_kbytes用于計算系統(tǒng)里lowmemzone(物理內(nèi)存0-896MB之間的zone)的值(ThisisusedtoforcetheLinuxVMtokeepaminimumnumberofkilobytesfree.?TheVMusesthisnumbertocomputeapages_minvalueforeachlowmemzone
4、inthesystem.?Eachlowmemzonegetsanumberofreservedfreepagesbasedproportionallyonitssize.).計算方式參見mm/page_alloc.c的min_free_kbytes=sqrt(lowmem_kbytes*16)?上述值是一定的公式計算系統(tǒng)的lowmem是872656KB[root@crm_10/root]grepLowTotal/proc/meminfoLowTotal:?872656min_free_kbytes=sqrt(872656*16)約
5、等于3797二、ps,top?這兩個工具在內(nèi)存監(jiān)視方面有很大的相似性,所以一并說一下:下面top里的VIRT相當(dāng)于ps里的VSZ:指用于這個任務(wù)的總虛擬內(nèi)存(虛擬內(nèi)存包括物理內(nèi)存和swap交換分區(qū)),包括所有的代碼、數(shù)據(jù)、共享庫以及已經(jīng)被out到swap分區(qū)的數(shù)據(jù)。/*Thetotalamountofvirtualmemoryusedbythetask.?Itincludesallcode,dataandsharedlibrariespluspagesthathavebeenswappedout.*/?而top里的RES相當(dāng)于ps里
6、的RSS:指用于這個任務(wù)的沒被out到swap分區(qū)的總物理內(nèi)存/*residentsetsize,thenon-swappedphysicalmemorythatataskhasused*/top里的%MEM:指這個任務(wù)的RES占總物理內(nèi)存的比率/*Memoryusage(RES)Atask'scurrentlyusedshareofavailablephysicalmemory.*/三、vmstat顯示的值跟用free工具查看到的值相似。一般情況下:只要swap一列的si/so數(shù)值不超過1024即可。Swap??????si:Am
7、ountofmemoryswappedinfromdisk(/s).??????so:Amountofmemoryswappedtodisk(/s).四:VFS里的meminfo信息:Dirty:是指數(shù)據(jù)已寫入內(nèi)存,但還沒同步到外存(磁盤)的數(shù)據(jù)量.Slab:為了提供內(nèi)核空間以頁分配對有些調(diào)用(只需小內(nèi)存)不合適的一種內(nèi)存分配方式,提出Pool的概念。Vmalloc:為了解決非連續(xù)性內(nèi)存的使用,提供的一種內(nèi)存分配方式(采用鏈表)。CommitLimit:指當(dāng)前可以分配給程序使用的虛擬內(nèi)存(只有當(dāng)vm.overcommit_memor
8、y的值設(shè)置為2時,CommitLimit才有意義)?CommitLimit:Basedontheovercommitratio('vm.overcommit_ratio'),?????????????thisisthetotalamo