用 smem 命令獲取內存使用統計信息
在我的編程工作中,我經常需要了解網頁應用的內存使用情況。在深入研究細節和瀏覽器剖析工具之前,一個粗略的估計通常就足夠了。
為了了解 Linux 或 macOS 上的內存使用情況,人們通常使用 top 或 htop。我很想看到一個單一的數字:一個進程佔用了多少內存。但這些工具所顯示的統計數據可能很難理解。對於網頁瀏覽器來說,它甚至更加複雜,因為它們經常運行許多獨立的進程。它們在 top
輸出中顯示為一個長長的列表,每一個都有自己的單獨指標。
![Memory usage using htop](/data/attachment/album/202110/25/101853izcyy0bttz1ltbx2.png "Memory usage using htop")
smem 命令
幸運的是有 smem,另一個用於查看內存使用統計的命令行工具。用你選擇的包管理器安裝它,例如:
sudo apt install smem
要獲得 Firefox 的總內存使用量,請執行:
smem -c pss -P firefox -k -t | tail -n 1
這些開關做了什麼?
-c
開關指定要顯示的列。我只對pss
列感興趣,它顯示一個進程分配的內存。-P
開關過濾進程,只包括那些名字里有firefox
的進程。-k
開關顯示以 MB/GB 為單位的內存使用情況,而不是單純的位元組數。-t
開關顯示總數。tail -n 1
過濾器只輸出最後一行,也就是總數的地方。
輸出是非常簡單的:
$ smem -t -k -c pss -P firefox | tail -n 1
4.9G
開門見山!而且,經過又一天忙碌的工作,打開了 50 多個選項卡,Firefox 仍然只使用 5 GB。看看吧,Google Chrome。
用一個腳本更容易
為了方便起見,我創建一個名為 memory-use
的小腳本,它將進程名稱作為參數。我把所有的腳本都放在 ~/bin
里,所以:
echo 'smem -c pss -P "$1" -k -t | tail -n 1' > ~/bin/memory-use && chmod +x ~/bin/memory-use
現在我可以很容易地測量任何應用的內存使用:
memory-use firefox
memory-use chrome
memory-use slack
還有更多!
該工具不僅可以顯示總的內存使用情況。它甚至可以生成圖形輸出。
比如:
smem --pie name -c pss
顯示類似這樣的內容:
![Pie chart output from smem](/data/attachment/album/202110/25/101854lvgfcmc3ikkeb6mh.png "Pie chart output from smem")
關於更多的細節,我建議查看 smem 手冊頁。
你可以在 https://linoxide.com/memory-usage-reporting-smem/ 上找到另一個很棒的教程。
希望你喜歡!
本文最初發表在作者的博客上,並經許可轉載。
via: https://opensource.com/article/21/10/memory-stats-linux-smem
作者:Tomasz Waraksa 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive