跳到主要內容

linux下的top命令參數說明

  原文連結:https://beyondnews852.com/20230728/155064/

Top裡面描述進程記憶體使用量的資料來源於/proc/$pid/statm這個檔。通過觀察kernel的代碼就能弄清楚SHR,VIRT和RES這些數值的具體含義。

%mem 記憶體使用率
virt 是虛擬記憶體
res是常駐記憶體
shr是共用記憶體
top命令下按f鍵可以看到詳細說明

A: PID = Process Id
E: USER = User Name
H: PR = Priority
I: NI = Nice value
O: VIRT = Virtual Image (kb)
Q: RES = Resident size (kb)
T: SHR = Shared Mem size (kb)
W: S = Process Status
K: %CPU = CPU usage
N: %MEM = Memory usage (RES)
M: TIME+ = CPU Time, hundredths
b: PPID = Parent Process Pid
c: RUSER = Real user name
d: UID = User Id
f: GROUP = Group Name
g: TTY = Controlling Tty
j: P = Last used cpu (SMP)
p: SWAP = Swapped size (kb)
l: TIME = CPU Time
r: CODE = Code size (kb)
s: DATA = Data+Stack size (kb)
u: nFLT = Page Fault count
v: nDRT = Dirty Pages count
y: WCHAN = Sleeping in Function
z: Flags = Task Flags
A: PID = Process Id
E: USER = User Name
H: PR = Priority
I: NI = Nice value
O: VIRT = Virtual Image (kb)
Q: RES = Resident size (kb)
T: SHR = Shared Mem size (kb)
W: S = Process Status
K: %CPU = CPU usage
N: %MEM = Memory usage (RES)
M: TIME+ = CPU Time, hundredths
b: PPID = Parent Process Pid
c: RUSER = Real user name
d: UID = User Id
f: GROUP = Group Name
g: TTY = Controlling Tty
j: P = Last used cpu (SMP)
p: SWAP = Swapped size (kb)
l: TIME = CPU Time
r: CODE = Code size (kb)
s: DATA = Data+Stack size (kb)
u: nFLT = Page Fault count
v: nDRT = Dirty Pages count
y: WCHAN = Sleeping in Function
z: Flags = Task Flags
X: COMMAND = Command name/line
top命令下要查看某個使用者啟動的進程:先輸入u,然後輸入用戶名,再回車
VIRT: virtual memory usage。Virtual這個詞很神,一般解釋是:virtual adj.虛的, 實質的, [物]有效的, 事實上的。到底是虛的還是實的?讓Google給Define之後,將就明白一點,就是這東西還是非物質的,但是有效果的,不發生在真實世界的,發生在軟 件世界的等等。這個記憶體使用就是一個應用佔有的位址空間,只是要應用程式要求的,就全算在這裡,而不管它真的用了沒有。寫程式怕出錯,又不在乎佔用的時 候,多開點記憶體也是很正常的。
RES: resident memory usage。常駐記憶體。這個值就是該應用程式真的使用的記憶體,但還有兩個小問題,一是有些東西可能放在交換盤上了(SWAP),二是有些記憶體可能是共用的。
SHR: shared memory。共用記憶體。就是說這一塊記憶體空間有可能也被其他應用程式使用著;而Virt - Shr似乎就是這個程式所要求的並且沒有共用的記憶體空間。
DATA: 資料佔用的記憶體。如果top沒有顯示,按f鍵可以顯示出來。這一塊是真正的該程式要求的資料空間,是真正在運行中要使用的。

top裡面描述進程記憶體使用量的資料來源於/proc/$pid/statm這個檔。通過觀察kernel的代碼就能弄清楚SHR,VIRT和RES這些數值的具體含義。
Linux通過一個叫做 task_statm 的函數來返回進程的記憶體使用狀況
int task_statm(struct mm_struct *mm, int *shared, int *text,
int *data, int *resident)
{
*shared = get_mm_counter(mm, file_rss);
*text = (PAGE_ALIGN(mm->end_code) - (mm->start_code & PAGE_MASK))
>> PAGE_SHIFT;
*data = mm->total_vm - mm->shared_vm;
*resident = *shared + get_mm_counter(mm, anon_rss);
return mm->total_vm;
}
上面的代碼中shared就是page cache裡面實際使用了的實體記憶體的頁數,text是代碼所佔用的頁
數,data是總虛擬記憶體頁數減去共用的虛擬記憶體頁數,resident是所有在使用的實體記憶體的頁
數。最後返回的mm->total_vm是進程虛擬記憶體的定址空間大小。
函數get_mm_counter並不會做什麼計算,它的功能是保證數值讀取的原子性。
上面的數值最後會通過 procfs輸出 到/proc/$pid/statm中去。他們與top顯示的數值對應關係如下。
SHR: shared
RES: resident
VIRT: mm->total_vm
CODE: code
DATA: data

o: VIRT (Virtual Image) - 進程使用的總虛擬記憶體 (virtual memory) 大小,包括進程的程式碼、資料和共用程式庫再加上被置換 (swap out) 的空間。VIRT = SWAP + RES
p: SWAP (Swapped size) - 進程被置換的虛擬記憶體空間大小。
q: RES (Resident size) - 進程非被置換的實體記憶體大小。RES = CODE + DATA
r: CODE' (Code size) - 進程的程式碼在實體記憶體佔用空間大小,亦叫作 text resident set (TRS)。
s: DATA (Data+Stack size) - 進程佔用實體記憶體中的非程式碼部份大小,亦叫作 data resident set (DRS)。
t: SHR (Shared Mem size) - 進程使用的共用記憶體大小,即可以和其他進程共用的記憶體空間。
n: %MEM (Memory usage) - 進程佔用實體記憶體大小對系統總實體記憶體大小的比例,以百分比顯示。

留言

這個網誌中的熱門文章

上天眷顧續闖音樂路 陶贊新復出開心圓夢

只要談到音樂,陶贊新便有說不完的話題 2022年因為訪問黃寶欣,我認識了唱片監製陶贊新(Jentzon)。陶贊新,上世紀八十年代知名香港城市民歌手,唱過《童真》、《靈芝草》及《越野BMX》等歌曲,其後輾轉加入電台,從事幕後工作及進入唱片公司擔任錄音師和唱片監製,九十年代因要幫...

【教學】網路流量創造收入 掛網追劇也躺著掙錢

  原文連結: https://beyondnews852.com/20220502/105452/ 有沒有想過上網流量也可以化為收入? 今天要介紹的,是一款與 honeygain 相同概念的軟體,不需要點擊廣告、不需要填問卷,只需要有網路並開著電腦就可以掛機,不斷把流量化為收入賺美金,軟體名稱為《IPRoyal Pawns》。此軟體並 不會 讀取搜集你裝置上的儲存裝置資料。﹝點擊 我的邀請碼 連結,註冊就自動有 1美金 入帳﹞ 什麼是 IPRoyal Pawns? IPRoyal Pawns是一款完全放置型的掛機軟體,這家公司成立的目的是為了市場商業研究,藉此軟體觀察使用者的「網路流量」,來記錄使用者一些網絡連接的用途,藉此取得一些統計數據,並為客戶提供企業顧問服務,協助企業在行銷上的參考,而使用者的收益來源則為公司企業所提供的研究資金。 這些數據用於以下用途: 商業智慧(Business Intelligence) 搜尋引擎最佳化(SEO) 軟體相關測試 內容傳遞網路 品牌保護 廣告驗證 市場調查 公司賺錢模式 注冊 可使用 我的邀請碼 進入 IPRoyal 網站 註冊一個帳號 ﹝點擊 我的邀請碼 連結,註冊就自動有 1美金 入帳﹞。 Referrals 推廣連結 : https://iproyal.com/pawns?r=658373 註冊支持 FB、Google ,或直接填寫email、密碼,點選 sign up 註冊。 帳號註冊 信箱認證 登入你的注冊信箱,尋找認證信件 --> 點選  verify email 。 認證帳號 安裝 登入您的帳戶後,便可檢視您的帳戶,下載並安裝IPRoyal Pawns軟體,現在可以支持PC、MAC、Android三種平台安裝。 軟體下載 桌面版 下載安裝完畢後,就能夠在電腦的右下角選單中看到一個像皇冠的圖示,此時就可以開始你的掛網之旅囉。 IPRoyal Icon 點擊 我的邀請碼 連結,註冊就自動有 1美金 入帳 IPRoyal儀表板 IPRoyal後台 積分換成美元的轉換比例為何? 每 1GB 共享支付 0.20 美元,用戶平均每月可以賺取 5 美元到 140 美元,只需在設備上保持我們的應用程序處於活動狀態。 較不耗費硬體資源 IPRoyal...

全世界都知道怎麼減肥,可你瘦了嗎?看看荷李活明星的食譜吧

全世界的人都知道怎麼減肥:少動嘴,邁開腿。禁食,這條減肥界的黃金定律已經盛行了幾十年,讓一些人真的瘦下來了,讓一些人的胸瘦下來了,可大部分人在減肥之路上頭破血流、鎩羽而歸。 網絡上流傳着各式各樣的減肥方法,拋開那些有損身體健康的不談,讓我們看一下國際上...