Linux系統查看CPU使用率、內存使用率、磁盤使用率



一、查看CPU使用率
1. top 命令

[root@sss ~]# top
top - 16:54:38 up 7 days,  5:13,  3 users,  load average: 0.00, 0.01, 0.05
Tasks:  77 total,   2 running,  75 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1882232 total,   813020 free,   330164 used,   739048 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1386608 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                                        
17215 root       0 -20  127504  12176   9560 S  0.7  0.6  21:46.45 AliYunDun                                                                                                                                      
 2770 root      20   0  573932  17232   6088 S  0.3  0.9   1:11.38 tuned                                                                                                                                          
    1 root      20   0   43548   3844   2588 S  0.0  0.2   0:06.54 systemd                                                                                                                                        
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0       0      0      0 S  0.0  0.0   0:08.75 ksoftirqd/0                                                                                                                                    
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H              
... ...                                                                                                                                 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

top命令可以看到總體的系統運行狀態和cpu的使用率 。

%us:表示用戶空間程序的cpu使用率(沒有通過nice調度)
%sy:表示系統空間的cpu使用率,主要是內核程序。
%ni:表示用戶空間且通過nice調度過的程序的cpu使用率。
%id:空閑cpu
%wa:cpu運行時在等待io的時間
%hi:cpu處理硬中斷的數量
%si:cpu處理軟中斷的數量
%st:被虛擬機偷走的cpu
注:99.0 id,表示空閑CPU,即CPU未使用率,100%-99.0%=1%,即系統的cpu使用率為1%。

    1
    2
    3
    4
    5
    6
    7
    8
    9

2、vmstat

詳細使用和參數介紹參考網址
3、sar

sar命令語法和vmstat一樣。命令不存在時需要安裝sysstat包,這個包很有用。

    1

命令示例:

例如每1秒采集一次CPU使用率,共采集5次。

    1

[root@sss ~]# sar -u 1 5
Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)

04:56:03 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
04:56:04 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
04:56:05 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
04:56:06 PM     all      0.99      0.00      0.99      0.00      0.00     98.02
04:56:07 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
04:56:08 PM     all      0.00      0.00      0.00      0.00      0.00    100.00
Average:        all      0.20      0.00      0.20      0.00      0.00     99.60

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

和top一樣,可以看到所有cpu的使用情況。如果需要查看某顆cpu的使用可以用-P參數。例如指定顯示0號cpu 的使用情況。

[root@sss ~]# sar -P 0 -u 1 5
Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)

04:39:13 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
04:39:14 PM       0      0.00      0.00      0.99      0.00      0.00     99.01
04:39:15 PM       0      0.00      0.00      0.00      0.00      0.00    100.00
04:39:16 PM       0      0.00      0.00      0.00      0.00      0.00    100.00
04:39:17 PM       0      0.00      0.00      0.00      0.00      0.00    100.00
04:39:18 PM       0      1.00      0.00      0.00      0.00      0.00     99.00
Average:          0      0.20      0.00      0.20      0.00      0.00     99.60
[root@izuf633l0ge76tv5mzalpmz ~]#

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

進程隊列長度和平均負載狀態
例如每1秒采集一次,共采集5次。

[root@sss ~]# sar -q 1 5  
Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)

04:40:14 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
04:40:15 PM         0       149      0.00      0.01      0.05         0
04:40:16 PM         0       149      0.00      0.01      0.05         0
04:40:17 PM         0       149      0.00      0.01      0.05         0
04:40:18 PM         1       149      0.00      0.01      0.05         0
04:40:19 PM         1       149      0.00      0.01      0.05         0
Average:            0       149      0.00      0.01      0.05         0

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

輸出項:

runq-sz:運行隊列的長度(等待運行的進程數)

plist-sz:進程列表中進程(processes)和線程(threads)的數量

ldavg-1:最后1分鍾的系統平均負載(System load average)

ldavg-5:過去5分鍾的系統平均負載

ldavg-15:過去15分鍾的系統平均負載

    1
    2
    3
    4
    5
    6
    7
    8
    9

創建的平均值和上下文切換的次數
例如每1秒收集一次,共收集5次。

[root@sss ~]# sar -w 1 5
Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)

04:41:39 PM    proc/s   cswch/s
04:41:40 PM      0.00    274.26
04:41:41 PM      0.00    277.78
04:41:42 PM      0.00    285.00
04:41:43 PM      0.00    280.00
04:41:44 PM      0.00    270.00
Average:         0.00    277.40

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

sar命令也可以獲取過去指定日期的性能參數。

[root@sss ~]# sar -u -f /var/log/sa/sa08
Linux 3.10.0-693.2.2.el7.x86_64 (localhost.localdomain)         04/08/2019      _x86_64_        (1 CPU)

10:54:35 AM       LINUX RESTART

11:00:02 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:10:01 AM     all     12.93      0.23      2.89      1.54      0.00     82.41
11:20:01 AM     all     46.58      0.00      8.81      0.79      0.00     43.82
11:30:01 AM     all     44.93      0.00      9.68      0.15      0.00     45.24
11:40:02 AM     all      0.25      0.00      0.15      0.00      0.00     99.60
11:50:01 AM     all      0.19      0.00      0.13      0.00      0.00     99.68
12:00:01 PM     all      0.31      0.00      0.19      0.14      0.00     99.37
... ...

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

4、mpstat

這個命令也在sysstat包中,語法類似。
cpu使用情況比sar更加詳細些,也可以用-P指定某顆cpu 。

    1
    2

例如每1秒收集一次,共5次。

[root@sss ~]# mpstat 1 5
Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)

04:58:01 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:58:02 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:58:03 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:58:04 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
04:58:05 PM  all    1.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
04:58:06 PM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:     all    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.80

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

5、iostat

這個命令主要用來查看io使用情況,也可以來查看cpu,個人感覺不常用。

    1

示例

[root@sss ~]# iostat -c 1 2
Linux 3.10.0-957.10.1.el7.x86_64 (izuf633l0ge76tv5mzalpmz)      04/16/2019      _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.26    0.00    0.21    0.01    0.00   99.53

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00  100.00

    1
    2
    3
    4
    5
    6
    7
    8

6、dstat

每秒cpu使用率情況獲取

[root@sss ~]#  dstat -c
----total-cpu-usage----
usr sys idl wai hiq siq
  0   0 100   0   0   0
  0   1  99   0   0   0
  1   0  99   0   0   0
  0   0 100   0   0   0
  0   0 100   0   0   0
  1   1  98   0   0   0
  0   0 100   0   0   0
  ... ...

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

最占cpu的進程獲取

[root@sss ~]# dstat --top-cpu  
-most-expensive-
  cpu process   
AliYunDun    0.2
AliYunDun    2.0
mysqld       1.0
AliYunDun    1.0
kworker/0:1H 1.0
AliYunDun    1.0
AliYunDun    1.0
AliYunDun    1.0

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

二、查看內存使用率
1、top命令

top 命令查看內存使用率

查看第四行: KiB Mem
內存使用率: used/ total

    1
    2

2、free命令

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

free [參數]

    1

2.命令功能:

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

    1

3.命令參數:

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

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

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

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

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

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

-t  顯示內存總和列。

-V  顯示版本信息。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

4.使用實例:

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

命令示例:

free [-k] # 以 kb  為單位顯示內存使用狀況
free -g # 以 G 為單位顯示內存使用狀況
free -m # 以 M 為單位顯示內存使用狀況
free -t  # 以總和的形式顯示內存的使用信息
free -s 1 # 每一秒顯示內存使用情況

    1
    2
    3
    4
    5

輸出:

[root@sss ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1882232      331760      811004         592      739468     1384944
Swap:             0           0           0

    1
    2
    3
    4

[root@sss ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:              1           0           0           0           0           1
Swap:             0           0           0

    1
    2
    3
    4

[root@sss ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1838         324         791           0         722        1352
Swap:             0           0           0

    1
    2
    3
    4

[root@sss ~]# free -t
              total        used        free      shared  buff/cache   available
Mem:        1882232      331760      811004         592      739468     1384948
Swap:             0           0           0
Total:      1882232      331760      811004

    1
    2
    3
    4
    5

[root@sss ~]# free -s 1
              total        used        free      shared  buff/cache   available
Mem:        1882232      331760      811004         592      739468     1384948
Swap:             0           0           0

              total        used        free      shared  buff/cache   available
Mem:        1882232      331784      810980         592      739468     1384924
Swap:             0           0           0

              total        used        free      shared  buff/cache   available
Mem:        1882232      331784      810980         592      739468     1384924
Swap:             0           0           0
... ...

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

說明–對這些數值的解釋:

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

used:已使用多大。

free:可用有多少。

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

Buff/cache:磁盤緩存的大小。

    1
    2
    3
    4
    5
    6
    7
    8
    9

第三行是交換分區SWAP的,也就是我們通常所說的虛擬內存。
當可用內存少於額定值的時候,就會進行交換
如何看額定值:

命令:

cat /proc/meminfo

    1

輸出:

[root@sss ~]# cat /proc/meminfo
MemTotal:        1882232 kB
MemFree:          811244 kB
MemAvailable:    1385300 kB
Buffers:           81268 kB
Cached:           602500 kB
SwapCached:            0 kB
Active:           601948 kB
Inactive:         379880 kB
Active(anon):     298392 kB
Inactive(anon):      256 kB
Active(file):     303556 kB
Inactive(file):   379624 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:               320 kB
Writeback:             0 kB
AnonPages:        298052 kB
Mapped:            47236 kB
Shmem:               592 kB
Slab:              55772 kB
SReclaimable:      44076 kB
SUnreclaim:        11696 kB
KernelStack:        2384 kB
PageTables:         5808 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      941116 kB
Committed_AS:     810896 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       10604 kB
VmallocChunk:   34359719676 kB
HardwareCorrupted:     0 kB
AnonHugePages:    237568 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       63360 kB
DirectMap2M:     2033664 kB
DirectMap1G:           0 kB

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47

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

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

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

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

    1
    2
    3
    4
    5

事實上,少量地使用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的內存太少了,也是該考慮優化程序或加內存了。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

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

命令:

     free -t

    1

輸出:

[root@sss ~]# free -t
              total        used        free      shared  buff/cache   available
Mem:        1882232      331760      811004         592      739468     1384948
Swap:             0           0           0
Total:      1882232      331760      811004

    1
    2
    3
    4
    5

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

命令:

free -s 10

    1

輸出:

[root@sss ~]# free -s 10
              total        used        free      shared  buff/cache   available
Mem:        1882232      324924      816688         496      740620     1392280
Swap:             0           0           0

              total        used        free      shared  buff/cache   available
Mem:        1882232      324944      816664         496      740624     1392260
Swap:             0           0           0

    1
    2
    3
    4
    5
    6
    7
    8

說明:

每10s 執行一次命令

    1

三、查看磁盤使用率
1、輸入df命令

[root@sss ~]# df

    1

顯示詳情:
Filesystem    1K-blocks    Used    Available    Use%    Mounted on
/dev/vda1    41151808    3794244    35244132    10%    /
devtmpfs    930644    0    930644    0%    /dev
tmpfs    941116    0    941116    0%    /dev/shm
tmpfs    941116    468    940648    1%    /run
tmpfs    941116    0    941116    0%    /sys/fs/cgroup
tmpfs    188224    0    188224    0%    /run/user/0

說明

磁盤使用率=(Used列數據之和)/(1k-blocks列數據之和)

    1

磁盤和內存的區別與聯系:

(磁盤--也叫硬盤--或是U盤--或是移動硬盤)
1、硬盤與內存都是存儲器,一個是內部,一個是外部。

2、硬盤與內存的區別是很大的,這里只談最主要的三點:
    1)內存是計算機的工作場所,硬盤用來存放暫時不用的信息;
    2)內存是半導體材料制作,硬盤是磁性材料制作;
    3)內存中的信息會隨掉電而丟失,硬盤中的信息可以長久保存。
    
3、內存與硬盤的聯系也非常密切:
        硬盤上的信息永遠是暫時不用的,要用請裝入內存!
        CPU與硬盤不發生直接的數據交換,CPU只是通過控制信號指揮硬盤工作,硬盤上的信息只有在裝入內存后才能被處理。
        
4、計算機的啟動過程就是一個從硬盤上把最常用信息裝入內存的過程。

5、硬盤則決定你的電腦可以裝下多少東西,內存則決定你的電腦開機后一次最多可以運行多少程序(如手機運行內存)。


免責聲明!

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



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