Linux中怎么用smem查看内存占用情况
小編給大家分享一下Linux中怎么用smem查看內(nèi)存占用情況,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
無論是作為系統(tǒng)管理員,還是作為使用桌面版Linux的簡單用戶,你都會注意到,某個進程在耗用你系統(tǒng)的所有內(nèi)存。
首先要明白Linux是如何管理內(nèi)存的;我多次接到用戶的反映,說運行了free命令,就是無法適當(dāng)讀取輸出。簡而言之,如果是Linux內(nèi)核,不用擔(dān)心;內(nèi)核在耗用內(nèi)存,緩存文件呢。
放心,Linux內(nèi)核開發(fā)人員比你我更有能力找到一種優(yōu)秀的算法來緩存文件,并且當(dāng)某個進程需要時,釋放該內(nèi)存區(qū)域,所以千萬不要讓我把運行諸如這種命令的某個任務(wù)放入計劃任務(wù)(cron):
echo3>/proc/sys/vm/drop_caches
當(dāng)然,之后,你會在系統(tǒng)上有更多的可用閑置內(nèi)存,但是系統(tǒng)不得不從磁盤重新讀取所有文件,所以就性能而言,這通常是一個糟糕的舉措:
但現(xiàn)在我們不妨看一個小巧的程序,它可以幫助我們找到哪些進程/用戶在大量耗用我們系統(tǒng)的內(nèi)存。
smem這個工具可以提供Linux系統(tǒng)上內(nèi)存耗用情況方面的眾多報告。與現(xiàn)有的工具不一樣,smem可以報告實際使用的物理內(nèi)存(PSS),這是一種更有意義的指標,可以衡量虛擬內(nèi)存系統(tǒng)中的庫和應(yīng)用程序所占用的內(nèi)存數(shù)量。
由于大部分的物理內(nèi)存通常在多個應(yīng)用程序之間共享,名為實際使用物理內(nèi)存(RSS)的這個標準的內(nèi)存耗用衡量指標會大大高估內(nèi)存耗用情況。PSS這個參數(shù)而是衡量了每個應(yīng)用程序在每個共享內(nèi)存區(qū)中的“公平分配”,給出了一個切合實際的衡量指標。
smem有許多功能特性:
-
系統(tǒng)概況列表
-
按進程、映射和用戶列表
-
按用戶、映射或用戶過濾
-
來自多個數(shù)據(jù)源的可配置列
-
可配置的輸出單位和百分比
-
可配置的標題和總和
-
從/proc讀取活動數(shù)據(jù)
-
從目錄鏡像或經(jīng)過壓縮的打包文件讀取數(shù)據(jù)快照
-
面向嵌入式系統(tǒng)的輕型捕獲工具
-
內(nèi)置的圖表生成功能
安裝
如果你使用Debian、Ubuntu或Mint,可以使用下面這個命令,直接從官方軟件庫安裝smem:
$sudoapt-getinstallsmem
Arch Linux用戶可以從Arch用戶軟件庫(AUR,https://www.archlinux.org/packages/community/i686/smem/)安裝程序包。
Red Hat / Fedora / CentOS / SuSE用戶可以使用直接從官方網(wǎng)站下載的預(yù)編譯二進制代碼。為了方便起見,你可以拷貝剪貼這些命令,這些命令會將命令smen放入到你的/usr/local/bin文件夾:
cd/tmp/wgethttp://www.selenic.com/smem/download/smem-1.3.tar.gztarxvfsmem-1.3.tar.gzsudocp/tmp/smem-1.3/smem/usr/local/bin/sudochmod+x/usr/local/bin/smem
基本用法
smem可報告物理內(nèi)存使用情況,并且考慮到共享的內(nèi)存頁面。非共享內(nèi)存被報告為進程獨自占用的物理內(nèi)存(USS)。共享內(nèi)存在共享該內(nèi)存的多個進程之間平均分配。非共享內(nèi)存(USS)以及進程的共享內(nèi)存比例被報告為實際使用的物理內(nèi)存(PSS)。USS和PSS只包含物理內(nèi)存使用情況。它們并不包含已經(jīng)被置換到磁盤上的內(nèi)存。
基本用法會顯示運行中進程以及所用的內(nèi)存數(shù)量;想看看這方面的情況,運行不帶任何選項的命令smem,這會得出類似下面這樣的輸出:
#smem PIDUserCommandSwapUSSPSSRSS ....4223linuxaria/usr/lib/chromium-browser/c09144116962913214280rootpython./smem0115801183913680 2180linuxaria/usr/bin/python/usr/share/0129561469124392 2144linuxariapython/usr/lib/linuxmint/m0202522233735648 2121linuxariaThunar--daemon0133162312244404 2123linuxariaxfdesktop024004249243603213095linuxaria/usr/lib/chromium-browser/c0275363099653328 2577linuxaria/usr/bin/python/usr/lib/ub0341923511241300 2127linuxaria/home/riccio/copy/x86_64/Co040268410815224810720linuxaria/usr/lib/chromium-browser/c038684421076392810561linuxaria/usr/lib/chromium-browser/c043956481377164410579linuxaria/usr/lib/chromium-browser/c0462765029073484 5605linuxariatransmission-gtk/tmp/[kick0486165150865148 8938linuxaria/usr/lib/firefox/plugin-con0489605542871132 2186linuxaria/home/linuxaria/.dropbox-dist/0555245606164820 1722root/usr/bin/X:0-audit0-aut052360731109600810623linuxaria/usr/lib/chromium-browser/c0114224121888149236 4171linuxariachromium-browser--disable-0131044140415165780 7050linuxaria/usr/lib/thunderbird/thunde0253428256803273152 2644linuxaria/usr/lib/firefox/firefox0528420537423558992 |
所以在該示例(我的桌面)中,耗用較多內(nèi)存的進程是Firefox,占用內(nèi)存第二多的是Thunderbird。
-u是一個有用的選項,它顯示了每個用戶所耗用的內(nèi)存總量:
#smem-uUserCountSwapUSSPSSRSS daemon10196197368rtkit103003121396nobody104284421600mdm206006951808avahi205688062420syslog10103210431884messagebus10112412072048root40096568123002203372linuxaria830153986416403782222556 |
可以為該命令添加-p,顯示百分比數(shù)值:
#smem-u-pUserCountSwapUSSPSSRSS daemon10.00%0.00%0.00%0.00%rtkit10.00%0.00%0.00%0.02%nobody10.00%0.01%0.01%0.02%mdm20.00%0.01%0.01%0.02%avahi20.00%0.01%0.01%0.03%syslog10.00%0.01%0.01%0.02%messagebus10.00%0.01%0.01%0.03%root400.00%1.18%1.47%2.41%linuxaria830.00%19.29%20.48%27.58% |
或者,如果你更想看到整個系統(tǒng)的內(nèi)存使用情況,則可以使用-w選項:
#smem-w-pAreaUsedCacheNoncache firmware/hardware0.00%0.00%0.00%kernelimage0.00%0.00%0.00%kerneldynamicmemory64.55%62.42%2.13%userspacememory22.12%3.00%19.12%freememory13.33%13.33%0.00% |
說到-w,我建議另外使用選項-R REALMEM,這個值是指物理內(nèi)存數(shù)量。這讓smem可以在整個系統(tǒng)(-w)的輸出中發(fā)現(xiàn)固件/硬件所耗用的內(nèi)存數(shù)量。如果提供該選項,它還可以用作百分比所用到的總內(nèi)存大小。
#smem-R8G-w-pAreaUsedCacheNoncache firmware/hardware2.83%0.00%2.83%kernelimage0.00%0.00%0.00%kerneldynamicmemory63.02%60.95%2.07%userspacememory21.60%2.91%18.68%freememory12.56%12.56%0.00% |
借助smen,以圖形顯示linux內(nèi)存
如果借助smem(又擁有matplotlib庫),只要再借助幾個選項,就可以生成條形圖和餅形圖。
顯示帶“pss”和“uss”這兩列的條形圖:
#smem--barpid-c"pssuss"
創(chuàng)建餅形圖,顯示在運行系統(tǒng)上以“k”開頭的進程:
#smem-P'^k'--pie=name
總結(jié)
以上是生活随笔為你收集整理的Linux中怎么用smem查看内存占用情况的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux语法错误 未预期的文件结尾,c
- 下一篇: 如何解决php无法找到该页的问题