如何檢視linux系統中空閒記憶體/實體記憶體使用/剩餘記憶體
阿新 • • 發佈:2019-01-30
檢視linux系統中空閒記憶體/實體記憶體使用/剩餘記憶體
檢視系統記憶體有很多方法,但主要的是用top命令和free 命令
當執行top命令看到結果,要怎麼看呢?這裡說明一下:
Mem: 666666k total, 55555k used,並不是代表你的應用程式已經使用了55555k的記憶體,這55555k是包含了:應用程式記憶體 + 緩衝 + 快取的記憶體的。
用free命令檢視更直接:
下面是一個例子(單位是MB):
[[email protected] ~]# free -m
total used free shared buffers cached
Mem: 7982 6811 1171 0 350 5114
-/+ buffers/cache: 1346 6636
Swap: 16935 11 16924
在這裡例子中,應用程式只使用了1346MB記憶體,還有6636MB空閒記憶體可以使用.
一些簡單的計算方法:
物理已用記憶體 = 實際已用記憶體 - 緩衝 - 快取 = 6811M - 350M - 5114M
物理空閒記憶體 = 總實體記憶體 - 實際已用記憶體 + 緩衝 + 快取
應用程式可用空閒記憶體 = 總實體記憶體 - 實際已用記憶體
應用程式已用記憶體 = 實際已用記憶體 - 緩衝 - 快取
top命令的結果詳解
top命令 是Linux下常用的效能 分析工具 ,能夠實時顯示系統 中各個程序的資源佔用狀況,類似於Windows的任務管理 器。下面詳細介紹它的使用方法。
top - 02:53:32 up 16 days, 6:34, 17 users, load average: 0.24, 0.21, 0.24
Tasks: 481 total, 3 running, 474 sleeping, 0 stopped, 4 zombie
Cpu(s): 10.3%us, 1.8%sy, 0.0%ni, 86.6%id, 0.5%wa, 0.2%hi, 0.6%si, 0.0%st
Mem: 4042764k total, 4001096k used, 41668k free, 383536k buffers
Swap: 2104472k total, 7900k used, 2096572k free, 1557040k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
32497 jacky 20 0 669m 222m 31m R 10 5.6 29:27.62 firefox
4788 yiuwing 20 0 257m 18m 13m S 5 0.5 5:42.44 konsole
5657 Liuxiaof 20 0 585m 159m 30m S 4 4.0 5:25.06 firefox
4455 xiefc 20 0 542m 124m 30m R 4 3.1 7:23.03 firefox
6188 Liuxiaof 20 0 191m 17m 13m S 4 0.5 0:01.16 konsole
統計資訊區前五行是系統整體的統計資訊。第一行是任務佇列資訊,同 uptime 命令的執行結果。其內容如下:
01:06:48 當前時間
up 1:22 系統執行 時間,格式為時:分
1 user 當前登入使用者 數
load average: 0.06, 0.60, 0.48 系統負載 ,即任務佇列的平均長度。
三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。
第二、三行為程序和CPU的資訊。當有多個CPU時,這些內容可能會超過兩行。內容如下:
Tasks: 29 total 程序總數
1 running 正在執行的程序數
28 sleeping 睡眠的程序數
0 stopped 停止的程序數
0 zombie 殭屍程序數
Cpu(s): 0.3% us 使用者空間佔用CPU百分比
1.0% sy 核心 空間佔用CPU百分比
0.0% ni 使用者程序空間內改變過優先順序的程序佔用CPU百分比
98.7% id 空閒CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0% hi
0.0% si
最後兩行為記憶體 資訊。內容如下:
Mem: 191272k total 實體記憶體總量
173656k used 使用的實體記憶體總量
17616k free 空閒記憶體總量
22052k buffers 用作核心快取 的記憶體量
Swap: 192772k total 交換區總量
0k used 使用的交換區總量
192772k free 空閒交換區總量
123988k cached 緩衝的交換區總量。
記憶體中的內容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋,
該數值即為這些內容已存在於記憶體中 的交換區的大小。
相應的記憶體再次被換出時可不必再對交換區寫入。
程序資訊區統計資訊區域的下方顯示了各個程序的詳細資訊。首先來認識一下各列的含義。
序號 列名 含義
a PID 程序id
b PPID 父程序id
c RUSER Real user name
d UID 程序所有者的使用者id
e USER 程序所有者的使用者名稱
f GROUP 程序所有者的組名
g TTY 啟動程序的終端名。不是從終端啟動的程序則顯示為 ?
h PR 優先順序
i NI nice值。負值表示高優先順序,正值表示低優先順序
j P 最後使用的CPU,僅在多CPU環境 下有意義
k %CPU 上次更新到現在的CPU時間佔用百分比
l TIME 程序使用的CPU時間總計,單位秒
m TIME+ 程序使用的CPU時間總計,單位1/100秒
n %MEM 程序使用的實體記憶體 百分比
o VIRT 程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
p SWAP 程序使用的虛擬記憶體中,被換出的大小,單位kb。
q RES 程序使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
r CODE 可執行程式碼佔用的物理 記憶體大小,單位kb
s DATA 可執行程式碼以外的部分(資料 段+棧)佔用的物理 記憶體大小,單位kb
t SHR 共享記憶體大小,單位kb
u nFLT 頁面錯誤次數
v nDRT 最後一次寫入到現在,被修改過的頁面數。
w S 程序狀態。
D =不可中斷的睡眠狀態
R =執行
S =睡眠
T =跟蹤/停止
Z =殭屍程序
x COMMAND 命令名/命令列
y WCHAN 若該程序在睡眠,則顯示睡眠中的系統函式名
z Flags 任務標誌,參考 sched.h
預設情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。
更改顯示內容通過 f 鍵可以選擇顯示的內容。按 f 鍵之後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最後按回車鍵確定。
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最後按回車鍵確定。
按大寫的 F 或 O 鍵,然後按 a-z 可以將程序按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。
top命令使用過程中,還可以使用一些互動的命令來完成其它引數的功能。這些命令是通過快捷鍵啟動的。
<空格>:立刻重新整理。
P:根據CPU使用大小進行排序。
T:根據時間、累計時間排序。
q:退出top命令。
m:切換顯示記憶體資訊。
t:切換顯示程序和CPU狀態資訊。
c:切換顯示命令名稱和完整命令列。
M:根據使用記憶體大小進行排序。
W:將當前設定寫入~/.toprc檔案中。這是寫top配置檔案的推薦方法。
可以看到,top命令是一個功能十分強大的監控系統的工具,對於系統管理員而言尤其重要。但是,它的缺點是會消耗很多系統資源。
居然查看了記憶體,以下指令也會用到:
檢視CPU個數
# cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
檢視CPU核數
# cat /proc/cpuinfo | grep "cpu cores" | uniq
檢視CPU型號
# cat /proc/cpuinfo | grep 'model name' |uniq
那麼,該伺服器有2個4核CPU,型號Intel(R) Xeon(R) CPU E5630 @ 2.53GHz
佔用記憶體的測量
測量一個程序佔用了多少記憶體,linux為我們提供了一個很方便的方法,/proc目錄為我們提供了所有的資訊,實際上top等工具也通過這裡來獲取相應的資訊。
/proc/meminfo 機器的記憶體使用資訊
/proc/pid/maps pid為程序號,顯示當前程序所佔用的虛擬地址。
/proc/pid/statm 程序所佔用的記憶體
檢視系統記憶體有很多方法,但主要的是用top命令和free 命令
當執行top命令看到結果,要怎麼看呢?這裡說明一下:
Mem: 666666k total, 55555k used,並不是代表你的應用程式已經使用了55555k的記憶體,這55555k是包含了:應用程式記憶體 + 緩衝 + 快取的記憶體的。
用free命令檢視更直接:
下面是一個例子(單位是MB):
[[email protected] ~]# free -m
total used free shared buffers cached
Mem: 7982 6811 1171 0 350 5114
-/+ buffers/cache: 1346 6636
Swap: 16935 11 16924
在這裡例子中,應用程式只使用了1346MB記憶體,還有6636MB空閒記憶體可以使用.
一些簡單的計算方法:
物理已用記憶體 = 實際已用記憶體 - 緩衝 - 快取 = 6811M - 350M - 5114M
物理空閒記憶體 = 總實體記憶體 - 實際已用記憶體 + 緩衝 + 快取
應用程式可用空閒記憶體 = 總實體記憶體 - 實際已用記憶體
應用程式已用記憶體 = 實際已用記憶體 - 緩衝 - 快取
top命令的結果詳解
top命令 是Linux下常用的效能 分析工具 ,能夠實時顯示系統 中各個程序的資源佔用狀況,類似於Windows的任務管理 器。下面詳細介紹它的使用方法。
top - 02:53:32 up 16 days, 6:34, 17 users, load average: 0.24, 0.21, 0.24
Tasks: 481 total, 3 running, 474 sleeping, 0 stopped, 4 zombie
Cpu(s): 10.3%us, 1.8%sy, 0.0%ni, 86.6%id, 0.5%wa, 0.2%hi, 0.6%si, 0.0%st
Mem: 4042764k total, 4001096k used, 41668k free, 383536k buffers
Swap: 2104472k total, 7900k used, 2096572k free, 1557040k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
32497 jacky 20 0 669m 222m 31m R 10 5.6 29:27.62 firefox
4788 yiuwing 20 0 257m 18m 13m S 5 0.5 5:42.44 konsole
5657 Liuxiaof 20 0 585m 159m 30m S 4 4.0 5:25.06 firefox
4455 xiefc 20 0 542m 124m 30m R 4 3.1 7:23.03 firefox
6188 Liuxiaof 20 0 191m 17m 13m S 4 0.5 0:01.16 konsole
統計資訊區前五行是系統整體的統計資訊。第一行是任務佇列資訊,同 uptime 命令的執行結果。其內容如下:
01:06:48 當前時間
up 1:22 系統執行 時間,格式為時:分
1 user 當前登入使用者 數
load average: 0.06, 0.60, 0.48 系統負載 ,即任務佇列的平均長度。
三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。
第二、三行為程序和CPU的資訊。當有多個CPU時,這些內容可能會超過兩行。內容如下:
Tasks: 29 total 程序總數
1 running 正在執行的程序數
28 sleeping 睡眠的程序數
0 stopped 停止的程序數
0 zombie 殭屍程序數
Cpu(s): 0.3% us 使用者空間佔用CPU百分比
1.0% sy 核心 空間佔用CPU百分比
0.0% ni 使用者程序空間內改變過優先順序的程序佔用CPU百分比
98.7% id 空閒CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0% hi
0.0% si
最後兩行為記憶體 資訊。內容如下:
Mem: 191272k total 實體記憶體總量
173656k used 使用的實體記憶體總量
17616k free 空閒記憶體總量
22052k buffers 用作核心快取 的記憶體量
Swap: 192772k total 交換區總量
0k used 使用的交換區總量
192772k free 空閒交換區總量
123988k cached 緩衝的交換區總量。
記憶體中的內容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋,
該數值即為這些內容已存在於記憶體中 的交換區的大小。
相應的記憶體再次被換出時可不必再對交換區寫入。
程序資訊區統計資訊區域的下方顯示了各個程序的詳細資訊。首先來認識一下各列的含義。
序號 列名 含義
a PID 程序id
b PPID 父程序id
c RUSER Real user name
d UID 程序所有者的使用者id
e USER 程序所有者的使用者名稱
f GROUP 程序所有者的組名
g TTY 啟動程序的終端名。不是從終端啟動的程序則顯示為 ?
h PR 優先順序
i NI nice值。負值表示高優先順序,正值表示低優先順序
j P 最後使用的CPU,僅在多CPU環境 下有意義
k %CPU 上次更新到現在的CPU時間佔用百分比
l TIME 程序使用的CPU時間總計,單位秒
m TIME+ 程序使用的CPU時間總計,單位1/100秒
n %MEM 程序使用的實體記憶體 百分比
o VIRT 程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
p SWAP 程序使用的虛擬記憶體中,被換出的大小,單位kb。
q RES 程序使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
r CODE 可執行程式碼佔用的物理 記憶體大小,單位kb
s DATA 可執行程式碼以外的部分(資料 段+棧)佔用的物理 記憶體大小,單位kb
t SHR 共享記憶體大小,單位kb
u nFLT 頁面錯誤次數
v nDRT 最後一次寫入到現在,被修改過的頁面數。
w S 程序狀態。
D =不可中斷的睡眠狀態
R =執行
S =睡眠
T =跟蹤/停止
Z =殭屍程序
x COMMAND 命令名/命令列
y WCHAN 若該程序在睡眠,則顯示睡眠中的系統函式名
z Flags 任務標誌,參考 sched.h
預設情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。
更改顯示內容通過 f 鍵可以選擇顯示的內容。按 f 鍵之後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最後按回車鍵確定。
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最後按回車鍵確定。
按大寫的 F 或 O 鍵,然後按 a-z 可以將程序按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。
top命令使用過程中,還可以使用一些互動的命令來完成其它引數的功能。這些命令是通過快捷鍵啟動的。
<空格>:立刻重新整理。
P:根據CPU使用大小進行排序。
T:根據時間、累計時間排序。
q:退出top命令。
m:切換顯示記憶體資訊。
t:切換顯示程序和CPU狀態資訊。
c:切換顯示命令名稱和完整命令列。
M:根據使用記憶體大小進行排序。
W:將當前設定寫入~/.toprc檔案中。這是寫top配置檔案的推薦方法。
可以看到,top命令是一個功能十分強大的監控系統的工具,對於系統管理員而言尤其重要。但是,它的缺點是會消耗很多系統資源。
居然查看了記憶體,以下指令也會用到:
檢視CPU個數
# cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
檢視CPU核數
# cat /proc/cpuinfo | grep "cpu cores" | uniq
檢視CPU型號
# cat /proc/cpuinfo | grep 'model name' |uniq
那麼,該伺服器有2個4核CPU,型號Intel(R) Xeon(R) CPU E5630 @ 2.53GHz
佔用記憶體的測量
測量一個程序佔用了多少記憶體,linux為我們提供了一個很方便的方法,/proc目錄為我們提供了所有的資訊,實際上top等工具也通過這裡來獲取相應的資訊。
/proc/meminfo 機器的記憶體使用資訊
/proc/pid/maps pid為程序號,顯示當前程序所佔用的虛擬地址。
/proc/pid/statm 程序所佔用的記憶體