中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中性能監控和優化命令分別是哪些呢

發布時間:2021-10-09 14:39:06 來源:億速云 閱讀:118 作者:柒染 欄目:系統運維

Linux中性能監控和優化命令分別是哪些呢,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

1 top命令

top 命令是 Linux 下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似于 Windows 的任務管理器。

下面詳細介紹它的使用方法。top 是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態。如果在前臺執行該命令,它將獨占前臺,直到用戶終止該程序為止。

比較準確的說,top 命令提供了實時的對系統處理器的狀態監視。它將顯示系統中 CPU最“敏感”的任務列表。該命令可以按 CPU 使用。

內存使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過交互式命令或者在個人定制文件中進行設定。

命令格式:

top [參數]

命令功能:

顯示當前系統正在執行的進程的相關信息,包括進程ID、內存占用率、CPU占用率等

命令參數:

  •  -b 批處理

  •  -c 顯示完整的治命令

  •  -I 忽略失效過程

  •  -s 保密模式

  •  -S 累積模式

  •  -i<時間> 設置間隔時間

  •  -u<用戶名> 指定用戶名

  •  -p<進程號> 指定進程

  •  -n<次數> 循環顯示的次數

4.使用實例:

實例1:顯示進程信息

命令:top

輸出:

[root@TG1704 log]# toptop - 14:06:23 up 70 days, 16:44,  2 users,  load average: 1.25, 1.32, 1.35Tasks: 206 total,   1 running, 205 sleeping,   0 stopped,   0 zombie Cpu(s):  5.9%us,  3.4%sy,  0.0%ni, 90.4%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st Mem:  32949016k total, 14411180k used, 18537836k free,   169884k buffers  Swap: 32764556k total,        0k used, 32764556k free,  3612636k cached    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                              28894 root      22   0 1501m 405m  10m S 52.2  1.3   2534:16 java                                                                    18249 root      18   0 3201m 1.9g  11m S 35.9  6.0 569:39.41 java                                                                     2808 root      25   0 3333m 1.0g  11m S 24.3  3.1 526:51.85 java                                                                   25668 root      23   0 3180m 704m  11m S 14.0  2.2 360:44.53 java                                                                      574 root      25   0 3168m 611m  10m S 12.6  1.9 556:59.63 java                                                                     1599 root      20   0 3237m 1.9g  11m S 12.3  6.2 262:01.14 java                                                                     1008 root      21   0 3147m 842m  10m S  0.3  2.6   4:31.08 java                                                                    13823 root      23   0 3031m 2.1g  10m S  0.3  6.8 176:57.34 java                                                                    28218 root      15   0 12760 1168  808 R  0.3  0.0   0:01.43 top                                                                     29062 root      20   0 1241m 227m  10m S  0.3  0.7   2:07.32 java                                                                        1 root      15   0 10368  684  572 S  0.0  0.0   1:30.85 init                                                                        2 root      RT  -5     0    0    0 S  0.0  0.0   0:01.01 migration/0                                                                 3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0                                                                 4 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                                5 root      RT  -5     0    0    0 S  0.0  0.0   0:00.80 migration/1                                                                 6 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/1                                                                 7 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/1                                                                  8 root      RT  -5     0    0    0 S  0.0  0.0   0:20.59 migration/2                                                                 9 root      34  19     0    0    0 S  0.0  0.0   0:00.09 ksoftirqd/2                                                                10 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/2                                                                 11 root      RT  -5     0    0    0 S  0.0  0.0   0:23.66 migration/3                                                                12 root      34  19     0    0    0 S  0.0  0.0   0:00.03 ksoftirqd/3                                                                13 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/3                                                                 14 root      RT  -5     0    0    0 S  0.0  0.0   0:20.29 migration/4                                                                15 root      34  19     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/4                                                                16 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/4                                                                 17 root      RT  -5     0    0    0 S  0.0  0.0   0:23.07 migration/5                                                                18 root      34  19     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/5                                                                19 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/5                                                                 20 root      RT  -5     0    0    0 S  0.0  0.0   0:17.16 migration/6                                                                21 root      34  19     0    0    0 S  0.0  0.0   0:00.05 ksoftirqd/6                                                                22 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 watchdog/6                                                                 23 root      RT  -5     0    0    0 S  0.0  0.0   0:58.28 migration/7

說明:

統計信息區:前五行是當前系統情況整體的統計信息區。下面我們看每一行信息的具體意義。

第一行,任務隊列信息,同 uptime 命令的執行結果,具體參數說明情況如下:

  •  14:06:23:當前系統時間

  •  up 70 days, 16:44:系統已經運行了70天16小時44分鐘(在這期間系統沒有重啟過的吆!)

  •  2 users:當前有2個用戶登錄系統

  •  load average: 1.15, 1.42, 1.44:load average 后面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。

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

第二行,Tasks &mdash; 任務(進程),具體信息說明如下:

系統現在共有 206 個進程,其中處于運行中的有1個,205 個在休眠(sleep),stoped狀態的有0個,zombie 狀態(僵尸)的有0個。

第三行,cpu狀態信息,具體屬性說明如下:

  •  5.9%us:用戶空間占用CPU的百分比。

  •  3.4% sy:內核空間占用CPU的百分比。

  •  0.0% ni:改變過優先級的進程占用CPU的百分比

  •  90.4% id:空閑CPU百分比

  •  0.0% wa:IO等待占用CPU的百分比

  •  0.0% hi:硬中斷(Hardware IRQ)占用CPU的百分比

  •  0.2% si:軟中斷(Software Interrupts)占用CPU的百分比

備注:在這里CPU的使用比率和windows概念不同,需要理解linux系統用戶空間和內核空間的相關知識!

第四行,內存狀態,具體信息如下:

  •  32949016k total &mdash; 物理內存總量(32GB)

  •  14411180k used &mdash; 使用中的內存總量(14GB)

  •  18537836k free &mdash; 空閑內存總量(18GB)

  •  169884k buffers &mdash; 緩存的內存量 (169M)

第五行,swap交換分區信息,具體信息說明如下:

  •  32764556k total &mdash; 交換區總量(32GB)

  •  0k used &mdash; 使用的交換區總量(0K)

  •  32764556k free &mdash; 空閑交換區總量(32GB)

  •  3612636k cached &mdash; 緩沖的交換區總量(3.6GB)

備注:

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

如果出于習慣去計算可用內存數,這里有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的 cached,按這個公式此臺服務器的可用內存:18537836k +169884k +3612636k = 22GB左右。

對于內存監控,在 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:進程名稱(命令名/命令行)

其他使用技巧:

1.多U多核CPU監控

在top基本視圖中,按鍵盤數字“1”,可監控每個邏輯CPU的狀況:

Linux中性能監控和優化命令分別是哪些呢

觀察上圖,服務器有16個邏輯CPU,實際上是4個物理CPU。再按數字鍵1,就會返回到top基本視圖界面。

2.高亮顯示當前運行進程

敲擊鍵盤“b”(打開/關閉加亮效果),top的視圖變化如下:

Linux中性能監控和優化命令分別是哪些呢

我們發現進程id為2570的“top”進程被加亮了,top進程就是視圖第二行顯示的唯一的運行態(runing)的那個進程,可以通過敲擊“y”鍵關閉或打開運行態進程的加亮效果。

3.進程字段排序

默認進入top時,各進程是按照CPU的占用量來排序的,在下圖中進程ID為28894的java進程排在第一(cpu占用142%),進程ID為574的java進程排在第二(cpu占用16%)。

Linux中性能監控和優化命令分別是哪些呢

敲擊鍵盤“x”(打開/關閉排序列的加亮效果),top的視圖變化如下:

Linux中性能監控和優化命令分別是哪些呢

可以看到,top默認的排序列是“%CPU”。

4.通過”shift + >”或”shift + <”可以向右或左改變排序列

下圖是按一次”shift + >”的效果圖,視圖現在已經按照%MEM來排序。

2、free 命令

free命令可以顯示Linux系統中空閑的、已用的物理內存及swap內存,及被內核使用的buffer。在Linux系統監控的工具中,free命令是最經常使用的命令之一。

1.命令格式:

free [參數]

2.命令功能:

free 命令顯示系統使用和空閑的內存情況,包括物理內存、交互區內存(swap)和內核緩沖區內存。共享內存將被忽略

3.命令參數:

  •  -b  以Byte為單位顯示內存使用情況。

  •  -k  以KB為單位顯示內存使用情況。

  •  -m  以MB為單位顯示內存使用情況。

  •  -g   以GB為單位顯示內存使用情況。

  •  -o  不顯示緩沖區調節列。

  •  -s <間隔秒數>  持續觀察內存使用狀況。

  •  -t  顯示內存總和列。

  •  -V  顯示版本信息。

4.使用實例:

實例1:顯示內存使用情況

命令:

free  free -g  free -m

輸出:

[root@SF1150 service]# free               total       used       free     shared    buffers     cached  Mem:      32940112   30841684    2098428          0    4545340   11363424-/+ buffers/cache:   14932920   18007192Swap:     32764556    1944984   30819572[root@SF1150 service]# free -g              total       used       free     shared    buffers     cached Mem:            31         29          2          0          4         10-/+ buffers/cache:         14         17Swap:           31          1         29[root@SF1150 service]# free -m              total       used       free     shared    buffers     cached Mem:         32168      30119       2048          0       4438      11097-/+ buffers/cache:      14583      17584Swap:        31996       1899      30097

說明:

下面是對這些數值的解釋:

  •  total:總計物理內存的大小。

  •  used:已使用多大。

  •  free:可用有多少。

  •  Shared:多個進程共享的內存總額。

  •  Buffers/cached:磁盤緩存的大小。

第三行(-/+ buffers/cached):

  •  used:已使用多大。

  •  free:可用有多少。

第四行是交換分區SWAP的,也就是我們通常所說的虛擬內存。

區別:第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區別。

這兩個的區別在于使用的角度來看,第一行是從OS的角度來看,因為對于OS,buffers/cached 都是屬于被使用,所以他的可用內存是 2098428 KB,已用內存是30841684KB,其中包括,內核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached。

第三行所指的是從應用程序角度來看,對于應用程序來說,buffers/cached 是等于可用的,因為buffer/cached是為了提高文件讀取的性能,當應用程序需在用到內存的時候,buffer/cached會很快地被回收。

所以從應用程序的角度來說,可用內存=系統free memory+buffers+cached。

如本機情況的可用內存為:

18007156=2098428KB+4545340KB+11363424KB

接下來解釋什么時候內存會被交換,以及按什么方交換。

當可用內存少于額定值的時候,就會開會進行交換.如何看額定值:

命令:

cat /proc/meminfo

輸出:

[root@SF1150 service]# cat /proc/meminfoMemTotal:     32940112 kB  MemFree:       2096700 kB  Buffers:       4545340 kB  Cached:       11364056 kB  SwapCached:    1896080 kB  Active:       22739776 kB  Inactive:      7427836 kB  HighTotal:           0 kB  HighFree:            0 kB  LowTotal:     32940112 kB  LowFree:       2096700 kB  SwapTotal:    32764556 kB  SwapFree:     30819572 kB  Dirty:             164 kB  Writeback:           0 kB  AnonPages:    14153592 kB  Mapped:          20748 kB  Slab:           590232 kB  PageTables:      34200 kB  NFS_Unstable:        0 kB  Bounce:              0 kB  CommitLimit:  49234612 kB  Committed_AS: 23247544 kB  VmallocTotal: 34359738367 kB  VmallocUsed:    278840 kB  VmallocChunk: 34359459371 kB  HugePages_Total:     0HugePages_Free:      0HugePages_Rsvd:      0Hugepagesize:     2048 kB

交換將通過三個途徑來減少系統中使用的物理頁面的個數: 

  1.  減少緩沖與頁面cache的大小,

  2.  將系統V類型的內存頁面交換出去, 

  3.  換出或者丟棄頁面。(Application 占用的內存頁,也就是物理內存不足)。

事實上,少量地使用swap是不是影響到系統性能的。

那 buffers 和 cached 都是緩存,兩者有什么區別呢?

為了提高磁盤存取效率,Linux 做了一些精心的設計,除了對 dentry 進行緩存(用于VFS,加速文件路徑名到 inode 的轉換),還采取了兩種主要 Cache 方式:Buffer Cache 和Page Cache。前者針對磁盤塊的讀寫,后者針對文件 inode 的讀寫。這些 Cache 有效縮短了 I/O 系統調用(比如 read,write,getdents)的時間。

磁盤的操作有邏輯級(文件系統)和物理級(磁盤塊),這兩種Cache就是分別緩存邏輯和物理級數據的。

Page cache 實際上是針對文件系統的,是文件的緩存,在文件層面上的數據會緩存到page cache。文件的邏輯層需要映射到實際的物理磁盤,這種映射關系由文件系統來完成。當 page cache 的數據需要刷新時,page cache 中的數據交給 buffer cache,因為Buffer Cache 就是緩存磁盤塊的。但是這種處理在 2.6 版本的內核之后就變的很簡單了,沒有真正意義上的 cache 操作。

Buffer cache 是針對磁盤塊的緩存,也就是在沒有文件系統的情況下,直接對磁盤進行操作的數據會緩存到buffer cache中,例如,文件系統的元數據都會緩存到buffer cache中。

簡單說來,page cache 用來緩存文件數據,buffer cache 用來緩存磁盤數據。在有文件系統的情況下,對文件操作,那么數據會緩存到 page cache,如果直接采用dd等工具對磁盤進行讀寫,那么數據會緩存到 buffer cache。

所以我們看linux,只要不用swap的交換空間,就不用擔心自己的內存太少.如果常常swap用很多,可能你就要考慮加物理內存了。這也是linux看內存是否夠用的標準。

如果是應用服務器的話,一般只看第二行,+buffers/cache,即對應用程序來說free的內存太少了,也是該考慮優化程序或加內存了。

實例2:以總和的形式顯示內存的使用信息

命令:

free -t

輸出:

[root@SF1150 service]#  free -t                total       used       free     shared    buffers     cached  Mem:      32940112   30845024    2095088          0    4545340   11364324-/+ buffers/cache:   14935360   18004752Swap:     32764556    1944984   30819572Total:    65704668   32790008   32914660[root@SF1150 service]#

說明:

實例3:周期性的查詢內存使用信息

命令:

free -s 10

輸出:

[root@SF1150 service]#  free -s 10               total       used       free     shared    buffers     cached  Mem:      32940112   30844528    2095584          0    4545340   11364380-/+ buffers/cache:   14934808   18005304Swap:     32764556    1944984   30819572               total       used       free     shared    buffers     cached  Mem:      32940112   30843932    2096180          0    4545340   11364388-/+ buffers/cache:   14934204   18005908Swap:     32764556    1944984   30819572

3、vmstat

vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU活動進行監控。他是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析。vmstat 工具提供了一種低開銷的系統性能觀察方式。因為 vmstat 本身就是低開銷工具,在非常高負荷的服務器上,你需要查看并監控系統的健康情況,在控制窗口還是能夠使用vmstat 輸出結果。在學習vmstat命令前,我們先了解一下Linux系統中關于物理內存和虛擬內存相關信息。

物理內存和虛擬內存區別:

我們知道,直接從物理內存讀寫數據要比從硬盤讀寫數據要快的多,因此,我們希望所有數據的讀取和寫入都在內存完成,而內存是有限的,這樣就引出了物理內存與虛擬內存的概念。

物理內存就是系統硬件提供的內存大小,是真正的內存,相對于物理內存,在linux下還有一個虛擬內存的概念,虛擬內存就是為了滿足物理內存的不足而提出的策略,它是利用磁盤空間虛擬出的一塊邏輯內存,用作虛擬內存的磁盤空間被稱為交換空間(Swap Space)。

作為物理內存的擴展,linux會在物理內存不足時,使用交換分區的虛擬內存,更詳細的說,就是內核會將暫時不用的內存塊信息寫到交換空間,這樣以來,物理內存得到了釋放,這塊內存就可以用于其free命令可以顯示Linux系統中空閑的、已用的物理內存及swap內存,及被內核使用的buffer。在Linux系統監控的工具中,free命令是最經常使用的命令之一。

1.命令格式:

free [參數]

2.命令功能:

free 命令顯示系統使用和空閑的內存情況,包括物理內存、交互區內存(swap)和內核緩沖區內存。共享內存將被忽略

3.命令參數:

  •  -b  以Byte為單位顯示內存使用情況。

  •  -k  以KB為單位顯示內存使用情況。

  •  -m  以MB為單位顯示內存使用情況。

  •  -g   以GB為單位顯示內存使用情況。

  •  -o  不顯示緩沖區調節列。

  •  -s<間隔秒數>  持續觀察內存使用狀況。

  •   -t  顯示內存總和列。

  •  -V  顯示版本信息。

4.使用實例:

實例1:顯示內存使用情況

命令:

free  free -g  free -m

輸出:

[root@SF1150 service]# free               total       used       free     shared    buffers     cached  Mem:      32940112   30841684    2098428          0    4545340   11363424-/+ buffers/cache:   14932920   18007192Swap:     32764556    1944984   30819572[root@SF1150 service]# free -g               total       used       free     shared    buffers     cached  Mem:            31         29          2          0          4         10-/+ buffers/cache:         14         17Swap:           31          1         29[root@SF1150 service]# free -m               total       used       free     shared    buffers     cached  Mem:         32168      30119       2048          0       4438      11097-/+ buffers/cache:      14583      17584Swap:        31996       1899      30097

它目的,當需要用到原始的內容時,這些信息會被重新從交換空間讀入物理內存。

linux的內存管理采取的是分頁存取機制,為了保證物理內存能得到充分的利用,內核會在適當的時候將物理內存中不經常使用的數據塊自動交換到虛擬內存中,而將經常使用的信息保留到物理內存。

要深入了解linux內存運行機制,需要知道下面提到的幾個方面:

首先,Linux系統會不時的進行頁面交換操作,以保持盡可能多的空閑物理內存,即使并沒有什么事情需要內存,Linux也會交換出暫時不用的內存頁面。這可以避免等待交換所需的時間。

其次,linux進行頁面交換是有條件的,不是所有頁面在不用時都交換到虛擬內存,linux內核根據”最近最經常使用“算法,僅僅將一些不經常使用的頁面文件交換到虛擬內存,有時我們會看到這么一個現象:linux物理內存還有很多,但是交換空間也使用了很多。其實,這并不奇怪,例如,一個占用很大內存的進程運行時,需要耗費很多內存資源,此時就會有一些不常用頁面文件被交換到虛擬內存中,但后來這個占用很多內存資源的進程結束并釋放了很多內存時,剛才被交換出去的頁面文件并不會自動的交換進物理內存,除非有這個必要,那么此刻系統物理內存就會空閑很多,同時交換空間也在被使用,就出現了剛才所說的現象了。關于這點,不用擔心什么,只要知道是怎么一回事就可以了。

最后,交換空間的頁面在使用時會首先被交換到物理內存,如果此時沒有足夠的物理內存來容納這些頁面,它們又會被馬上交換出去,如此以來,虛擬內存中可能沒有足夠空間來存儲這些交換頁面,最終會導致linux出現假死機、服務異常等問題,linux雖然可以在一段時間內自行恢復,但是恢復后的系統已經基本不可用了。

因此,合理規劃和設計linux內存的使用,是非常重要的。

虛擬內存原理:

在系統中運行的每個進程都需要使用到內存,但不是每個進程都需要每時每刻使用系統分配的內存空間。當系統運行所需內存超過實際的物理內存,內核會釋放某些進程所占用但未使用的部分或所有物理內存,將這部分資料存儲在磁盤上直到進程下一次調用,并將釋放出的內存提供給有需要的進程使用。

在Linux內存管理中,主要是通過“調頁Paging”和“交換Swapping”來完成上述的內存調度。調頁算法是將內存中最近不常使用的頁面換到磁盤上,把活動頁面保留在內存中供進程使用。交換技術是將整個進程,而不是部分頁面,全部交換到磁盤上。

分頁(Page)寫入磁盤的過程被稱作Page-Out,分頁(Page)從磁盤重新回到內存的過程被稱作Page-In。當內核需要一個分頁時,但發現此分頁不在物理內存中(因為已經被Page-Out了),此時就發生了分頁錯誤(Page Fault)。

當系統內核發現可運行內存變少時,就會通過Page-Out來釋放一部分物理內存。經管Page-Out不是經常發生,但是如果Page-out頻繁不斷的發生,直到當內核管理分頁的時間超過運行程式的時間時,系統效能會急劇下降。這時的系統已經運行非常慢或進入暫停狀態,這種狀態亦被稱作thrashing(顛簸)。

1.命令格式: 

vmstat [-a] [-n] [-S unit] [delay [ count]]  vmstat [-s] [-n] [-S unit]  vmstat [-m] [-n] [delay [ count]]  vmstat [-d] [-n] [delay [ count]]  vmstat [-p disk partition] [-n] [delay [ count]]  vmstat [-f]  vmstat [-V]

2.命令功能:

用來顯示虛擬內存的信息

3.命令參數:

  •  -a:顯示活躍和非活躍內存

  •  -f:顯示從系統啟動至今的fork數量 。

  •  -m:顯示slabinfo

  •  -n:只在開始時顯示一次各字段名稱。

  •  -s:顯示內存相關統計信息及多種系統活動數量。

  •  delay:刷新時間間隔。如果不指定,只顯示一條結果。

  •  count:刷新次數。如果不指定刷新次數,但指定了刷新時間間隔,這時刷新次數為無窮。

  •  -d:顯示磁盤相關統計信息。

  •  -p:顯示指定磁盤分區統計信息

  •  -S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(byte)。默認單位為K(1024 bytes)

  •   -V:顯示vmstat版本信息。

4.使用實例:

實例1:顯示虛擬內存使用情況

命令:

vmstat

輸出:

說明:

字段說明:

  •  Procs(進程):

  •  r: 運行隊列中進程數量

  •  b: 等待IO的進程數量

  •  Memory(內存):

  •  swpd: 使用虛擬內存大小

  •  free: 可用內存大小

  •  buff: 用作緩沖的內存大小

  •  cache: 用作緩存的內存大小

Swap:

  •  si: 每秒從交換區寫到內存的大小

  •  so: 每秒寫入交換區的內存大小

  •  IO:(現在的Linux版本塊的大小為1024bytes)

  •  bi: 每秒讀取的塊數

  •  bo: 每秒寫入的塊數

系統:

  •  in: 每秒中斷數,包括時鐘中斷。

  •  cs: 每秒上下文切換數。

  •  CPU(以百分比表示):

  •  us: 用戶進程執行時間(user time)

  •  sy: 系統進程執行時間(system time)

  •  id: 空閑時間(包括IO等待時間),中央處理器的空閑時間 。以百分比表示。

  •  wa: 等待IO時間

備注:如果 r經常大于 4 ,且id經常少于40,表示cpu的負荷很重。如果pi,po 長期不等于0,表示內存不足。如果disk 經常不等于0, 且在 b中的隊列 大于3, 表示 io性能不好。Linux在具有高穩定性、可靠性的同時,具有很好的可伸縮性和擴展性,能夠針對不同的應用和硬件環境調整,優化出滿足當前應用需要的最佳性能。因此企業在維護Linux系統、進行系統調優時,了解系統性能分析工具是至關重要的。

命令:

vmstat 5 5

表示在5秒時間內進行5次采樣。將得到一個數據匯總他能夠反映真正的系統情況。

實例2:顯示活躍和非活躍內存

命令:

vmstat -a 2 5

輸出:

[root@localhost ~]# vmstat -a 2 5procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------  r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st 0  0      0 3029752 387728 513008    0    0     0     2    3    2  0  0 100  0  0  0  0      0 3029752 387728 513076    0    0     0     0 1005   34  0  0 100  0  0  0  0      0 3029752 387728 513076    0    0     0    22 1004   36  0  0 100  0  0  0  0      0 3029752 387728 513076    0    0     0     0 1004   33  0  0 100  0  0  0  0      0 3029752 387728 513076    0    0     0     0 1003   32  0  0 100  0  0

說明:

使用-a選項顯示活躍和非活躍內存時,所顯示的內容除增加inact和active外,其他顯示內容與例子1相同。

字段說明:

  •  Memory(內存):

  •  inact: 非活躍內存大小(當使用-a選項時顯示)

  •   active: 活躍的內存大小(當使用-a選項時顯示)

實例3:查看系統已經fork了多少次

命令:

vmstat -f

輸出:

[root@SCF1129 ~]# vmstat -f       12744849 forks  [root@SCF1129 ~]#

說明:

這個數據是從/proc/stat中的processes字段里取得的

實例4:查看內存使用的詳細信息

命令:

vmstat -s

輸出:

[root@localhost ~]# vmstat -s      4043760  total memory        1013884  used memory       513012  active memory       387728  inactive memory      3029876  free memory       199616  buffer memory       690980  swap cache      6096656  total swap            0  used swap      6096656  free swap        83587 non-nice user cpu ticks          132 nice user cpu ticks       278599 system cpu ticks    913344692 idle cpu ticks       814550 IO-wait cpu ticks        10547 IRQ cpu ticks        21261 softirq cpu ticks            0 stolen cpu ticks       310215 pages paged in      14254652 pages paged out            0 pages swapped in             0 pages swapped out    288374745 interrupts    146680577 CPU context switches   1351868832 boot time       367291 forks

說明:

這些信息的分別來自于/proc/meminfo,/proc/stat和/proc/vmstat。

實例5:查看磁盤的讀/寫

命令:

vmstat -d

輸出:

[root@localhost ~]# vmstat -ddisk- ------------reads------------ ------------writes----------- -----IO------        total merged sectors      ms  total merged sectors      ms    cur    sec  ram0       0      0       0       0      0      0       0       0      0      0  ram1       0      0       0       0      0      0       0       0      0      0  ram2       0      0       0       0      0      0       0       0      0      0  ram3       0      0       0       0      0      0       0       0      0      0  ram4       0      0       0       0      0      0       0       0      0      0  ram5       0      0       0       0      0      0       0       0      0      0  ram6       0      0       0       0      0      0       0       0      0      0  ram7       0      0       0       0      0      0       0       0      0      0  ram8       0      0       0       0      0      0       0       0      0      0  ram9       0      0       0       0      0      0       0       0      0      0  ram10      0      0       0       0      0      0       0       0      0      0  ram11      0      0       0       0      0      0       0       0      0      0  ram12      0      0       0       0      0      0       0       0      0      0  ram13      0      0       0       0      0      0       0       0      0      0  ram14      0      0       0       0      0      0       0       0      0      0  ram15      0      0       0       0      0      0       0       0      0      0  sda    33381   6455  615407   63224 2068111 1495416 28508288 15990289      0  10491 hdc        0      0       0       0      0      0       0       0      0      0  fd0        0      0       0       0      0      0       0       0      0      0  md0        0      0       0       0      0      0       0       0      0      0  [root@localhost ~]#

說明:

這些信息主要來自于/proc/diskstats.

merged:表示一次來自于合并的寫/讀請求,一般系統會把多個連接/鄰近的讀/寫請求合并到一起來操作.

實例6:查看/dev/sda1磁盤的讀/寫

命令:

輸出:

[root@SCF1129 ~]# df文件系統                 1K-塊      已用      可用 已用% 掛載點  /dev/sda3            1119336548  27642068 1034835500   3% /tmpfs                 32978376         0  32978376   0% /dev/shm /dev/sda1              1032088     59604    920056   7% /boot  [root@SCF1129 ~]# vmstat -p /dev/sda1sda1          reads   read sectors  writes    requested writes               18607    4249978          6         48[root@SCF1129 ~]# vmstat -p /dev/sda3sda3          reads   read sectors  writes    requested writes              429350   35176268   28998789  980301488[root@SCF1129 ~]#

說明:

這些信息主要來自于/proc/diskstats。

reads:來自于這個分區的讀的次數。

read sectors:來自于這個分區的讀扇區的次數。

writes:來自于這個分區的寫的次數。

requested writes:來自于這個分區的寫請求次數。

實例7:查看系統的 slab 信息

命令:

vmstat -m

輸出:

[root@localhost ~]# vmstat -mCache                      Num  Total   Size  Pages ip_conntrack_expect           0      0    136     28 ip_conntrack                  3     13    304     13  ip_fib_alias                 11     59     64     59  ip_fib_hash                  11     59     64     59  AF_VMCI                       0      0    960      4  bio_map_info                100    105   1064      7  dm_mpath                      0      0   1064      7  jbd_4k                        0      0   4096      1  dm_uevent                     0      0   2608      3  dm_tio                        0      0     24    144  dm_io                         0      0     48     77  scsi_cmd_cache               10     10    384     10  sgpool-128                   32     32   4096      1  sgpool-64                    32     32   2048      2  sgpool-32                    32     32   1024      4  sgpool-16                    32     32    512      8  sgpool-8                     45     45    256     15  scsi_io_context               0      0    112     34  ext3_inode_cache          51080  51105    760      5  ext3_xattr                   36     88     88     44  journal_handle               18    144     24    144  journal_head                 56     80     96     40  revoke_table                  4    202     16    202  revoke_record                 0      0     32    112  uhci_urb_priv                 0      0     56     67  UNIX                         13     33    704     11  flow_cache                    0      0    128     30  msi_cache                    33     59     64     59  cfq_ioc_pool                 14     90    128     30  cfq_pool                     12     90    216     18  crq_pool                     16     96     80     48  deadline_drq                  0      0     80     48  as_arq                        0      0     96     40  mqueue_inode_cache            1      4    896      4  isofs_inode_cache             0      0    608      6  hugetlbfs_inode_cache         1      7    576      7  Cache                       Num  Total   Size  Pages  ext2_inode_cache              0      0    720      5  ext2_xattr                    0      0     88     44  dnotify_cache                 0      0     40     92  dquot                         0      0    256     15  eventpoll_pwq                 3     53     72     53  eventpoll_epi                 3     20    192     20  inotify_event_cache           0      0     40     92  inotify_watch_cache           1     53     72     53  kioctx                        0      0    320     12  kiocb                         0      0    256     15  fasync_cache                  0      0     24    144  shmem_inode_cache           254    290    768      5  posix_timers_cache            0      0    128     30  uid_cache                     0      0    128     30  ip_mrt_cache                  0      0    128     30  tcp_bind_bucket               3    112     32    112  inet_peer_cache               0      0    128     30  secpath_cache                 0      0     64     59  xfrm_dst_cache                0      0    384     10  ip_dst_cache                  5     10    384     10  arp_cache                     1     15    256     15  RAW                           3      5    768      5  UDP                           5     10    768      5  tw_sock_TCP                   0      0    192     20  request_sock_TCP              0      0    128     30  TCP                           4      5   1600      5  blkdev_ioc                   14    118     64     59  blkdev_queue                 20     30   1576      5  blkdev_requests              13     42    272     14  biovec-256                    7      7   4096      1  biovec-128                    7      8   2048      2  biovec-64                     7      8   1024      4  biovec-16                     7     15    256     15  biovec-4                      7     59     64     59  biovec-1                     23    202     16    202  bio                         270    270    128     30  utrace_engine_cache           0      0     64     59  Cache                       Num  Total   Size  Pages  utrace_cache                  0      0     64     59  sock_inode_cache             33     48    640      6  skbuff_fclone_cache           7      7    512      7  skbuff_head_cache           319    390    256     15  file_lock_cache               1     22    176     22  Acpi-Operand               4136   4248     64     59  Acpi-ParseExt                 0      0     64     59  Acpi-Parse                    0      0     40     92  Acpi-State                    0      0     80     48  Acpi-Namespace             2871   2912     32    112  delayacct_cache              81    295     64     59  taskstats_cache               4     53     72     53  proc_inode_cache           1427   1440    592      6  sigqueue                      0      0    160     24  radix_tree_node           13166  13188    536      7  bdev_cache                   23     24    832      4  sysfs_dir_cache            5370   5412     88     44  mnt_cache                    26     30    256     15  inode_cache                2009   2009    560      7  dentry_cache              60952  61020    216     18  filp                        479   1305    256     15  names_cache                   3      3   4096      1  avc_node                     14     53     72     53  selinux_inode_security      994   1200     80     48  key_jar                       2     20    192     20  idr_layer_cache              74     77    528      7  buffer_head              164045 164800     96     40  mm_struct                    51     56    896      4  vm_area_struct             1142   1958    176     22  fs_cache                     35    177     64     59  files_cache                  36     55    768      5  signal_cache                 72    162    832      9  sighand_cache                68     84   2112      3  task_struct                  76     80   1888      2  anon_vma                    458    864     24    144  pid                          83    295     64     59  shared_policy_node            0      0     48     77  Cache                       Num  Total   Size  Pages  numa_policy                  37    144     24    144  size-131072(DMA)              0      0 131072      1  size-131072                   0      0 131072      1  size-65536(DMA)               0      0  65536      1  size-65536                    1      1  65536      1  size-32768(DMA)               0      0  32768      1  size-32768                    2      2  32768      1  size-16384(DMA)               0      0  16384      1  size-16384                    5      5  16384      1  size-8192(DMA)                0      0   8192      1  size-8192                     7      7   8192      1  size-4096(DMA)                0      0   4096      1  size-4096                   110    111   4096      1  size-2048(DMA)                0      0   2048      2  size-2048                   602    602   2048      2  size-1024(DMA)                0      0   1024      4  size-1024                   344    352   1024      4  size-512(DMA)                 0      0    512      8  size-512                    433    480    512      8  size-256(DMA)                 0      0    256     15  size-256                   1139   1155    256     15  size-128(DMA)                 0      0    128     30  size-64(DMA)                  0      0     64     59  size-64                    5639   5782     64     59  size-32(DMA)                  0      0     32    112  size-128                    801    930    128     30  size-32                    3005   3024     32    112  kmem_cache                  137    137   2688      1

這組信息來自于/proc/slabinfo。

slab:由于內核會有許多小對象,這些對象構造銷毀十分頻繁,比如i-node,dentry,這些對象如果每次構建的時候就向內存要一個頁(4kb),而其實只有幾個字節,這樣就會非常浪費,為了解決這個問題,就引入了一種新的機制來處理在同一個頁框中如何分配小存儲區,而slab可以對小對象進行分配,這樣就不用為每一個對象分配頁框,從而節省了空間,內核對一些小對象創建析構很頻繁,slab對這些小對象進行緩沖,可以重復利用,減少內存分配次數。

看完上述內容,你們掌握Linux中性能監控和優化命令分別是哪些呢的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

威海市| 普兰县| 石台县| 武威市| 安顺市| 黄梅县| 台州市| 丰县| 孟村| 云安县| 介休市| 伊川县| 沿河| 胶州市| 嘉义县| 邳州市| 金阳县| 张家口市| 苍溪县| 平度市| 旌德县| 南召县| 宝兴县| 新丰县| 黑水县| 电白县| 宣恩县| 汤阴县| 太和县| 徐州市| 苗栗市| 阿拉尔市| 宜君县| 密山市| 隆安县| 东海县| 台中县| 孝感市| 奇台县| 新化县| 改则县|