1. 程式人生 > 實用技巧 >構建包含jdk和nginx的基礎映象,部署前後端專案

構建包含jdk和nginx的基礎映象,部署前後端專案

https://www.cnblogs.com/fuqu/p/10230385.html

Linux top命令的用法詳細詳解

目錄

正文

參考:https://www.cnblogs.com/zhoug2020/p/6336453.html

回到頂部

1、命令欄位詳解

top命令的輸出如下

  • 第一行:系統執行時間和平均負載

當前時間、系統已執行時間、當前登入使用者的數量、最近5、10、15分鐘內的平均負載

  • 第二行:任務

任務的總數、執行中(running)的任務、休眠(sleeping)中的任務、停止(stopped)的任務、殭屍狀態(zombie)的任務

  • 第三行:cpu狀態
欄位 欄位釋義
us user: 執行(未調整優先順序的) 使用者程序的CPU時間
sy system: 執行核心程序的CPU時間
ni niced:執行已調整優先順序的使用者程序的CPU時間
id idle:空閒時間
wa IO wait: 用於等待IO完成的CPU時間
hi 處理硬體中斷的CPU時間
si 處理軟體中斷的CPU時間
st 這個虛擬機器被hypervisor偷去的CPU時間(譯註:如果當前處於一個hypervisor下的vm,實際上hypervisor也是要消耗一部分CPU處理時間的)

  • 第四行:記憶體

全部可用記憶體、已使用記憶體、空閒記憶體、緩衝記憶體

  • 第五行:swap

全部、已使用、空閒和緩衝交換空間

  • 第七行至N行:各程序任務的的狀態監控
欄位 釋義
PID 程序ID,程序的唯一識別符號
USER 程序所有者的實際使用者名稱
PR 程序的排程優先順序。這個欄位的一些值是'rt'。這意味這這些程序執行在實時態。
NI 程序的nice值(優先順序)。越小的值意味著越高的優先順序。負值表示高優先順序,正值表示低優先順序
VIRT

virtual memory usage 虛擬記憶體,程序使用的虛擬記憶體。程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES

1、程序“需要的”虛擬記憶體大小,包括程序使用的庫、程式碼、資料等
2、假如程序申請100m的記憶體,但實際只使用了10m,那麼它會增長100m,而不是實際的使用量

RES

resident memory usage 常駐記憶體,駐留記憶體大小。駐留記憶體是任務使用的非交換實體記憶體大小。程序使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA

1、程序當前使用的記憶體大小,但不包括swap out
2、包含其他程序的共享
3、如果申請100m的記憶體,實際使用10m,它只增長10m,與VIRT相反
4、關於庫佔用記憶體的情況,它只統計載入的庫檔案所佔記憶體大小

SHR

SHR:shared memory 共享記憶體

1、除了自身程序的共享記憶體,也包括其他程序的共享記憶體
2、雖然程序只使用了幾個共享庫的函式,但它包含了整個共享庫的大小
3、計算某個程序所佔的實體記憶體大小公式:RES – SHR
4、swap out後,它將會降下來

S

這個是程序的狀態。它有以下不同的值:

  • D - 不可中斷的睡眠態。
  • R – 執行態
  • S – 睡眠態
  • T – 被跟蹤或已停止
  • Z – 殭屍態
%CPU 自從上一次更新時到現在任務所使用的CPU時間百分比。%CPU顯示的是程序佔用一個核的百分比,而不是整個cpu(N核)的百分比,有時候可能大於100,那是因為該程序啟用了多執行緒佔用了多個核心,所以有時候我們看該值得時候會超過100%,但不會超過總核數*100
%MEM 程序使用的可用實體記憶體百分比
TIME+ 任務啟動後到現在所使用的全部CPU時間,精確到百分之一秒
COMMAND 執行程序所使用的命令。程序名稱(命令名/命令列)
回到頂部

2、互動命令

按“h”或者“?”,會顯示幫助,如下

Z:改變顏色;B:加粗

t:顯示和隱藏任務/cpu資訊;m:記憶體資訊

1:監控每個邏輯CPU的狀況;

f:進入欄位顯示配置模式,可增加或者移除顯示欄位,按相應的字母新增或去除;o:進入欄位順序設定模式,可配置顯示位置順序,按相應的字母往下移動,按“shift+相應的字母”往上移動---------常用

F:進入欄位排序配置模式,可設定排序的欄位;

R:正常排序/反向排序;

s:設定重新整理的時間--------常用

u:輸入使用者,顯示使用者的任務

i:忽略閒置和僵死程序。這是一個開關式命令。

r:重新安排一個程序的優先級別。系統提示使用者輸入需要改變的程序PID以及需要設定的程序優先順序值。輸入一個正值將使優先順序降低,反之則可以使該程序擁有更高的優先權。預設值是10。

c:切換顯示命令名稱和完整命令列。

M:根據駐留記憶體大小進行排序。-------------常用

P:根據CPU使用百分比大小進行排序。-----------常用

H:顯示執行緒

回到頂部

3、常用引數與命令

d:指定每兩次螢幕資訊重新整理之間的時間間隔。當然使用者可以使用s互動命令來改變之。

p:通過指定監控程序ID來僅僅監控某個程序的狀態。

top –p PID

-H: 設定執行緒模式

顯示某個程序所有活躍的執行緒消耗情況

top -H -p pid

按f、再按j把P調出來,P代表”Last used CPU”

設定執行緒模式下:第二行的tasks指的是執行緒個數

回到頂部

4、疑問

如下這個java程序設定的最大可用記憶體為128m,但是這裡virt達到了2478m,RES達到了295m,為什麼?

參考答案:http://www.cnblogs.com/seasonsluo/p/java_virt.html

結論:

  • VIRT高是因為分配了太多地址空間導致。
  • 一般來說不用太在意VIRT太高,因為你有16EB的空間可以使用。