linux中查看docker內存占用情況


TOP

該命令會查看系統的各項指標情況

 

 經常用來監控linux的系統狀況,比如cpu、內存的使用,程序員基本都知道這個命令,但比較奇怪的是能用好它的人卻很少,例如top監控視圖中內存數值的含義就有不少的曲解。
本文通過一個運行中的WEB服務器的top監控截圖,講述top視圖中的各種數據的含義,還包括視圖中各進程(任務)的字段的排序。

 第一行:
    10:08:45 — 當前系統時間
    10 days, 3:05 — 系統已經運行了10天3小時5分鍾(在這期間沒有重啟過)
    1 users — 當前有1個用戶登錄系統
    load average: 0.00, 0.00, 0.00 — load average后面的三個數分別是1分鍾、5分鍾、15分鍾的負載情況。

load average數據是每隔5秒鍾檢查一次活躍的進程數,然后按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。

    第二行:
    Tasks — 任務(進程),系統現在共有135個進程,其中處於運行中的有1個,134個在休眠(sleep),stoped狀態的有0個,zombie狀態(僵屍)的有0個。

    第三行:cpu狀態
    0.3% us — 用戶空間占用CPU的百分比。
    0.0% sy — 內核空間占用CPU的百分比。
    0.0% ni — 改變過優先級的進程占用CPU的百分比
    99.7% id — 空閑CPU百分比
    0.0% wa — IO等待占用CPU的百分比
    0.0% hi — 硬中斷(Hardware IRQ)占用CPU的百分比
    0.0% si — 軟中斷(Software Interrupts)占用CPU的百分比

在這里CPU的使用比率和windows概念不同,如果你不理解用戶空間和內核空間,需要充充電了。

    第四行:內存狀態
    3808060k total — 物理內存總量(4GB)
    3660048k used — 使用中的內存總量(3.6GB)
    148012k free — 空閑內存總量(148M)
    359760k buffers — 緩存的內存量 (359M)

    第五行:swap交換分區
    4184924k total — 交換區總量(4G)
    0k used — 使用的交換區總量(0M)
    4184924k free — 空閑交換區總量(4G)
    2483956k cached — 緩沖的交換區總量(2483M)

第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,空閑內存總量(free)是內核還未納入其管控范圍的數量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重復利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用為此擔心。

如果出於習慣去計算可用內存數,這里有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached,按這個公式此台服務器的可用內存:148M+259M+2483M = 2990M。

對於內存監控,在top里我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。

 第六行是空行

    第七行以下:各進程(任務)的狀態監控
    PID — 進程id
    USER — 進程所有者
    PR — 進程優先級
    NI — nice值。負值表示高優先級,正值表示低優先級
    VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
    RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
    SHR — 共享內存大小,單位kb
    S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程
    %CPU — 上次更新到現在的CPU時間占用百分比
    %MEM — 進程使用的物理內存百分比
    TIME+ — 進程使用的CPU時間總計,單位1/100秒
    COMMAND — 進程名稱(命令名/命令行)

更多可以查看這里:https://blog.csdn.net/xtggbmdk/article/details/82818023

查看docker容器的內存占用

使用docker stats命令可以查看容器的內存,但是有時候docker stats命令獲得的數據可能准確,可以參考下面這種方式

使用docker ps可以查看到容器的id

再使用ps -ef 找到容器對應的進程

 

 獲得容器對應的pid后,就可以使用top、pmap、ps等查看進程內存的命令查看容器的內存占用情況了

top
top -p 5140
內容解釋

PID:進程的ID
USER:進程所有者
PR:進程的優先級別,越小越優先被執行
NInice:值
VIRT:進程占用的虛擬內存
RES:進程占用的物理內存
SHR:進程使用的共享內存
S:進程的狀態。S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值為負數
%CPU:進程占用CPU的使用率
%MEM:進程使用的物理內存和總內存的百分比
TIME+:該進程啟動后占用的總的CPU時間,即占用CPU使用時間的累加值。
COMMAND:進程啟動命令名稱

更多情況請查看這里:https://blog.csdn.net/Mr_rain/article/details/83111422

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM