如題的三個字段雖說在man top下面都有解釋,但感覺有些含糊,看后難以理解它們對進程資源占用的具體情況是如何的。查閱資料后,歸納一下。
VIRT:
1、進程“需要的”虛擬內存大小,包括進程使用的庫、代碼、數據等
2、假如進程申請100m的內存,但實際只使用了10m,那么它會增長100m,而不是實際的使用量
RES:
1、進程當前使用的內存大小,但不包括swap out
2、包含其他進程的共享
3、如果申請100m的內存,實際使用10m,它只增長10m,與VIRT相反
4、關於庫占用內存的情況,它只統計加載的庫文件所占內存大小
SHR:
1、除了自身進程的共享內存,也包括其他進程的共享內存
2、雖然進程只使用了幾個共享庫的函數,但它包含了整個共享庫的大小
3、計算某個進程所占的物理內存大小公式:RES – SHR
4、swap out后,它將會降下來
進程是操作系統用於控制系統資源使用的實體。Unix/Linux 進程管理相關的命令主要有以下幾個,在后面的腳本實現中會用到部分命令。
ps 命令:該命令是最基本同時也是非常強大的進程查看命令,用於報告進程標識、用戶、CPU 時間消耗以及其他屬性。利用它可以確定有哪些進程正在運行及運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等。ps 命令可以監控后台進程的工作情況,因為后台進程是不和屏幕鍵盤這些標准輸入 / 輸出設備進行通信的,如果需要檢測其情況,可以使用 ps 命令。
單獨使用 ps 命令所看到的進程列表,都是在前台執行的進程,但並非所有進程都在前台執行,也有不少進程隱藏在后台執行。使用命令 ps -e 可以顯示所有進程。
top 命令:Linux 使用 top 命令來顯示 CPU 占用率為前幾位的進程。該命令可以按 CPU 使用率、內存使用率、執行時間對任務進行排序,而且該命令的很多特性都可以通過交互式命令或者在個人定制文件中進行設定。top 主要字段的含義如下:
表 1. top 字段含義
列名 含義 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 時間占用百分比 TIME+ 進程使用的 CPU 時間總計,精確到 1/100 秒 COMMAND 命令名 / 命令行
topas 命令:AIX 使用 topas 命令在字符終端上報告有關本地系統上的活動的至關重要的統計信息,包括顯示 CPU 占用率為前幾位的進程。topas 命令以缺省的兩秒間隔從系統中提取並顯示統計信息。通過命令 topas -P 可以進入 topas 的 process 子部分,顯示活動進程的列表。各進程將按它們在監視間隔期間的 CPU 使用率進行排序。