日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux系統(tǒng)查看硬件資源損耗

CPU與內(nèi)存觀測

vmstat

vmstat全名是虛擬內(nèi)存統(tǒng)計(jì)信息命令,看起來好像是用來觀測內(nèi)存的,實(shí)際上cpu、內(nèi)存、io資源它都能觀測。

成都創(chuàng)新互聯(lián)成立10余年來,這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、國際域名空間、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。網(wǎng)站是否美觀、功能強(qiáng)大、用戶體驗(yàn)好、性價(jià)比高、打開快等等,這些對(duì)于網(wǎng)站建設(shè)都非常重要,成都創(chuàng)新互聯(lián)通過對(duì)建站技術(shù)性的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。

$ vmstat -w 1
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
 4  0            0     12531512       102680       274940    0    0     0     3    0    3   0   0 100   0   0
 2  0            0     12531512       102680       274940    0    0     0     0  106   55  25   0  75   0   0
 2  0            0     12531512       102680       274940    0    0     0     0  105   58  25   0  75   0   0
 2  0            0     12531512       102680       274940    0    0     0     0  105   56  25   0  75   0   0

1s顯示一次,第一行是系統(tǒng)啟動(dòng)以來的統(tǒng)計(jì)信息,一般可忽略不看,從第二行開始看即可。

  • r:cpu運(yùn)行隊(duì)列長度,即有多少線程等待操作系統(tǒng)調(diào)度運(yùn)行,這可看做是cpu的飽和度指標(biāo),長時(shí)間處于高值一般都有問題。
  • b: 不可中斷阻塞的線程數(shù)量,一般就是阻塞于io訪問的線程數(shù)量。
  • swpd: 內(nèi)存交換到磁盤的內(nèi)存大小,單位kB
  • free:剩余內(nèi)存大小,單位kB
  • buff: 用于buff的內(nèi)存大小,單位kB
  • cache:用于文件頁面緩存的內(nèi)存大小,單位kB
  • si:磁盤換入到內(nèi)存的當(dāng)前速度,單位kB/s
  • so:內(nèi)存換出到磁盤的當(dāng)前速度,單位kB/s
  • bi:每秒讀取的磁盤塊數(shù)量,單位blocks/s
  • bo:每秒寫入的磁盤塊數(shù)量,單位blocks/s
  • in:每秒中斷數(shù)量
  • cs:每秒線程上下文切換次數(shù)
  • us:cpu用戶態(tài)使用率
  • sy:cpu內(nèi)核態(tài)使用率
  • id:cpu空閑率
  • wa:等待I/O,線程被阻塞等待磁盤I/O時(shí)的CPU空閑時(shí)間占總時(shí)間的比例
  • st:steal偷取,CPU在虛擬化環(huán)境下在其他租戶上的開銷

mpstat

mpstat是用來查看cpu上各個(gè)核的cpu使用率的,如下:

$ mpstat -P ALL 1
Linux 4.19.128-microsoft-standard (DESKTOP-GC9LLHC)     10/24/21        _x86_64_        (8 CPU)

12:39:37     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
12:39:38     all   24.57    0.00    0.00    0.00    0.00    1.72    0.00    0.00    0.00   73.71
12:39:38       0    0.00    0.00    0.00    0.00    0.00   12.28    0.00    0.00    0.00   87.72
12:39:38       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
12:39:38       2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
12:39:38       3  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
12:39:38       4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
12:39:38       5  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
12:39:38       6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
12:39:38       7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

如上,可見3、5號(hào)核的cpu使用率基本滿載,而其它核非??臻e,這一般是由于程序多線程設(shè)計(jì)上有問題,導(dǎo)致某部分線程非常忙,另一部分線程沒事干,而mpstat就是用來觀測是否有這種cpu核負(fù)載不均的問題的。
上面之所以cpu不均衡,是因?yàn)槲沂褂胹tress命令,讓2個(gè)核滿載了,如下:

$ stress -c 2

另外,如果你使用了Linux中的綁核機(jī)制,將程序固定在某些核上運(yùn)行,但綁核配置不合理,也會(huì)出現(xiàn)這種現(xiàn)象,如下,我將已在運(yùn)行的stree進(jìn)程綁定到1,2號(hào)核上運(yùn)行:

# 查詢stress進(jìn)程號(hào)
$ pgrep stress
5477
5478
5479

#使用taskset綁核
$ taskset -pc 1,2 5478
pid 5478 current affinity list: 0-7
pid 5478 new affinity list: 1,2
$ taskset -pc 1,2 5479
pid 5479 current affinity list: 0-7
pid 5479 new affinity list: 1,2
#查看綁核情況
$ taskset -pc 5479
pid 5479 current affinity list: 1,2

# 用mpstat查看cpu使用率,現(xiàn)在發(fā)現(xiàn)1,2號(hào)核都100%了
$ mpstat -P ALL 1 1
Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
Average:     all   24.78    0.00    0.00    0.00    0.00    0.99    0.00    0.00    0.00   74.23
Average:       0    0.00    0.00    0.00    0.00    0.00    7.48    0.00    0.00    0.00   92.52
Average:       1  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
Average:       2  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
Average:       3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       6    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:       7    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

注:綁核其實(shí)有利有弊的,程序綁定在某些核上運(yùn)行,可以避免線程在核間遷移,從而提高CPU緩存的利用率,但一般來說,現(xiàn)在的大多數(shù)程序其實(shí)是不推薦使用綁核機(jī)制的,這應(yīng)該交給Docker等基礎(chǔ)設(shè)施來管理。

top

上面的vmstat、mpstat命令只能看整個(gè)系統(tǒng)的情況,而top、pidstat則可以看各個(gè)進(jìn)程的情況,如下:

$ top
top - 13:14:07 up 2 days,  6:38,  0 users,  load average: 1.65, 0.59, 0.27
Tasks:  17 total,   3 running,  14 sleeping,   0 stopped,   0 zombie
%Cpu(s): 25.0 us,  0.0 sy,  0.0 ni, 74.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  12693.4 total,  12052.8 free,    271.6 used,    368.9 buff/cache
MiB Swap:   4096.0 total,   4096.0 free,      0.0 used.  12171.8 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 3174 work      20   0    3860    104      0 R 100.0   0.0   1:40.75 stress
 3175 work      20   0    3860    104      0 R 100.0   0.0   1:40.76 stress
    1 root      20   0     900    492    428 S   0.0   0.0   0:00.11 init
   10 work      20   0   10044   5140   3424 S   0.0   0.0   0:00.12 bash
 3051 work      20   0 6393208 204364  20116 S   0.0   1.6   0:07.51 java
 3173 work      20   0    3860    980    896 S   0.0   0.0   0:00.00 stress
 3176 work      20   0   10888   3932   3348 R   0.0   0.0   0:00.02 top
  • 第一行是系統(tǒng)概要:當(dāng)前時(shí)間,系統(tǒng)啟動(dòng)時(shí)長,系統(tǒng)用戶數(shù),系統(tǒng)負(fù)載1min/5min/15min
  • 第二行是任務(wù)概要:總?cè)蝿?wù)數(shù),正在運(yùn)行/睡眠/暫停/僵尸任務(wù)數(shù)
  • 第三行cpu使用率:
    us:非niced進(jìn)程花費(fèi)的cpu時(shí)間占比
    sy:內(nèi)核進(jìn)程花費(fèi)的cpu時(shí)間占比
    ni:niced進(jìn)程花費(fèi)的cpu時(shí)間占比
    id:內(nèi)核空閑進(jìn)程花費(fèi)的cpu時(shí)間占比,一般來說CPU是無法空閑的,CPU空閑著,指的是在運(yùn)行一個(gè)空閑程序的代碼。
    wa:等待磁盤io完成花費(fèi)的cpu時(shí)間占比
    hi:處理硬件中斷花費(fèi)的cpu時(shí)間占比
    si:處理軟件中斷花費(fèi)的cpu時(shí)間占比
    st:被其它虛擬機(jī)偷取的cpu時(shí)間占比
  • 第四行是內(nèi)存使用率:
    total:總內(nèi)存大小(MB)
    free:空閑內(nèi)存大小(MB)
    used:使用中的內(nèi)存大小(MB)
    buff/cache:用于文件緩存與系統(tǒng)緩存的內(nèi)存大小(MB)
  • 第五行是swap情況:
    total:總swap文件大小
    free:swap空閑大小
    used:swap使用大小
    avail Mem:可用內(nèi)存大小,和swap無關(guān),約等于上一行中free+buff/cache

下面的列表顯示的就是各進(jìn)程情況了,除此之外,top還是個(gè)交互式命令,可直接在這個(gè)界面輸入指令使用其更多功能,如下:

指令 功能描述
1 查看1號(hào)cpu各核的cpu使用情況,類似mpstat
M 進(jìn)程按內(nèi)存使用率倒序,同時(shí)按shift + m
P 進(jìn)程按cpu使用率倒序,同時(shí)按shift + p
H 查看線程情況,同時(shí)按shift + h
c 查看進(jìn)程的完整命令行
k 殺死指定pid的進(jìn)程
h 查看幫助
q 退出top

注意,這里面的指令,很多都是開關(guān)式的,比如按1顯示cpu各核使用率,再按1就顯示整體cpu使用率了。
另外,如果你的電腦是8核的,top中進(jìn)程的CPU%最高可以到800%,初次看到這種現(xiàn)象時(shí),還很容易嚇一跳呢!

pidstat

pidstat基本和top功能是類似的,不過它是非交互式的命令,一般作為top的補(bǔ)充使用,如下:

# 默認(rèn)查看活動(dòng)進(jìn)程的cpu使用情況,加-t可以查看線程的
$ pidstat 1
13:32:45      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
13:32:46     1000      3051    0.00    1.00    0.00    0.00    1.00     1  java
13:32:46     1000      3241  100.00    0.00    0.00    0.00  100.00     7  stress
13:32:46     1000      3242  100.00    0.00    0.00    0.00  100.00     5  stress

Average:      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
Average:     1000      3051    0.00    0.33    0.00    0.00    0.33     -  java
Average:     1000      3241  100.00    0.00    0.00    0.00  100.00     -  stress
Average:     1000      3242  100.00    0.00    0.00    0.00  100.00     -  stress

# -w可以看線程上下文切換情況
# cswch/s:自愿上下文切換,比如等待io或鎖
# nvcswch/s:非自愿上下文切換,比如分給自己時(shí)間片用完了,一般需要關(guān)注這個(gè),因?yàn)楝F(xiàn)在的程序大多是io密集型的,用完時(shí)間片的機(jī)會(huì)很少
$ pidstat -w 1
13:37:57      UID       PID   cswch/s nvcswch/s  Command
13:37:58     1000      3299      1.00      0.00  pidstat

13:37:58      UID       PID   cswch/s nvcswch/s  Command
13:37:59        0         8      1.00      0.00  init
13:37:59     1000         9      1.00      0.00  wsltermd
13:37:59     1000      3299      1.00      0.00  pidstat

# -v可以看運(yùn)行進(jìn)程的線程數(shù)與文件描述符數(shù)量
$ pidstat -v 1
01:41:34 PM   UID       PID threads   fd-nr  Command
01:41:35 PM  1000       876      95     177  java

# -r可以看運(yùn)行進(jìn)程的內(nèi)存使用情況以及缺頁情況
# minflt/s:輕微缺頁,一般不用太關(guān)注
# majflt/s:嚴(yán)重缺頁,一般意味著發(fā)生了swrap,量較大時(shí)需要關(guān)注
$ pidstat -r 1
02:07:24 PM   UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
02:07:25 PM   999      2786      2.00      0.00   52792    3140   0.08  redis-server
02:07:25 PM  1000    601098      1.00      0.00   13976    6296   0.16  sshd

# -d可以看某個(gè)進(jìn)程的io使用情況
$ pidstat -d 1
14:12:06      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
14:12:07     1000      3051      0.00     80.00      0.00       0  java
14:12:07     1000      3404      0.00      0.00      0.00      79  stress

free

其實(shí)上面的vmstat、top已經(jīng)可以看到內(nèi)存使用情況了,free命令更純粹一點(diǎn),如下:

# 查看內(nèi)存使用情況,-m以MB為單位,-g可以使其以GB為單位
$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3907        1117         778           3        2012        2503
Swap:          1897         708        1189

要特別注意里面的free、buff/cache以及available,如下:

  • free:系統(tǒng)空閑內(nèi)存,一般來說,隨著使用時(shí)間越來越長,Linux中free會(huì)越來越小,原因是Linux會(huì)把訪問的文件數(shù)據(jù)盡可能地緩存在內(nèi)存中,以便下次讀取時(shí)能快速返回
  • buff/cache:就是文件緩存到內(nèi)存中所占內(nèi)存的大小
  • available:系統(tǒng)真正的可用內(nèi)存,約等于free+buff/cache,所以系統(tǒng)內(nèi)存是否足夠,你應(yīng)該看available的值。

slabtop

slab是Linux操作系統(tǒng)的一種內(nèi)存分配機(jī)制。slab分配器是基于對(duì)象進(jìn)行管理,相同類型的對(duì)象歸為一類(如進(jìn)程描述符就是一類),每申請(qǐng)這樣一個(gè)對(duì)象,slab分配器就從一個(gè)slab列表中分配一個(gè)這樣大小的單元出去,而釋放時(shí),將其重新保存在該列表中,當(dāng)以后又要請(qǐng)求新的對(duì)象時(shí),就可以從列表中直接獲取而不用重復(fù)初始化。

其實(shí)你可以直接把它理解為內(nèi)核實(shí)現(xiàn)對(duì)象池的一種機(jī)制,它包含在buff/cache列中,如下可以觀測它的內(nèi)存占用情況:

$ sudo slabtop
 Active / Total Objects (% used)    : 1641750 / 1772440 (92.6%)
 Active / Total Slabs (% used)      : 35906 / 35906 (100.0%)
 Active / Total Caches (% used)     : 107 / 158 (67.7%)
 Active / Total Size (% used)       : 512123.18K / 553465.83K (92.5%)
 Minimum / Average / Maximum Object : 0.01K / 0.31K / 16.75K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME
282324 246579  87%    0.19K   6722       42     53776K dentry
173824 159910  91%    0.03K   1358      128      5432K kmalloc-32
173784 164054  94%    0.10K   4456       39     17824K buffer_head
167580 159572  95%    0.13K   2793       60     22344K kernfs_node_cache
100839  89862  89%    1.07K   3479       29    111328K ext4_inode_cache
 91260  86183  94%    0.81K   2340       39     74880K fuse_inode
 65084  62708  96%    0.59K   1228       53     39296K inode_cache
 64576  64401  99%    0.50K   1009       64     32288K kmalloc-512
 53120  51516  96%    0.06K    830       64      3320K anon_vma_chain

磁盤觀測

df

df命令可以很容易的看到文件系統(tǒng)的空間使用情況,如下:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            1.9G     0  1.9G   0% /dev
tmpfs           391M  2.7M  389M   1% /run
/dev/sda1       276G  150G  115G  57% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock

/dev/sda1Use%這一列可以看到磁盤使用了57%了。

iostat

iostat命令可以很方便的查看磁盤當(dāng)前的IO情況,如下:

$ iostat -xz 1
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.06    0.00    0.00    0.00    0.00   99.94

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               1.87 17854.96 3799.10 14930.26 42642.19 208548.03    26.82     7.10    0.37    1.04    0.20   0.28 522.73

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

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00  606.00     0.00  2616.00     8.63     0.04    0.06    0.00    0.06   0.06   3.40

注意,和vmstat一樣,第一次的輸出結(jié)果是歷史以來的統(tǒng)計(jì)值,一般可以忽略不計(jì),如下:

  • %util :磁盤使用率,Linux認(rèn)為磁盤只能處理一個(gè)并發(fā),但SSD或raid實(shí)際可以超過一個(gè),所以100%也不一定代表滿載。
  • avgqu-sz:磁盤任務(wù)隊(duì)列長度,大于磁盤的并發(fā)任務(wù)數(shù)則磁盤處于飽和狀態(tài)。
  • svctm:平均服務(wù)時(shí)間,不包括在磁盤隊(duì)列中的等待時(shí)間。
  • r_await,w_await:讀寫延遲時(shí)間(ms),磁盤隊(duì)列等待時(shí)間+svctm,太大則磁盤飽和。
  • r/s + w/s: 就是當(dāng)前的IOPS。
  • avgrq-sz:就是當(dāng)前每秒平均吞吐量 單位是扇區(qū)(512b)。

注:上面的命令輸出結(jié)果是centos中的,ubuntu中iostat命令輸出結(jié)果稍有不同。

iotop

iotop以進(jìn)程的角度查看io情況,如下:

# -P表示只看進(jìn)程整體的,不然iotop看的是每個(gè)線程的
# -o表示只看有io操作的進(jìn)程,不然iotop會(huì)列出所有進(jìn)程
$ sudo iotop -P -o
Total DISK READ:         3.84 K/s | Total DISK WRITE:       138.97 M/s
Current DISK READ:       3.84 K/s | Current DISK WRITE:      80.63 M/s
    PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>     COMMAND
 737183 be/4 root       3.84 K/s   0.00 B/s    0.00 %     88.89 % [kworker/u256:1+flush-8:0]
 761496 be/4 work       0.00 B/s   138.96 M/s  0.00 %     79.09 % stress -d 1
    876 be/4 work       0.00 B/s   7.68 K/s    0.00 %     0.00 %  java -Xms256m -Xmx1g -Xss1m -XX:MaxMetaspaceSize=1g ...

可以看到整個(gè)磁盤的當(dāng)前讀寫速率,以及各個(gè)進(jìn)程占用的比例。

hcache與vmtouch

當(dāng)我們?cè)L問一個(gè)文件時(shí),內(nèi)核會(huì)幫我們將文件數(shù)據(jù)緩存到內(nèi)存中,就是上面free命令中buff/cache這一項(xiàng),而hcache與vmtouch則可以查看文件緩存的詳細(xì)信息,如下:

# 查看前6個(gè)文件的pagecache大戶
$ sudo ./hcache -top 6
+---------------------------------------------------------------------+----------------+------------+-----------+---------+
| Name                                                                | Size (bytes)   | Pages      | Cached    | Percent |
|---------------------------------------------------------------------+----------------+------------+-----------+---------|
| /var/log/journal/ae4a8a4eec6f418a9596826e2f4f6891/system.journal    | 33554432       | 8192       | 7415      | 090.515 |
| /snap/core/11993/usr/lib/snapd/snapd                                | 24113872       | 5888       | 3777      | 064.147 |
| /usr/bin/dockerd                                                    | 104770064      | 25579      | 2692      | 010.524 |
| /usr/local/mysql/bin/mysqld                                         | 227306584      | 55495      | 1774      | 003.197 |
| /var/log/journal/ae4a8a4eec6f418a9596826e2f4f6891/user-1000.journal | 8388608        | 2048       | 1590      | 077.637 |
| /usr/bin/python3.8                                                  | 5482296        | 1339       | 1072      | 080.060 |
+---------------------------------------------------------------------+----------------+------------+-----------+---------+

# 查看指定文件的pagecache詳細(xì)信息
$ vmtouch -v /usr/local/mysql/bin/mysqld
/usr/local/mysql/bin/mysqld
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] 55495/55495

           Files: 1
     Directories: 0
  Resident Pages: 55495/55495  216M/216M  100%
         Elapsed: 0.000275 seconds

# 清除指定文件的pagecache
$ vmtouch -ve /var/log/journal/ae4a8a4eec6f418a9596826e2f4f6891/system.journal
Evicting /var/log/journal/ae4a8a4eec6f418a9596826e2f4f6891/system.journal

           Files: 1
     Directories: 0
   Evicted Pages: 8192 (32M)
         Elapsed: 0.008735 seconds

# 清除pagecache與slab,一般沒必要這么做,除非很清楚自己在做什么
$ sync                               # 將修改過的pagecache(臟頁),寫回到磁盤
$ echo 1 > /proc/sys/vm/drop_caches  # 清除pagecache
$ echo 2 > /proc/sys/vm/drop_caches  # 清除slab
$ echo 3 > /proc/sys/vm/drop_caches  # 清除pagecache與slab

hcache下載地址:https://github.com/silenceshell/hcache

網(wǎng)絡(luò)觀測

nicstat

nicstat可以查看整個(gè)網(wǎng)卡的使用情況,如下:

$ nicstat -z 1
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
22:35:22    ens33   38.09    7.13   32.03    6.77  1217.8  1078.4  0.03   0.00
22:35:22       lo    0.07    0.07    0.36    0.36   207.6   207.6  0.00   0.00
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
22:35:23    ens33    0.27    0.56    3.99    4.99   69.50   114.0  0.00   0.00
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
22:35:24    ens33    0.21    0.34    3.00    3.00   72.67   116.7  0.00   0.00
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
22:35:25    ens33    0.28    0.33    4.00    3.00   70.50   111.3  0.00   0.00
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
22:35:26    ens33    0.34    0.34    5.00    3.00   69.20   116.7  0.00   0.00
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
22:35:27    ens33    0.28    0.33    4.00    3.00   70.50   111.3  0.00   0.00

其中%Util就是網(wǎng)卡帶寬的使用率了。

iftop

iftop可以用來查看整個(gè)網(wǎng)卡以及各個(gè)連接的當(dāng)前網(wǎng)速,如下:

$ sudo iftop -B -nNP
                               244KB                          488KB                           732KB                          977KB                     1.19MB
└──────────────────────────────┴──────────────────────────────┴───────────────────────────────┴──────────────────────────────┴───────────────────────────────
10.134.60.10:10100                                               => 10.134.92.10:29318                                                85.8KB   103KB  94.3KB
                                                                 <=                                                                   2.95KB  3.54KB  3.25KB
10.134.60.10:10100                                               => 10.134.93.9:30981                                                  170KB   103KB  94.3KB
                                                                 <=                                                                   5.41KB  3.49KB  3.21KB
10.134.60.10:35172                                               => 10.134.24.54:3961                                                 13.3KB  9.88KB  5.25KB
                                                                 <=                                                                   58.6KB  60.6KB  32.4KB
10.134.60.10:43240                                               => 10.134.24.55:3960                                                 9.83KB  5.52KB  3.09KB
                                                                 <=                                                                    101KB  53.6KB  31.1KB
10.134.60.10:60932                                               => 10.134.24.55:3961                                                 4.45KB  5.07KB  6.04KB
                                                                 <=                                                                   35.0KB  39.8KB  47.4KB
10.134.60.10:58990                                               => 10.134.24.5:80                                                    22.0KB  19.2KB  22.5KB
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
TX:             cum:   10.9MB   peak:   1.75MB                                                                               rates:    611KB   438KB   557KB
RX:                    6.49MB            453KB                                                                                         360KB   296KB   332KB
TOTAL:                 17.4MB           2.19MB                                                                                         972KB   735KB   889KB

另外,在nicstat、iftop命令不可用的情況下,也可以使用ifconfig + awk來查看網(wǎng)速,單位B/s,如下:

$ while sleep 1;do ifconfig;done|awk -v RS= 'match($0,/^(\w+):.*RX.*bytes ([0-9]+).*TX.*bytes ([0-9]+)/,a){eth=a[1];if(s[eth][1])print a[1],a[2]-s[eth][2],a[3]-s[eth][3];for(k in a)s[eth][k]=a[k]}'
eth0 294873 353037
lo 2229 2229
eth0 613730 666086
lo 17981 17981
eth0 317336 544921
lo 5544 5544
eth0 237694 516947
lo 2256 2256

全能觀測工具sar

sar是一個(gè)幾乎全能的觀測工具,它可以觀測CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等等,不像上面的命令,只是側(cè)重某一方面,正因?yàn)樗绱藦?qiáng)大,掌握起來也要難得多,它的常見用法如下:

# cpu使用率
sar -u ALL 1
# 運(yùn)行隊(duì)列與負(fù)載
sar -q 1
# 中斷次數(shù)
sar -I SUM 1
# 進(jìn)程創(chuàng)建次數(shù)與線程上下文切換次數(shù)
sar -w 1
# 內(nèi)存使用、臟頁與slab
sar -r ALL 1
# 缺頁與內(nèi)存頁掃描
sar -B 1
# 內(nèi)存swap使用
sar -S 1 1
sar -W 1
# 磁盤IOPS
sar -dp 1
# 文件描述符與打開終端數(shù)
sar -v 1 1
# 網(wǎng)卡層使用率
sar -n DEV 1
# tcp層收包發(fā)包情況
sar -n TCP,ETCP 1
# socket使用情況
sar -n SOCK 1

這只是列出了sar的一部分用法,實(shí)際上sar可以觀測到非常多的內(nèi)容,具體可以man sar查看。

USE法

從上面介紹的命令來看,能觀測到的指標(biāo)非常多,讓人眼花繚亂,一時(shí)抓不住重點(diǎn),好在性能優(yōu)化大師Brendan Gregg為我們總結(jié)了USE法,告訴了我們應(yīng)該重點(diǎn)關(guān)注硬件資源的哪些指標(biāo),如下:

  1. 使用率(utilization):即資源使用的百分比,如CPU使用率,內(nèi)存使用率。
  2. 飽和度(saturation):即資源的飽和情況,如大多數(shù)資源都有使用排隊(duì)機(jī)制,飽和度代表隊(duì)列中有多少任務(wù)等待處理。
  3. 錯(cuò)誤(errors):即訪問資源時(shí)發(fā)生的錯(cuò)誤。

注:使用率與使用率是不同的,比如CPU使用率一般代表時(shí)間占用比例,如1s中有800ms在執(zhí)行真正的代碼,CPU使用率就是80%,而內(nèi)存使用率50%,指的是容量使用了一半,所以使用率可細(xì)分為基于容量的使用率與基于時(shí)間的使用率。

可以用Java中的線程池來理解這3個(gè)指標(biāo),如下:

  1. 線程池是一個(gè)軟件資源。
  2. 線程池的使用率:目前正在運(yùn)行任務(wù)線程數(shù)占線程池總線程數(shù)的百分比。
  3. 線程池的飽和度:目前正在線程池任務(wù)隊(duì)列中排隊(duì)的任務(wù)數(shù)量。
  4. 線程池的錯(cuò)誤:觸發(fā)線程池拒絕策略的次數(shù)。

對(duì)于CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)這4個(gè)常見資源,并結(jié)合上面介紹的命令,可得出如下的表格:

資源 使用率(utilization) 飽和度(saturation) 錯(cuò)誤(errors)
CPU vmstat 1中"us" + "sy" + "st"

sar -u同理

vmstat 1r列大于虛擬cpu數(shù)量

sar -q同理

-
內(nèi)存 free -m的available

vmstat 1的"free"與"swap"

sar -r的"%memused"

vmstat 1的"si"與"so"

sar -B的"pgscank"與"pgscand"

dmesg | grep killed

-
磁盤 iostat -xz 1的"%util"

sar -d 1的"%util"

iostat -xz 1的"avgqu-sz" > 1或"await"居高不下

sar -d 1同理

-
網(wǎng)絡(luò) iftop的rates

nicstat的"%Util"

sar -n DEV 1的"rxKB/s"與"txKB/s"

ifconfig的"overruns"與"dropped"

netstat -s|grep "segments retransmited"

sar -n EDEV 1的*drop and *fifo

ifconfig的 "errors"與"dropped"

sar -n EDEV 1的"rxerr/s"與"txerr/s"

全能監(jiān)控工具

還有很多類似sar的全能觀測工具,大多都比較炫酷,在個(gè)人筆記本上使用較多,服務(wù)器上采用較少,如下:

dstat

bpytop

glances

nmon


分享題目:Linux系統(tǒng)查看硬件資源損耗
URL分享:http://www.5511xx.com/article/dhocpce.html