1. 程式人生 > >meminfo vmstat procrank top等詳解

meminfo vmstat procrank top等詳解

meminfo

命令:cat /proc/meminfo

例項:

MemTotal:         234312 kB

MemFree:            3448 kB

Buffers:              92 kB

Cached:            18052 kB

SwapCached:        25556 kB

Active:            50564 kB

Inactive:          50236 kB

Active(anon):      41924 kB

Inactive(anon):    41968 kB

Active(file):       8640 kB

Inactive(file):     8268 kB

Unevictable:        1164 kB

Mlocked:           17028 kB

HighTotal:             0 kB

HighFree:              0 kB

LowTotal:         234312 kB

LowFree:            3448 kB

SwapTotal:        196604 kB

SwapFree:         114384 kB

Dirty:                 0 kB

Writeback:             0 kB

AnonPages:         83900 kB

Mapped:            53944 kB

Shmem:                44 kB

Slab:              17540 kB

SReclaimable:       5828 kB

SUnreclaim:        11712 kB

KernelStack:        4184 kB

PageTables:         5304 kB

NFS_Unstable:          0 kB

Bounce:                0 kB

WritebackTmp:          0 kB

CommitLimit:      313760 kB

Committed_AS:    2792956 kB

VmallocTotal:     778240 kB

VmallocUsed:      115160 kB

VmallocChunk:     405852 kB

解釋:

MemTotal: 所有可用RAM大小 (即實體記憶體減去一些預留位和核心的二進位制程式碼大小)

    MemFree: LowFree與HighFree的總和

    Buffers: 用來給塊裝置做的緩衝大小(只記錄檔案系統的metadata以及 tracking in-flight pages,就是說 buffers是用來儲存,目錄裡面有什麼內容,許可權等等。)

    Cached: 用來給檔案做緩衝大小(直接用來記憶我們開啟的檔案). 它不包括SwapCached

    SwapCached: 已經被交換出來的記憶體,但仍然被存放在swapfile中。用來在需要的時候很快的被替換而不需要再次開啟I/O埠。

    Active: 最近經常被使用的記憶體,除非非常必要否則不會被移作他用.

    Inactive: 最近不經常被使用的記憶體,非常用可能被用於其他途徑.

    HighTotal:
    HighFree: 高位記憶體是指所有在860MB以上的記憶體空間,該區域主要用於使用者空間的程式或者是快取頁面。核心必須使用不同的手法使用該段記憶體,因此它比低位記憶體要慢一些。

    LowTotal:
    LowFree: 低位可以達到高位記憶體一樣的作用,而且它還能夠被核心用來記錄一些自己的資料結構。
                   Among many other things, it is where everything from the Slab is
                   allocated.  Bad things happen when you're out of lowmem.

    SwapTotal: 交換空間的總和

    SwapFree: 從RAM中被替換出暫時存在磁碟上的空間大小

    Dirty: 等待被寫回到磁碟的記憶體大小。

    Writeback: 正在被寫回到磁碟的記憶體大小。

    Mapped: 影射檔案的大小。

    Slab: 核心資料結構快取

    VmallocTotal: vmalloc記憶體大小

    VmallocUsed: 已經被使用的虛擬記憶體大小。

    VmallocChunk: largest contigious block of vmalloc area which is free

    CommitLimit: Based on the overcommit ratio('vm.overcommit_ratio'),
              this is the total amount of  memory currently available to
              be allocated on the system. This limit is only adhered to
              if strict overcommit accounting is enabled (mode 2 in
              'vm.overcommit_memory').
              The CommitLimit is calculated with the following formula:
              CommitLimit = ('vm.overcommit_ratio' * Physical RAM) + Swap
              For example, on a system with 1G of physical RAM and 7G
              of swap with a `vm.overcommit_ratio` of 30 it would
              yield a CommitLimit of 7.3G.
              For more details, see the memory overcommit documentation
              in vm/overcommit-accounting.
            
Committed_AS: The amount of memory presently allocated on
the system.
The committed memory is a sum of all of the memory which
              has been allocated by processes, even if it has not been
              "used" by them as of yet. A process which malloc()'s 1G
              of memory, but only touches 300M of it will only show up
              as using 300M of memory even if it has the address space
              allocated for the entire 1G. This 1G is memory which has
              been "committed" to by the VM and can be used at any time
              by the allocating application. With strict overcommit
              enabled on the system (mode 2 in 'vm.overcommit_memory'),
              allocations which would exceed the CommitLimit (detailed
              above) will not be permitted. This is useful if one needs
              to guarantee that processes will not fail due to lack of
              memory once that memory has been successfully allocated.

    VmallocTotal: 可以vmalloc虛擬記憶體大小

    VmallocUsed: 已經被使用的虛擬記憶體大小。

    VmallocChunk: largest contigious block of vmalloc area which is free

提示:

使用adb shell cat /proc/meminfo 命令,檢視剩餘的空間還有多少,通常的系統剩餘空間是: MemFree + cached

      如下看到的系統剩餘空間是:5616K + 158632K         cat proc/meminfo
          MemTotal:         483724 kB
          MemFree:            5616 kB
          Buffers:            2732 kB
          Cached:           158632 kB
          SwapCached:            0 kB
          Active:           277336 kB
          Inactive:          83232 kB
         Active(anon):     197452 kB        需要注意的是,在setting->apps->running app裡面看到的剩餘空間是上述MemFree + cached + background running app memory - SECOND_SERVER_MEM,具體的計算方法參考:RunningProcessView.java(/alps/package/apps/settings/src/com/android/setting/applications)裡面的void refreshUi(boolean dataChanged)函式 vmstat [[email protected] ~]# vmstat -n 3       (每個3秒重新整理一次) 
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b   swpd   free   buff cache   si   so    bi    bo   in    cs us sy id wa
1 0    144 186164 105252 2386848    0    0    18   166   83     2 48 21 31 0 
2 0    144 189620 105252 2386848    0    0     0   177 1039 1210 34 10 56 0 
0 0    144 214324 105252 2386848    0    0     0    10 1071   670 32 5 63 0 
0 0    144 202212 105252 2386848    0    0     0   189 1035   558 20 3 77 0 
2 0    144 158772 105252 2386848    0    0     0   203 1065 2832 70 14 15 0
vmstat所帶引數請用man vmstat檢視
Procs 
r: 等待執行的程序數 b: 處在非中斷睡眠狀態的程序數 w: 被交換出去的可執行的程序數。此數由 linux 計算得出,但 linux 並不耗盡交換空間 
Memory 
swpd: 虛擬記憶體使用情況,單位:KB
free: 空閒的記憶體,單位KB
buff: 被用來做為快取的記憶體數,單位:KB
Swap 
si: 從磁碟交換到記憶體的交換頁數量,單位:KB/秒
so: 從記憶體交換到磁碟的交換頁數量,單位:KB/秒
IO 
bi: 傳送到塊裝置的塊數,單位:塊/秒
bo: 從塊裝置接收到的塊數,單位:塊/秒
System 
in: 每秒的中斷數,包括時鐘中斷
cs: 每秒的環境(上下文)切換次數
CPU 
按 CPU 的總使用百分比來顯示 
us: CPU 使用時間
sy: CPU 系統使用時間
id: 閒置時間
準測
r,b≈0,
如果fre,將會出現連續不斷的頁面排程,將導致系統性能問題。
對於page列,re,pi,po,cy維持於比較穩定的狀態,PI率不超過5,如果有pagin發生,那麼關聯頁面必須先進行pageout
在記憶體相對緊張的環境下pagein會強制對不同的頁面進行steal操作。如果系統正在讀一個大批的永久頁面,你也許可以看到po和pi列
會出現不一致的增長,這種情景並不一定表明系統負載過重,但是有必要對應用程式的資料訪問模式進行見檢查。在穩定的情況下,掃描率和重置率幾乎相等,在
多個程序處理使用不同的頁面的情況下,頁面會更加不穩定和雜亂,這時掃描率可能會比重置率高出。
faults列,in,sy,cs會不斷跳躍,這裡沒有明確的限制,唯一的就是這些值最少大於100
cpu列,us,sys,id和wa也是不確定的,最理想的狀態是使cpu處於100%工作狀態,單這隻適合單使用者的情況下。
如果在多使用者環境中us+sys》80,程序就會在執行佇列中花費等待時間,響應時間和吞吐量就會下降。wa>40表明磁碟io沒有也許存在不合理的平衡,或者對磁碟操作比較頻繁,
vmstat各項:
procs: 
r-->在執行佇列中等待的程序數 
b-->在等待io的程序數 
w-->可以進入執行佇列但被替換的程序 
memoy 
swap-->現時可用的交換記憶體(k表示) 
free-->空閒的記憶體(k表示) 
pages 
re--》回收的頁面 
mf--》非嚴重錯誤的頁面 
pi--》進入頁面數(k表示) 
po--》出頁面數(k表示) 
fr--》空餘的頁面數(k表示) 
de--》提前讀入的頁面中的未命中數 
sr--》通過時鐘演算法掃描的頁面 
disk 顯示每秒的磁碟操作。 s表示scsi盤,0表示盤號 
fault 顯示每秒的中斷數 
in--》裝置中斷 
sy--》系統中斷 
cy--》cpu交換 
cpu 表示cpu的使用狀態 
cs--》使用者程序使用的時間 
sy--》系統程序使用的時間 
id--》cpu空閒的時間 
如果 r經常大於 4 ,且id經常少於40,表示cpu的負荷很重。 
如果pi,po 長期不等於0,表示記憶體不足。 
如果disk 經常不等於0, 且在 b中的佇列 大於3, 表示 io效能不好。
Linux在具有高穩定性、可靠性的同時,具有很好的可伸縮性和擴充套件性,能夠針對不同的應用和硬體環境調整,優化出滿足當前應用需要的最佳效能。因此企業在維護Linux系統、進行系統調優時,瞭解系統性能分析工具是至關重要的。
  在Linux下有很多系統性能分析工具,比較常見的有top、free、ps、time、timex、uptime等。下文將介紹幾個較為重要的效能分析工具vmstat、iostat和sar及其使用。 
  用vmstat監視記憶體使用情況 
  vmstat是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、程序、CPU活動進行監視。它是對系統的整體情況進行統計,不足之處是無法對某個程序進行深入分析。 
  vmstat的語法如下: 

  vmstat [-V] [-n] [delay [count]]
  其中,-V表示打印出版本資訊;-n表示在週期性迴圈輸出時,輸出的頭部資訊僅顯示一次;delay是兩次輸出之間的延遲時間;count是指按照這個時間間隔統計的次數。對於vmstat輸出各欄位的含義,可執行man vmstat檢視
procrank 使用adb shell procrank 命令(僅ENG版本可用),檢視有哪些app佔用記憶體過多,請以PSS欄位為參考,重點關注自己安裝的一些APK以及PSS值比較大的process      adb shell procrank
       PID      Vss      Rss      Pss      Uss  cmdline
       476   65312K   65284K   38499K   35560K  com.android.launcher
      268   54916K   54880K   30001K   27000K  system_server
      110   32196K   28988K   18924K   12432K  /system/bin/surfaceflinger
      347   42400K   42320K   15445K   10704K  com.android.systemui
對於尚明中佔用比較異常的process,可以透過 adb shell showmap [pid](僅ENG版本可用)檢視具體使用情況。以system_server 為例,先adb shell ps system_server得到pid:     adb shell ps system_server          USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
        system    268   111   406736 54876 ffffffff 400e9c70 S system_server     再  adb shell showmap 268檢視各個.so以及 heap,stack的使用情況,做初步的判斷(同樣以PSS欄位參考)

top

top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於Windows的工作管理員。下面詳細介紹它的使用方法。

top - 01:06:48 up  1:22,  1 user,  load average: 0.06, 0.60,  0.48
            Tasks:  29 total,   1 running,  28 sleeping,   0 stopped,   0  zombie
            Cpu(s):  0.3% us,  1.0% sy,  0.0% ni, 98.7% id,  0.0% wa,  0.0%  hi,  0.0% si
            Mem:    191272k total,   173656k used,    17616k free,    22052k  buffers
            Swap:   192772k total,        0k used,   192772k free,   123988k  cached
            
            PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM     TIME+  COMMAND
            1379 root      16   0  7976 2456 1980 S  0.7  1.3   0:11.03  sshd
            14704 root      16   0  2128  980  796 R  0.7  0.5   0:02.72 top
            1 root      16   0  1992  632  544 S  0.0  0.3   0:00.90 init
            2 root       34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
            3 root       RT   0     0    0    0 S  0.0  0.0   0:00.00  watchdog/0

統計資訊區前五行是系統整體的統計資訊。第一行是任務佇列資訊,同 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 鍵之後會顯示列的列表,按 a-z  即可顯示或隱藏對應的列,最後按回車鍵確定。
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z  可以將相應的列向左移動。最後按回車鍵確定。
按大寫的 F 或 O 鍵,然後按 a-z 可以將程序按照相應的列進行排序。而大寫的  R 鍵可以將當前的排序倒轉。

相關推薦

meminfo vmstat procrank top

meminfo 命令:cat /proc/meminfo 例項: MemTotal:         234312 kB MemFree:            3448 kB Buffers:              92 kB Cached:      

linux top 命令

ctrl+ 一次 所有 使用方法 ase 隱藏 統計 ini 前臺 top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。下面詳細介紹它的使用方法。top - 01:06:48 up 1:22, 1 user

[js高手之路] es6系列教程 - 叠代器,生成器,for...of,entries,values,keys

== 我會 item 獲取 prot ron 原型對象 檢測 ges 接著上文[js高手之路] es6系列教程 - 叠代器與生成器詳解繼續. 在es6中引入了一個新的循環結構for ....of, 主要是用來循環可叠代的對象,那麽什麽是可叠代的對象呢? 可叠代的對象一

top命令之深入了CPU

綁核 top cpu top tasksettop命令之你不一定懂的cpu顯示信息http://www.cnblogs.com/wjoyxt/p/4918742.html理解CPU steal timehttp://blog.csdn.net/jessysong/article/details/7

linux top命令

swa mem img 針對 alt 線程 opp 分區 緩存 Linux系統可以通過top命令查看系統的CPU、內存、運行時間、交換分區、執行的線程等信息。通過top命令可以有效的發現系統的缺陷出在哪裏。是內存不夠、CPU處理能力不夠、IO讀寫過高。

top命令

top linux 監控 top工具top是linux常用的性能分析工具,能夠實時顯示各個進程的資源使用情況。在命令行輸入 top 即可進入[root@tigerfive ~]# toptop - 07:47:17 up 28 min, 2 users, load average: 1.08,

第七課-第四講 07_04_特殊權限SUID

人的 大寫 backup 就是 取值 特殊權限 詳解 -- 執行 第七課-第四講 07_04_特殊權限SUID等詳解 一. 特殊權限 SUID: 運行某程序時,相應進程的屬主是該程序文件自身的屬主,而不是啟動者chmod u+s filechmod u-s file文件本

IP地址使用,分類

目錄 一、IP地址和MAC地址 二、IP地址的分類 三、保留的特殊IP地址 四、公網和私網IP地址 一、IP地址和MAC地址 1、MAC地址 MAC(Media Access Control,介質訪問控制)地址,或稱為實體地址,也叫硬體地址,用來定義網路裝置的位置,M

效能測試監控 top命令

top命令可以實時動態地檢視系統的整體執行情況,是一個綜合了多方資訊監測系統性能和執行資訊的實用工具。通過top命令所提供的互動式介面,用熱鍵可以管理。 語法 top(選項) 選項 -b:以批處理模式操作; -c:顯示完整的治命令; -d:螢幕重新整理間隔時間; -I:忽

java基礎 String,equal,final

對於這個系列裡的問題,每個學Java的人都應該搞懂。當然,如果只是學Java玩玩就無所謂了。如果你認為自己已經超越初學者了,卻不很懂這些問題,請將你自己重歸初學者行列。內容均來自於CSDN的經典老貼。 問題一:我聲明瞭什麼! String s = "Hello world!"; 許多人都

【linux】top命令

1、引數詳解 $ top -help procps-ng version 3.3.9 Usage: top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols] -b:列印所有程式 -c

Linux-top命令

top命令算是最直觀、好用的檢視伺服器負載的命令了。它實時動態重新整理顯示伺服器狀態資訊,且可以通過互動式命令自定義顯示內容,非常強大。 在終端中輸入top,回車後會顯示如下內容: top - 21:48:39 up 8:57, 2 users, load average: 0.36, 0.24,

Linux 中ps 和 top命令

ps 和 top 命令常用來檢視Linux系統程序相關資訊。 ps命令:可以檢視程序的瞬間資訊。 top命令:可以持續的監視程序的資訊。 場景一:如何檢視Linux系統中存在mysql、nginx、tomcat程序? 方法一:輸入命令:ps -ef|grep

javaweb學習(三):applicationContext.xml文件解析,配置

applicationContext.xml是Spring的配置檔案,當然可以不用這個名稱,在載入的時候指定即可,不過為了減少必要的報錯,建議初期還是使用這個名稱吧,畢竟這是spring預設的名稱。 一、applicationContext.xml作用: 我們學

Linux系統性能分析命令vmstat,iostat,sar使用

當系統業務出現異常,需要對系統性能進行分析時,從何下手是個問題。因為效能分析是個很系統的問題,它可能是系統軟體層面的問題,也可能是底層硬體有異常,所以這些用於分析的命令側重點也有所不同,例如:vmstat/top則偏重於觀察系統程序的CPU和記憶體使用情況,而iostat則是檢查OS與儲存之間的IO

效能測試分析工具-linux top命令

top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於Windows的工作管理員。下面詳細介紹它的使用方法。 top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48

miRNA的特徵、功能及識別方法

什麼是miRNA   MicroRNAs (miRNAs)是一種大小約21—23個鹼基的單鏈小分子RNA,是由具有髮夾結構的約70-90個鹼基大小的單鏈RNA前體經過Dicer酶加工後生成,不同於siRNA(雙鏈)但是和siRNA密切相關。據推測,這些非編碼小分子RNA(miRNAs)參與調控基因表達,但其機

Python學習(類的屬性、繼承、覆蓋

Tips:如果是從基礎部分一路跟著過來的朋友,需要告訴你們的是我偷偷吧程式設計工具PyCharm裝上了,今天算是進入面向物件程式設計環節。本人使用的程式設計工具是PyCharm,未安裝的可以先去官網下載安裝。下面進入正題。 如果我們用可樂來代表一個類,那麼可樂的配方(for

Linux top指令

轉自:https://www.cnblogs.com/dragonsuc/p/5512797.html 檢視多核CPU命令 mpstat -P ALL  和  sar -P ALL  說明:sar -P ALL > aaa.txt   重定向輸出內容到檔案 aa

Linux CPU 100%問題 | top 命令

top 命令是 Linux 下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,常用於服務端效能分析。 top 命令說明 [tongqianzhang@shwgq-t-tomcat-188-193 ~]$ top top - 16