Linux性能分析——分析系統性能相關的命令

来源:https://www.cnblogs.com/shamao/archive/2019/08/02/11290485.html
-Advertisement-
Play Games

Linux性能分析——分析系統性能相關的命令 摘要:本文主要學習了Linux系統中分析性能相關的命令。 ps命令 ps命令用來顯示系統中進程的運行情況,顯示的是當前系統的快照。 基本語法 選項說明 使用舉例 使用ps命令: 顯示執行的命令: 顯示所有進程以及執行的命令,可以查看進程的父進程ID: 顯 ...


Linux性能分析——分析系統性能相關的命令

摘要:本文主要學習了Linux系統中分析性能相關的命令。

ps命令

ps命令用來顯示系統中進程的運行情況,顯示的是當前系統的快照。

基本語法

1 ps [選項]

選項說明

1 -e:顯示所有進程。
2 -f:顯示完整格式的進程信息。
3 -a:所有與終端相關的進程。
4 -u:所有與終端無關的進程。
5 -x:以用戶為中心組織進程狀態信息顯示。
6 -l:顯示長列表。

使用舉例

使用ps命令:

1 [root@localhost ~]# ps
2    PID TTY          TIME CMD
3   8742 pts/0    00:00:00 bash
4   9405 pts/0    00:00:00 ps
5 [root@localhost ~]#

顯示執行的命令:

1 [root@localhost ~]# ps -f
2 UID         PID   PPID  C STIME TTY          TIME CMD
3 root       8742   8738  0 01:09 pts/0    00:00:00 -bash
4 root       9412   8742  0 05:06 pts/0    00:00:00 ps -f
5 [root@localhost ~]#

顯示所有進程以及執行的命令,可以查看進程的父進程ID:

1 [root@localhost ~]# ps -ef
2 UID         PID   PPID  C STIME TTY          TIME CMD
3 root       8742   8738  0 01:09 pts/0    00:00:00 -bash
4 root       9415   8742  0 05:08 pts/0    00:00:00 ps -ef
5 ...
6 [root@localhost ~]#

顯示目前所有在記憶體中的進程,可以查看進程的CPU占用率和記憶體占用率:

1 [root@localhost ~]# ps -aux
2 USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
3 root       8742  0.0  0.2 115508  2120 pts/0    Ss   01:09   0:00 -bash
4 root       9417  0.0  0.1 139492  1652 pts/0    R+   05:13   0:00 ps -aux
5 ...
6 [root@localhost ~]#

結果說明

使用 ps -ef 命令的結果說明:

 1 F:表示這個程式的旗標,是內核分配給進程的系統標記。
 2 S:表示進程的狀態。
 3 常用的值如下:
 4     R:運行 runnable (on run queue)。
 5     D:不可中斷 uninterruptible sleep (usually IO)。
 6     S:中斷 sleeping。
 7     T:停止 traced or stopped。
 8     Z:僵死 zombie process。
 9 UID:表示啟動進程的用戶ID。
10 PID:表示進程ID。
11 PPID:表示父進程ID。
12 C:表示進程CPU使用的資源百分比。
13 PRI:表示進程的執行優先權,其值越小越早被執行。
14 NI:表示進程的nice值,其表示進程可被執行的優先順序的修正數值。
15 ADDR:表示這是內核函數,指出該程式在記憶體的那個部分。如果是個執行的程式,一般就是“-”。
16 SZ:表示使用掉的記憶體大小。
17 WCHAN:表示目前這個程式是否正在運作當中,若為“-”表示正在運作。
18 TTY:表示登入者的終端機位置。
19 TIME:表示使用掉的CPU時間。
20 CMD:表示所下達的指令名稱。

使用 ps -aux 命令的結果說明:

 1 USER:表示進程屬於那個使用者。
 2 PID:表示進程ID。
 3 %CPU:表示進程使用掉的CPU資源百分比。
 4 %MEM:表示進程所占用的物理記憶體百分比。
 5 VSZ:表示進程使用掉的虛擬記憶體量,單位是Kbytes。
 6 RSS:表示進程占用的固定的記憶體量,單位是Kbytes。
 7 TTY:表示進程運行的終端機位置。
 8 STAT:表示進程目前的狀態。
 9 常用的值如下:
10     R:運行,指進程正在運行或在運行隊列中等待。
11     D:不可中斷,指線程收到信號不喚醒和不可運行,進程必須等待直到有中斷發生。
12     S:中斷,指進程在休眠中或者被阻塞,在等待某個條件的形成或接收到信號。
13     T:停止,指進程收到SIGSTOP、SIGSTP、SIGTIN、SIGTOU信號後停止運行運行。 
14     Z:僵死,指進程已終止,但進程描述符存在,直到父進程調用wait4()系統調用後釋放。
15 START:表示進程被觸發啟動的時間。
16 TIME:表示進程實際使用CPU運作的時間。
17 COMMAND:表示進程的實際指令。

top命令

top命令提供了實時的對系統處理器的狀態監視,能夠實時顯示系統中各個進程的資源占用狀況。

基本語法

1 top [選項]

選項說明

1 i:使top不顯示任何閑置或者僵死進程。
2 d:指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。
3 p:通過指定監控進程ID來僅僅監控某個進程的狀態。
4 q:該選項將使top沒有任何延遲的進行刷新。如果調用程式有超級用戶許可權,那麼top將以儘可能高的優先順序運行。
5 s:使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
6 c:顯示整個命令行而不只是顯示命令名。
7 S:指定累計模式。

交互參數

 1 i:忽略閑置和僵死進程。這是一個開關式命令。
 2 l:關閉或開啟第一部分第一行top信息的表示。
 3 t:關閉或開啟第一部分第二行Tasks和第三行Cpus信息的表示。
 4 m:關閉或開啟第一部分第四行Mem和第五行Swap信息的表示。
 5 P:根據CPU使用百分比大小進行排序。
 6 T:根據時間/累計時間進行排序。
 7 N:根據PID大小進行排序。
 8 M:根據記憶體占用率大小進行排序。
 9 c:切換顯示命令名稱和完整命令行。
10 n:設置在進程列表所顯示進程的數量。
11 k:終止一個進程。系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什麼樣的信號。一般的終止進程可以使用15信號,如果不能正常結束那就使用信號9強制結束該進程。預設值是信號15。在安全模式中此命令被屏蔽。
12 r:重新安排一個進程的優先順序別。系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先順序值。輸入一個正值將使優先順序降低,反之則可以使該進程擁有更高的優先權。預設值是10。
13 s:改變兩次刷新之間的延遲時間。系統將提示用戶輸入新的時間,單位為s。如果有小數,就換算成ms。輸入0值則系統將不斷刷新,預設值是5s。
14 q:退出程式。
15 W:將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。
16 S:切換到累計模式。
17 f或者F:從當前顯示中添加或者刪除項目。
18 o或者O:改變顯示項目的順序。

使用舉例

 1 [root@localhost ~]# top
 2 top - 01:09:20 up 1 day, 13:28,  2 users,  load average: 0.00, 0.01, 0.05
 3 Tasks: 354 total,   1 running, 353 sleeping,   0 stopped,   0 zombie
 4 %Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
 5 KiB Mem :  1001360 total,   441332 free,   160592 used,   399436 buff/cache
 6 KiB Swap:  2097148 total,  2097148 free,        0 used.   661448 avail Mem 
 7 
 8    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 9      1 root      20   0   44516   7184   2612 S   0.0  0.7   0:07.99 systemd
10      2 root      20   0       0      0      0 S   0.0  0.0   0:00.28 kthreadd
11      3 root      20   0       0      0      0 S   0.0  0.0   0:00.55 ksoftirqd/0
12      5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
13      7 root      rt   0       0      0      0 S   0.0  0.0   0:00.44 migration/0
14      8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
15      9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/0
16     10 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/1
17     11 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/2
18     12 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/3
19 ...
20 [root@localhost ~]#

資源概況欄位說明

top視圖的上半部分是資源概況。

1)第一行是系統的一些信息。

1 01:09:20:表示系統當前時間。
2 up 1 day, 13:28:表示系統運行了1天13個小時28分鐘。
3 2 users:表示系統當前有2個用戶連接。
4 load average: 0.00, 0.01, 0.05:表示系統最近1分鐘、5分鐘、15分鐘的平均負載。

2)第二行是系統進程的預覽信息。

1 n total:表示進程總數。
2 n running:表示正在運行的進程數。
3 n sleeping:表示休眠的進程數。
4 n stopped:表示停止的進程。
5 n zombie:表示僵屍進程。

3)第三行是CPU的運行信息,當有多個CPU時,內容可能會超過兩行。

1 n us:表示用戶空間占用CPU時間百分比。
2 n sy:表示內核空間占用CPU時間百分比。
3 n ni:表示用戶進程空間內改變過優先順序的進程占用CPU時間百分比。
4 n id:表示空閑時間占用CPU百分比。
5 n wa:表示等待輸入輸出占用CPU時間百分比。
6 n hi:表示硬體中斷占用CPU時間百分比。
7 n si:表示軟體中斷占用CPU時間百分比。
8 n st:表示虛擬機占用CPU時間百分比。

4)第四行是記憶體空間的使用情況。

1 n total:表示記憶體總量。
2 n free:表示剩餘的記憶體數量。
3 n used:表示使用的記憶體數量。
4 n buff/cache:表示緩衝的記憶體數量。

5)第五行是交換空間的使用情況。

1 n total:表示交換區總量。
2 n free:表示空閑的交換區數量。
3 n used:表示使用的交換區數量。
4 n avail Mem:表示緩衝的交換區數量。

進程信息欄位說明

top視圖的下半部分是進程信息。

 1 PID:進程id。
 2 PPID:父進程id。
 3 UID:進程所有者的id。
 4 USER:進程所有者的用戶名。
 5 GROUP:進程所有者的組名。
 6 TTY:啟動進程的終端名,不是從終端啟動的進程則顯示為? 7 PR:優先順序。
 8 NI:nice值。負值表示高優先順序,正值表示低優先順序。
 9 P:最後使用的CPU,僅在多CPU環境下有意義。
10 %CPU:上次更新到現在的CPU時間占用百分比。
11 TIME:進程使用的CPU時間總計,單位秒。
12 TIME+:進程所使用的CPU時間總計,單位1/100秒。
13 %MEM:進程使用的物理記憶體百分比。
14 VIRT:進程使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES。
15 SWAP:進程使用的虛擬記憶體中被被換出的大小。
16 RES:進程使用的、未被換出的物理記憶體的大小。
17 CODE:可執行代碼占用的物理記憶體大小。
18 DATA:可執行代碼以外的部分(數據段+棧)占用的物理記憶體大小。
19 SHR:共用記憶體大小。
20 nFLT:頁面錯誤次數。
21 nDRT:最後一次寫入到現在,被修改過的頁面數。
22 S:進程狀態(D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵屍進程)。
23 COMMAND:命令名/行。
24 WCHAN:若該進程在睡眠,則顯示睡眠中的系統函數名。
25 Flags:任務標誌。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 小白的第一次使用: 程式員寫程式,就好比一個物品的慢慢誕生,我們今天的這個例子就可以想象成一個物品慢慢的在編譯的過程中,讓我們所看到 一、創建我們所測試的項目 1.創建一個簡單的帶有模型層(Model)和數據訪問層(DAL)的控制台應用程式架構。 DAL:數據訪問層,實現對資料庫的操作控制 Mode ...
  • 1 需求概述 指定一批郵箱地址,使用指定的郵箱發送指定的內容。 2 功能需求 配置文件配置用於發送的郵箱信息 郵件發送功能 日誌視窗輸出顯示 3 界面介面 郵件列表框 標題內容輸入框 發送按鈕 日誌輸出框 4 技術選型 .Net 4.0 C Winform 5 實現 5.1 新建項目 項目命名為 S ...
  • 註:Invoke的第一個參數為類實例,第二個參數為反射的方法的參數列表,如無參數直接傳入null即可。 通過反射,可以通過參數動態的調用指定的方法,降低結構間的耦合性 ...
  • 1、上傳所需要的文件(這裡事先準備好了jdk和tomcat的安裝包,mysql需要線上安裝) jdk的安裝包名稱:jdk-8u151-linux-x64.tar.gz tomcat 的安裝包名稱:apache-tomcat-8.5.15.tar.gz 2、jdk安裝: 檢查是否有安裝jdk和cent ...
  • 本人對於linux系統是個小白,恰逢公司新框架需要docker+jenkins部署項目,所以通過同事口述+一頓亂查,終於實現在虛擬機上搭建的ubuntu系統中 實現jenkins +docker 自動部署拉取項目。 趕緊做個記錄! 準備條件: 1、虛擬機內安裝ubuntu隨後再做記錄,雖說同事已經演 ...
  • 在上一篇真千兆路由的極限之OPENWRT MAKE, 某品牌白菜價QCA9558/QCA9880/QCA8337N純種組合OS搭建時記中附帶了128M nand的空間圖示,在ar71xx profile里,預設以jffs2的分區存在, jffs2有一些弊端,磚家們認為更適合空間小的spi-nor f ...
  • grep命令用於查找文件里符合條件的字元串;也可以用於查找內容包含指定的範本樣式的文件。它能使用正則表達式搜索,用於在文件中搜索指定的字元串模式,列出含有匹配模式子符串的文件名,並輸出含有該字元串的文本行。 grep的工作方式是這樣的:它在一個或多個文件中搜索字元串模板。如果模板包括空格,則必須被引... ...
  • 1.從maven中央庫下載下jar包 2.例如: mvn install:install-file -Dfile="D:\downgoogle\shc-core-1.1.1-2.1-s_2.11.jar" -DgroupId=com.hortonworks -DartifactId=shc-core ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...