溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux中怎么用smem查看內(nèi)存占用情況

發(fā)布時(shí)間:2021-10-29 11:39:38 來源:億速云 閱讀:257 作者:小新 欄目:系統(tǒng)運(yùn)維

小編給大家分享一下Linux中怎么用smem查看內(nèi)存占用情況,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

無論是作為系統(tǒng)管理員,還是作為使用桌面版Linux的簡單用戶,你都會(huì)注意到,某個(gè)進(jìn)程在耗用你系統(tǒng)的所有內(nèi)存。

首先要明白Linux是如何管理內(nèi)存的;我多次接到用戶的反映,說運(yùn)行了free命令,就是無法適當(dāng)讀取輸出。簡而言之,如果是Linux內(nèi)核,不用擔(dān)心;內(nèi)核在耗用內(nèi)存,緩存文件呢。

放心,Linux內(nèi)核開發(fā)人員比你我更有能力找到一種優(yōu)秀的算法來緩存文件,并且當(dāng)某個(gè)進(jìn)程需要時(shí),釋放該內(nèi)存區(qū)域,所以千萬不要讓我把運(yùn)行諸如這種命令的某個(gè)任務(wù)放入計(jì)劃任務(wù)(cron):

echo 3 > /proc/sys/vm/drop_caches

當(dāng)然,之后,你會(huì)在系統(tǒng)上有更多的可用閑置內(nèi)存,但是系統(tǒng)不得不從磁盤重新讀取所有文件,所以就性能而言,這通常是一個(gè)糟糕的舉措:

但現(xiàn)在我們不妨看一個(gè)小巧的程序,它可以幫助我們找到哪些進(jìn)程/用戶在大量耗用我們系統(tǒng)的內(nèi)存。

smem這個(gè)工具可以提供Linux系統(tǒng)上內(nèi)存耗用情況方面的眾多報(bào)告。與現(xiàn)有的工具不一樣,smem可以報(bào)告實(shí)際使用的物理內(nèi)存(PSS),這是一種更有意義的指標(biāo),可以衡量虛擬內(nèi)存系統(tǒng)中的庫和應(yīng)用程序所占用的內(nèi)存數(shù)量。

由于大部分的物理內(nèi)存通常在多個(gè)應(yīng)用程序之間共享,名為實(shí)際使用物理內(nèi)存(RSS)的這個(gè)標(biāo)準(zhǔn)的內(nèi)存耗用衡量指標(biāo)會(huì)大大高估內(nèi)存耗用情況。PSS這個(gè)參數(shù)而是衡量了每個(gè)應(yīng)用程序在每個(gè)共享內(nèi)存區(qū)中的“公平分配”,給出了一個(gè)切合實(shí)際的衡量指標(biāo)。

smem有許多功能特性:

  • 系統(tǒng)概況列表

  • 按進(jìn)程、映射和用戶列表

  • 按用戶、映射或用戶過濾

  • 來自多個(gè)數(shù)據(jù)源的可配置列

  • 可配置的輸出單位和百分比

  • 可配置的標(biāo)題和總和

  • 從/proc讀取活動(dòng)數(shù)據(jù)

  • 從目錄鏡像或經(jīng)過壓縮的打包文件讀取數(shù)據(jù)快照

  • 面向嵌入式系統(tǒng)的輕型捕獲工具

  • 內(nèi)置的圖表生成功能

安裝

如果你使用Debian、Ubuntu或Mint,可以使用下面這個(gè)命令,直接從官方軟件庫安裝smem:

$ sudo apt-get install smem

Arch Linux用戶可以從Arch用戶軟件庫(AUR,https://www.archlinux.org/packages/community/i686/smem/)安裝程序包。

Red Hat / Fedora / CentOS / SuSE用戶可以使用直接從官方網(wǎng)站下載的預(yù)編譯二進(jìn)制代碼。為了方便起見,你可以拷貝剪貼這些命令,這些命令會(huì)將命令smen放入到你的/usr/local/bin文件夾:

cd /tmp/ wget http://www.selenic.com/smem/download/smem-1.3.tar.gz tar xvf smem-1.3.tar.gz sudo cp /tmp/smem-1.3/smem /usr/local/bin/ sudo chmod +x /usr/local/bin/smem

基本用法

smem可報(bào)告物理內(nèi)存使用情況,并且考慮到共享的內(nèi)存頁面。非共享內(nèi)存被報(bào)告為進(jìn)程獨(dú)自占用的物理內(nèi)存(USS)。共享內(nèi)存在共享該內(nèi)存的多個(gè)進(jìn)程之間平均分配。非共享內(nèi)存(USS)以及進(jìn)程的共享內(nèi)存比例被報(bào)告為實(shí)際使用的物理內(nèi)存(PSS)。USS和PSS只包含物理內(nèi)存使用情況。它們并不包含已經(jīng)被置換到磁盤上的內(nèi)存。

基本用法會(huì)顯示運(yùn)行中進(jìn)程以及所用的內(nèi)存數(shù)量;想看看這方面的情況,運(yùn)行不帶任何選項(xiàng)的命令smem,這會(huì)得出類似下面這樣的輸出:

# smem
  PID User     Command                         Swap      USS      PSS      RSS
.... 4223 linuxaria   /usr/lib/chromium-browser/c        0     9144    11696    29132 14280 root     python ./smem                      0    11580    11839    13680 
 2180 linuxaria   /usr/bin/python /usr/share/        0    12956    14691    24392 
 2144 linuxaria   python /usr/lib/linuxmint/m        0    20252    22337    35648 
 2121 linuxaria   Thunar --daemon                    0    13316    23122    44404 
 2123 linuxaria   xfdesktop                          0    24004    24924    36032 13095 linuxaria   /usr/lib/chromium-browser/c        0    27536    30996    53328 
 2577 linuxaria   /usr/bin/python /usr/lib/ub        0    34192    35112    41300 
 2127 linuxaria   /home/riccio/copy/x86_64/Co        0    40268    41081    52248 10720 linuxaria   /usr/lib/chromium-browser/c        0    38684    42107    63928 10561 linuxaria   /usr/lib/chromium-browser/c        0    43956    48137    71644 10579 linuxaria   /usr/lib/chromium-browser/c        0    46276    50290    73484 
 5605 linuxaria   transmission-gtk /tmp/[kick        0    48616    51508    65148 
 8938 linuxaria   /usr/lib/firefox/plugin-con        0    48960    55428    71132 
 2186 linuxaria   /home/linuxaria/.dropbox-dist/        0    55524    56061    64820 
 1722 root     /usr/bin/X :0 -audit 0 -aut        0    52360    73110    96008 10623 linuxaria   /usr/lib/chromium-browser/c        0   114224   121888   149236 
 4171 linuxaria   chromium-browser --disable-        0   131044   140415   165780 
 7050 linuxaria   /usr/lib/thunderbird/thunde        0   253428   256803   273152 
 2644 linuxaria   /usr/lib/firefox/firefox           0   528420   537423   558992

所以在該示例(我的桌面)中,耗用較多內(nèi)存的進(jìn)程是Firefox,占用內(nèi)存第二多的是Thunderbird。

-u是一個(gè)有用的選項(xiàng),它顯示了每個(gè)用戶所耗用的內(nèi)存總量:

#smem -uUser     Count     Swap      USS      PSS      RSS 
daemon       1        0      196      197      368 rtkit        1        0      300      312     1396 nobody       1        0      428      442     1600 mdm          2        0      600      695     1808 avahi        2        0      568      806     2420 syslog       1        0     1032     1043     1884 messagebus     1        0     1124     1207     2048 root        40        0    96568   123002   203372 linuxaria      83        0  1539864  1640378  2222556

可以為該命令添加-p,顯示百分比數(shù)值:

#smem -u -pUser     Count     Swap      USS      PSS      RSS 
daemon       1    0.00%    0.00%    0.00%    0.00% rtkit        1    0.00%    0.00%    0.00%    0.02% nobody       1    0.00%    0.01%    0.01%    0.02% mdm          2    0.00%    0.01%    0.01%    0.02% avahi        2    0.00%    0.01%    0.01%    0.03% syslog       1    0.00%    0.01%    0.01%    0.02% messagebus     1    0.00%    0.01%    0.01%    0.03% root        40    0.00%    1.18%    1.47%    2.41% linuxaria      83    0.00%   19.29%   20.48%   27.58%

或者,如果你更想看到整個(gè)系統(tǒng)的內(nèi)存使用情況,則可以使用-w選項(xiàng):

#smem -w -pArea                           Used      Cache   Noncache 
firmware/hardware             0.00%      0.00%      0.00% kernel image                  0.00%      0.00%      0.00% kernel dynamic memory        64.55%     62.42%      2.13% userspace memory             22.12%      3.00%     19.12% free memory                  13.33%     13.33%      0.00%

說到-w,我建議另外使用選項(xiàng)-R REALMEM,這個(gè)值是指物理內(nèi)存數(shù)量。這讓smem可以在整個(gè)系統(tǒng)(-w)的輸出中發(fā)現(xiàn)固件/硬件所耗用的內(nèi)存數(shù)量。如果提供該選項(xiàng),它還可以用作百分比所用到的總內(nèi)存大小。

#smem -R 8G -w -pArea                           Used      Cache   Noncache 
firmware/hardware             2.83%      0.00%      2.83% kernel image                  0.00%      0.00%      0.00% kernel dynamic memory        63.02%     60.95%      2.07% userspace memory             21.60%      2.91%     18.68% free memory                  12.56%     12.56%      0.00%

借助smen,以圖形顯示linux內(nèi)存

如果借助smem(又擁有matplotlib庫),只要再借助幾個(gè)選項(xiàng),就可以生成條形圖和餅形圖。

顯示帶“pss”和“uss”這兩列的條形圖:

#smem --bar pid -c "pss uss"

Linux中怎么用smem查看內(nèi)存占用情況

創(chuàng)建餅形圖,顯示在運(yùn)行系統(tǒng)上以“k”開頭的進(jìn)程:

#smem -P '^k' --pie=name

Linux中怎么用smem查看內(nèi)存占用情況

以上是“Linux中怎么用smem查看內(nèi)存占用情況”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI