最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在Linux系統(tǒng)中進(jìn)行CPU、內(nèi)存、磁盤和網(wǎng)卡的性能測試?

 更新時間:2026年02月20日 09:07:23   作者:降世神童  
文章詳細(xì)介紹了如何在Linux系統(tǒng)中進(jìn)行CPU、內(nèi)存、磁盤和網(wǎng)卡的性能測試,通過dd命令、fio工具和iostat工具等展示了CPU壓力測試、內(nèi)存使用情況、磁盤I/O性能以及網(wǎng)絡(luò)流量監(jiān)控的方法,同時,文章討論了不同測試工具的使用參數(shù)和指標(biāo),提供了具體的命令行示例

1. CPU性能測試

  模擬對CPU加壓
  接下來使用dd命令不停的消耗CPU資源(可以類比一個車不斷的空踩油門)
  連續(xù)執(zhí)行兩次:

dd if=/dev/zero of=/dev/null &
dd if=/dev/zero of=/dev/null &

  執(zhí)行top命令,再按c按鍵可以查看具體的命令:

jobs
[1]-  運行中               dd if=/dev/zero of=/dev/null &
[2]+  運行中               dd if=/dev/zero of=/dev/null &

kill %1
[1]-  已終止               dd if=/dev/zero of=/dev/null
kill %2
[2]+  已終止               dd if=/dev/zero of=/dev/null

  通過上述實驗可以看到兩顆CPU跑滿,但是總的CPU還剩下95.0(id值),是因為該服務(wù)器是40核CPU,2個CPU資源被占滿,剩余38個空閑CPU資源,(38/40=0.95)
  如果把CPU的任務(wù)執(zhí)行設(shè)置成先進(jìn)先出,那么執(zhí)行dd就會死機(jī)了,就好比一個廁所只有一個坑,只有等先進(jìn)去的人完事第二個人才可以進(jìn)去
  假如系統(tǒng)是2核的CPU,一個dd一直執(zhí)行,系統(tǒng)其他程序還要占據(jù)一部分CPU,所以如果設(shè)置成先進(jìn)先出,第二個dd執(zhí)行就直接死機(jī)了
  如果不設(shè)置先進(jìn)先出,每個任務(wù)共享CPU資源,每個任務(wù)的執(zhí)行都分配一部分CPU

  寫一個腳本將dd執(zhí)行80次,因為是40核的CPU,這樣每個任務(wù)都會分一部分CPU資源,所以每個dd命令占據(jù)的CPU資源基本上是50%左右,而剩余CPU資源將會是0

#!/bin/bash

for ((i=1; i<=80; i++))
do
  dd if=/dev/zero of=/dev/null &
done


  如果設(shè)置成先進(jìn)先出:

# chrt -f 10 dd if=/dev/zero of=/dev/null &

  我的服務(wù)器是40核的,這條命令執(zhí)行39下,第40個就直接把服務(wù)器卡死,因為系統(tǒng)程序都會擠到一個CPU去運行,第一個dd不運行完,第二個就不允許進(jìn)來,所以每個dd都占著一個CPU運行。39個dd任務(wù)全占著CPU資源,系統(tǒng)運行還需要一些CPU資源,所以再次執(zhí)行第40個dd,會直接將系統(tǒng)干崩潰。

  使用iostat工具查看CPU使用情況:

yum install -y sysstat-10.1.5-19.el7.x86_64
iostat
Linux 3.10.0-1160.el7.x86_64 (worker1)  05/28/2022      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.20    0.00    0.79    0.01    0.00   98.00

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               0.68         0.03         8.92     219540   61027516

%user:用戶級CPU使用率,也就是上層應(yīng)用程序的CPU使用率
%nice:nice命令是調(diào)優(yōu)先級的, nice -15 command 調(diào)優(yōu)先級,調(diào)用了nice cpu就需要重新計算
%system:系統(tǒng)內(nèi)核CPU資源消耗
%iowait:磁盤消耗,IO的等待時間
%steal:這個數(shù)值和虛擬化有關(guān),如果在虛擬機(jī)中使用dd命令(后面有操作)則這個值就會增大,但是vmware的虛擬機(jī)是看不到的,需要使用KVM的虛擬機(jī),我使用金山云、騰訊云主機(jī)測試也沒效果
%idle:CPU空閑率

tps:每秒鐘處理的請求數(shù)(每秒處理的IO數(shù)目),可以把kB_read+ kB_wrtn加一起除以tps值,就可以算出block的大小

2. 內(nèi)存性能測試

free -m
              total        used        free      shared  buff/cache   available
Mem:         128411        3869      123826           9         715      124001
Swap:         16383           0       16383

  shared:共享內(nèi)存(shared)是19M,也就是多個程序占用的共享內(nèi)存16M
  buff/cache:緩存,buff是inode,cache是block,緩存作用:當(dāng)讀取一個數(shù)據(jù)時,系統(tǒng)會從硬盤中將數(shù)據(jù)讀到內(nèi)存中,讀完后并不會立即釋放該內(nèi)存,如果內(nèi)存不緊張,一直不釋放,除非內(nèi)存緊張。這部分內(nèi)存可以被當(dāng)作緩存來使用,加速緩存來操作

sysctl -w vm.drop_caches=3

  丟棄緩存,當(dāng)然buff/cache這個數(shù)值不能為清為0,因為有些正在被讀取的數(shù)據(jù)可能正在使用,1是清理buff,2 是清理cache,3是buff和cache都清理。
  swap:虛擬內(nèi)存,如果沒有swap分區(qū),那么可能發(fā)生內(nèi)存溢出,swap是虛擬內(nèi)存,實際上是從硬盤出分出一塊分區(qū)(內(nèi)存置換就是使用這塊分區(qū))

time cp -r /var/ /tmp

real	0m1.464s
user	0m0.030s
sys		0m0.650s

  cp的時候就把數(shù)據(jù)緩存到內(nèi)存中了,再執(zhí)行就更快了,因為不再從硬盤讀了,直接從緩存讀了

time cp -r /var/ /data

real	0m1.284s
user	0m0.022s
sys		0m0.616s

  所以當(dāng)內(nèi)存資源不緊張時,可以一直留著緩存,增加讀性能。
  但是為了測試其他數(shù)據(jù)的準(zhǔn)確性,最好執(zhí)行sysctl -w vm.drop_caches=3,這樣更能體現(xiàn)測試的準(zhǔn)確性,不讓數(shù)據(jù)直接從緩存讀取。
  問:如果內(nèi)存不足,有新的程序又要申請內(nèi)存,緩存會自動釋放了嗎?
  答:會自動釋放了,到時候是讓新的程序使用swap分區(qū)還是讓緩存釋放來給新的程序使用,是有參數(shù)控制的,見后的講解
  問:如何查看一個進(jìn)程使用多少內(nèi)存?

ps aux  | grep vsftp
root       3059  0.0  0.0  53292   696 ?        Ss   2月01   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

696也就是ps aux中RSS列的值

服務(wù)器可使用的最大內(nèi)存頻率:

  背景:由于某線上存儲運行平臺的服務(wù)器內(nèi)存為2400MHz,現(xiàn)計劃擴(kuò)容該存儲集群,但得到廠商的反饋是擴(kuò)容的服務(wù)器必須要和原服務(wù)器的內(nèi)存頻率保持一致,但是手里頭有一些利舊服務(wù)器,不想再去迎合廠商的需求采購新的服務(wù)器,又不想去單獨采購2400MHz的內(nèi)存條插到服務(wù)器上,接下來開始調(diào)試之旅吧~~~

內(nèi)存的頻率顯示是和CPU型號緊密相關(guān)的

  • 服務(wù)器1的CPU型號是:Intel® Xeon® Gold 5218 CPU @ 2.30GHz

    • 如果插入如下3200頻率的內(nèi)存,那么在服務(wù)器的的管理界面查看到的內(nèi)存頻率將為2666MHz

服務(wù)器管理界面顯示如下:
該CPU型號并不能完全的使用到3200MHz,即該CPU最大識別到2666MHz

  • 如果插入如下2933MHz的內(nèi)存,那么在服務(wù)器的的管理界面查看到的內(nèi)存頻率同樣為2666MHz

  • 服務(wù)器2的CPU型號是:Intel® Xeon® Silver 4214 CPU @ 2.20GHz

    • 如果插入如下2933MHz的內(nèi)存,那么在服務(wù)器的的管理界面查看到的內(nèi)存頻率為2400MHz

  其實到此需求已經(jīng)有解決辦法了,那就是把服務(wù)器2的內(nèi)存都插上2933MHz的內(nèi)存條就行了,但是服務(wù)器2的臺數(shù)不夠,擴(kuò)容需求中至少需要4臺,而我只有3臺,但是服務(wù)器1總共有4臺,哎~~

  只能跟領(lǐng)導(dǎo)申請買內(nèi)存條,用最少的錢解決問題,服務(wù)器1總計有4臺,而每臺服務(wù)器有兩顆CPU,所以每臺服務(wù)器至少需要2條2400MHz的內(nèi)存(即每個CPU控制的內(nèi)存都插1條,A1插一條2400MHz的,B1插一條2400MHz的內(nèi)存條)

CPU控制的內(nèi)存頻率中,如果有一條頻率較低,其他內(nèi)存條的頻率會降頻和最低的頻率保持對其,所以每個CPU處只需要插一條2400MHz的內(nèi)存,其他的內(nèi)存條頻率無論怎么高,也得跟這個2400MHz的保持對其

  綜上的分析也就是我只需要買8條2400MHz的內(nèi)存條即可解決問題(其余無論該服務(wù)器插多少根內(nèi)存條,那么所有內(nèi)存的頻率在服務(wù)器管理界面都將顯示2400MHz)

  可能遇到的問題:
  總計4臺服務(wù)器中的3臺這么操作之后都是顯示2400MHz,其中1臺還是顯示2666MHz,聯(lián)系戴爾售后反饋需要更新iDRAC固件版本( 3.36.36.36),需要戴爾售后工程師操作。
更換完內(nèi)存條在之后,需要重設(shè)iDRAC,重設(shè)之后將強(qiáng)制退出管理界面,需要過幾分鐘再登錄。

  總結(jié):內(nèi)存頻率和CPU型號息息相關(guān),但是也不是按照內(nèi)存的最大頻率(內(nèi)存條標(biāo)注的頻率)使用,具體按照哪個內(nèi)存頻率使用,需要具體看CPU的型號。低頻內(nèi)存條需要兩顆CPU處至少各插一條(A1、B1)才能降頻。

  當(dāng)然也可以去網(wǎng)絡(luò)查找相關(guān)CPU支持的內(nèi)存頻率:
  Intel® Xeon® Gold 5218 Processor 22M Cache, 2.30 GHz:

  Intel® Xeon® Silver 4214 Processor16.5M Cache, 2.20 GHz詳細(xì)參數(shù):

3. 磁盤性能測試

3.1. dd工具

dd if=/dev/zero of=test1 bs=8k count=102400 oflag=direct &

  不寫oflag=direct會把數(shù)據(jù)直接寫到內(nèi)存,所以加這個參數(shù)后數(shù)據(jù)直接寫到硬盤,更能測試出硬盤的性能(省去了內(nèi)存和硬盤數(shù)據(jù)資源整合的過程)

block塊大小設(shè)置為8k:
# dd if=/dev/zero of=test1 bs=8k count=102400 oflag=direct
102400+0 records in
102400+0 records out
838860800 bytes (839 MB) copied, 12.1258 s, 69.2 MB/s

block塊大小設(shè)置為4K:
# dd if=/dev/zero of=test1 bs=4k count=102400 oflag=direct
102400+0 records in
102400+0 records out
419430400 bytes (419 MB) copied, 12.3598 s, 33.9 MB/s

  同樣是800M大小數(shù)據(jù),塊大小設(shè)置的不一樣,寫的速率也不一樣

3.2. fio工具

yum install -y fio

測試案例:
  協(xié)商測試條件 :64KB 隨機(jī)100% 讀70%寫30% IO深度16 :
  實際會生成一個這個文件/wangzy_demo73.file

# fio -filename=/data/wangzy_demo73.file -direct=1 -iodepth 16 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=64k -size=10G -numjobs=50 -runtime=180 -group_reporting -name=randrw_70read_4k

輸出:
fio-3.7
Starting 50 threads
randrw_70read_4k: Laying out IO file (1 file / 10240MiB)
Jobs: 50 (f=50): [m(50)][100.0%][r=241MiB/s,w=102MiB/s][r=3856,w=1628 IOPS][eta 00m:00s]
randrw_70read_4k: (groupid=0, jobs=50): err= 0: pid=17888: Mon Nov 8 05:35:12 2021
read: IOPS=3990, BW=249MiB/s (262MB/s)(43.9GiB/180062msec)
clat (usec): min=246, max=176467, avg=7023.24, stdev=8212.76
lat (usec): min=246, max=176468, avg=7023.62, stdev=8212.77
clat percentiles (usec):
| 1.00th=[ 1500], 5.00th=[ 1909], 10.00th=[ 2212], 20.00th=[ 2704],
| 30.00th=[ 3130], 40.00th=[ 3589], 50.00th=[ 4113], 60.00th=[ 4817],
| 70.00th=[ 6259], 80.00th=[ 10814], 90.00th=[ 14615], 95.00th=[ 19006],
| 99.00th=[ 46924], 99.50th=[ 58983], 99.90th=[ 81265], 99.95th=[ 88605],
| 99.99th=[115868]
bw ( KiB/s): min= 896, max=18688, per=2.00%, avg=5109.15, stdev=1532.54, samples=17989
iops : min= 14, max= 292, avg=79.79, stdev=23.95, samples=17989
write: IOPS=1712, BW=107MiB/s (112MB/s)(18.8GiB/180062msec)
clat (usec): min=343, max=116561, avg=12794.22, stdev=4158.95
lat (usec): min=344, max=116566, avg=12798.81, stdev=4158.98
clat percentiles (usec):
| 1.00th=[ 5997], 5.00th=[ 7701], 10.00th=[ 8717], 20.00th=[ 9765],
| 30.00th=[10552], 40.00th=[11207], 50.00th=[11994], 60.00th=[12780],
| 70.00th=[13829], 80.00th=[15533], 90.00th=[18220], 95.00th=[20579],
| 99.00th=[25822], 99.50th=[28443], 99.90th=[35390], 99.95th=[38011],
| 99.99th=[48497]
bw ( KiB/s): min= 256, max= 8448, per=2.00%, avg=2192.45, stdev=690.87, samples=17989
iops : min= 4, max= 132, avg=34.21, stdev=10.79, samples=17989
lat (usec) : 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01%
lat (msec) : 2=4.42%, 4=29.22%, 10=27.73%, 20=33.82%, 50=4.17%
lat (msec) : 100=0.58%, 250=0.02%
cpu : usr=0.10%, sys=0.30%, ctx=1029009, majf=0, minf=2354
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=718594,308385,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=16

Run status group 0 (all jobs):
READ: bw=249MiB/s (262MB/s), 249MiB/s-249MiB/s (262MB/s-262MB/s), io=43.9GiB (47.1GB), run=180062-180062msec
WRITE: bw=107MiB/s (112MB/s), 107MiB/s-107MiB/s (112MB/s-112MB/s), io=18.8GiB (20.2GB), run=180062-180062msec

測試場景:

  • 100%隨機(jī),100%讀, 4K
fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100read_4k
  • 100%隨機(jī),100%寫, 4K
fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100write_4k
  • 100%順序,100%讀 ,4K
fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100read_4k
  • 100%順序,100%寫 ,4K
fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100write_4k
  • 100%隨機(jī),70%讀,30%寫 4K
fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=randrw_70read_4k

參數(shù)說明:

  • 輸入?yún)?shù):
filename=/dev/emcpowerb 支持文件系統(tǒng)或者裸設(shè)備,-filename=/dev/sda2或-filename=/dev/sdb 
direct=1 測試過程繞過機(jī)器自帶的buffer,使測試結(jié)果更真實 
rw=randwread 測試隨機(jī)讀的I/O rw=randwrite 測試隨機(jī)寫的I/O 
rw=randrw 測試隨機(jī)混合寫和讀的I/O 
rw=read 測試順序讀的I/O 
rw=write 測試順序?qū)懙腎/O 
rw=rw 測試順序混合寫和讀的I/O 
bs=4k 單次io的塊文件大小為4k 
bsrange=512-2048 同上,提定數(shù)據(jù)塊的大小范圍 
size=5g 本次的測試文件大小為5g,以每次4k的io進(jìn)行測試 
numjobs=30 本次的測試線程為30 
runtime=1000 測試時間為1000秒,如果不寫則一直將5g文件分4k每次寫完為止 
ioengine=psync io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包 
rwmixwrite=30 在混合讀寫的模式下,寫占30% 
group_reporting 關(guān)于顯示結(jié)果的,匯總每個進(jìn)程的信息 

此外 
lockmem=1g 只使用1g內(nèi)存進(jìn)行測試 
zero_buffers 用0初始化系統(tǒng)buffer 
nrfiles=8 每個進(jìn)程生成文件的數(shù)量
  • 輸出參數(shù):
io=執(zhí)行了多少M的IO
bw=平均IO帶寬
iops=IOPS
runt=線程運行時間
slat=提交延遲
clat=完成延遲
lat=響應(yīng)時間
bw=帶寬
cpu=利用率
IO depths=io隊列
IO submit=單個IO提交要提交的IO數(shù)
IO complete=Like the above submit number, but for completions instead.
IO issued=The number of read/write requests issued, and how many of them were short.
IO latencies=IO完延遲的分布
io=總共執(zhí)行了多少size的IO
aggrb=group總帶寬
minb=最小.平均帶寬.
maxb=最大平均帶寬.
mint=group中線程的最短運行時間.
maxt=group中線程的最長運行時間.
ios=所有g(shù)roup總共執(zhí)行的IO數(shù).
merge=總共發(fā)生的IO合并數(shù).
ticks=Number of ticks we kept the disk busy.
io_queue=花費在隊列上的總共時間.
util=磁盤利用率

  以64KB為一個單位 ,3990就是1秒進(jìn)行3990次64KB的寫入,3390x64/1000
  1MB = 1000KB
  1MiB = 1024KiB

3.3. iostat工具

iostat -d 1 5	-d(disk)僅查看磁盤,1秒顯示一次,總計顯示5次
Linux 3.10.0-1160.el7.x86_64 (worker1)  05/28/2022      _x86_64_        (4 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               0.68         0.03         8.92     219540   61028412

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               0.00         0.00         0.00          0          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               0.00         0.00         0.00          0          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               1.00         0.00        12.00          0         12

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               0.00         0.00         0.00          0          0

iostat –x 顯示更加詳細(xì)的信息

iostat -c 1 5	-c是僅查看CPU,1秒顯示一次,總計顯示5次

  iostat只能顯示開機(jī)到現(xiàn)在的數(shù)據(jù),要么就顯示當(dāng)下的數(shù)據(jù)狀態(tài), iostat不能查看昨天的歷史數(shù)據(jù),但是sar可以
  使用sar工具查看磁盤IO情況:

sar -d 1 10		-d表示硬盤

sar -p -d 1 10 		-p	可以顯示設(shè)備本身

4. 存儲性能測試

案例說明:
  描述問題:某IPTV局點客戶反饋,偶爾出現(xiàn)黑屏情況。
  分析原因:系統(tǒng)狀態(tài)正常,LUN運行策略為回寫鏡像,鏈路正常、無誤碼、無閃斷。使用iostat -x 1觀察,發(fā)現(xiàn)在業(yè)務(wù)量大時,有一個盤的服務(wù)時間(svctm)明顯比其他盤高很多,超過50ms,判定該盤為慢盤。
  解決步驟:將該硬盤離線,并更換該硬盤
  驗證恢復(fù):更換硬盤后,沒有再出現(xiàn)黑屏現(xiàn)象

5. 網(wǎng)卡性能測試

主要測試網(wǎng)卡承載的流量以及網(wǎng)卡的實時流量

5.1. sar工具

yum install -y sysstat
sar -n DEV 5 1	# 每5秒鐘取1次值,取1次

  DEV顯示網(wǎng)絡(luò)接口信息,-n參數(shù)后面還可以接6個不同的開關(guān):DEV | EDEV | NFS | NFSD | SOCK | ALL ,其代表的含義如下:
  ● DEV顯示網(wǎng)絡(luò)接口信息。
  ● EDEV顯示關(guān)于網(wǎng)絡(luò)錯誤的統(tǒng)計數(shù)據(jù)。
  ● NFS統(tǒng)計活動的NFS客戶端的信息。
  ● NFSD統(tǒng)計NFS服務(wù)器的信息
  ● SOCK顯示套接字信息
  ● ALL顯示所有5個開關(guān)

  參數(shù)說明:
  ● IFACE:LAN接口
  ● rxpck/s:每秒鐘接收的數(shù)據(jù)包
  ● txpck/s:每秒鐘發(fā)送的數(shù)據(jù)包
  ● rxbyt/s:每秒鐘接收的字節(jié)數(shù)
  ● txbyt/s:每秒鐘發(fā)送的字節(jié)數(shù)
  ● rxcmp/s:每秒鐘接收的壓縮數(shù)據(jù)包
  ● txcmp/s:每秒鐘發(fā)送的壓縮數(shù)據(jù)包
  ● rxmcst/s:每秒鐘接收的多播數(shù)據(jù)包
  ● rxerr/s:每秒鐘接收的壞數(shù)據(jù)包
  ● txerr/s:每秒鐘發(fā)送的壞數(shù)據(jù)包
  ● coll/s:每秒沖突數(shù)
  ● rxdrop/s:因為緩沖充滿,每秒鐘丟棄的已接收數(shù)據(jù)包數(shù)
  ● txdrop/s:因為緩沖充滿,每秒鐘丟棄的已發(fā)送數(shù)據(jù)包數(shù)
  ● txcarr/s:發(fā)送數(shù)據(jù)包時,每秒載波錯誤數(shù)
  ● rxfram/s:每秒接收數(shù)據(jù)包的幀對齊錯誤數(shù)
  ● rxfifo/s:接收的數(shù)據(jù)包每秒FIFO過速的錯誤數(shù)
  ● txfifo/s:發(fā)送的數(shù)據(jù)包每秒FIFO過速的錯誤數(shù)

5.2. 腳本工具

  此腳本不需要額外再安裝軟件,并且可自定義查看的接口,精確到小數(shù),可根據(jù)流量大小靈活顯示單位,默認(rèn)采集間隔為1秒

cat net.sh 
#!/bin/bash

ethn=$1

while true
do
  RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
  TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
  sleep 1
  RX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
  TX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')

  clear
  echo -e "\t RX `date +%k:%M:%S` TX"

  RX=$((${RX_next}-${RX_pre}))
  TX=$((${TX_next}-${TX_pre}))

  if [[ $RX -lt 1024 ]];then
    RX="${RX}B/s"
  elif [[ $RX -gt 1048576 ]];then
    RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')
  else
    RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')
  fi

  if [[ $TX -lt 1024 ]];then
    TX="${TX}B/s"
  elif [[ $TX -gt 1048576 ]];then
    TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')
  else
    TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')
  fi

  echo -e "$ethn \t $RX   $TX "

done
chmod +x net.sh
sh net.sh bond1

5.3. iftop工具

  iftop 可以監(jiān)控指定網(wǎng)卡的實時流量、端口連接信息、反向解析 IP 等,還可以精確顯示本機(jī)網(wǎng)絡(luò)流量及網(wǎng)絡(luò)內(nèi)各主機(jī)和本機(jī)相互通信的流量集合

  通過源代碼編譯安裝:

yum install -y libpcap libpcap-devel ncurses ncurses-devel flex byacc
wget "http://www.ex-parrot.com/~pdw/iftop/download/iftop-0.17.tar.gz"
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make && make install

  安裝完iftop工具后,直接輸入iftop命令即可顯示網(wǎng)卡實時流量信息。在默認(rèn)情況下,iftop顯示系統(tǒng)第一塊網(wǎng)卡的流量信息,如果要顯示指定網(wǎng)卡信息,可通過“-i”參數(shù)實現(xiàn)

iftop -P -i bond1

  • 第一部分
    • iftop 輸出中最上面的一行,此行信息是流量刻度,用于顯示網(wǎng)卡帶寬流量。
  • 第二部分
    • 此部分為分割線中間的部分,其中又分別分為左、中、右三列。左列和中列,記錄了哪些IP或主機(jī)正在和本機(jī)的網(wǎng)絡(luò)進(jìn)行連接。其中,中列的“=>”代表發(fā)送數(shù)據(jù),“<=”代表接收數(shù)據(jù),通過這個指示箭頭可以很清晰地知道兩個IP之間的通信情況。最右列又分為三小列,這些實時參數(shù)分別表示外部 IP連接到本機(jī) 2 秒內(nèi)、10 秒內(nèi)和 40 秒內(nèi)的平均流量值。
    • 另外,這個部分還有一個流量圖形條,流量圖形條是對流量大小的動態(tài)展示,以第一部分中的流量刻度為基準(zhǔn)。通過這個流量圖形條可以很方便地看出哪個IP的流量最大,進(jìn)而迅速定位網(wǎng)絡(luò)中可能出現(xiàn)的流量問題。
  • 第三部分
    • 位于iftop輸出的最下面,可以分為三行,其中,“TX”表示發(fā)送數(shù)據(jù),“RX”表示接收數(shù)據(jù),“TOTAL”表示發(fā)送和接收全部流量。與這三行對應(yīng)的有三列,其中“cumm”列表示從運行 iftop 到目前的發(fā)送、接收和總數(shù)據(jù)流量。“peak”列表示發(fā)送、接收以及總的流量峰值。“rates”列表示過去 2s、10s、40s 的平均流量值。

交互操作:
  在iftop的實時監(jiān)控界面中,還可以對輸出結(jié)果進(jìn)行交互式操作,用于對輸出信息進(jìn)行整理和過濾,在上圖所示界面中,按鍵 “h” 即可進(jìn)入交互選項界面,iftop 的交互功能和 Linux 下的top命令非常類似,交互參數(shù)主要分為4個部分,分別是一般參數(shù)、主機(jī)顯示參數(shù)、端口顯示參數(shù)和輸出排序參數(shù)。相關(guān)參數(shù)的含義如下表所示:

參數(shù)      含義
P        通過此鍵可切換暫停/繼續(xù)顯示
h        通過此鍵可在交互參數(shù)界面/狀態(tài)輸出界面之間來回切換
b        通過此鍵可切換是否顯示平均流量圖形條
B        通過此鍵可切換顯示2秒、10秒、40秒內(nèi)的平均流量
T        通過此鍵可切換是否顯示每個連接的總流量
j/k      按j鍵或k鍵可以向上或向下滾動屏幕顯示當(dāng)前的連接信息
l        通過此鍵可打開iftop輸出過濾功能,比如輸入要顯示的IP,按回車后,屏幕就只顯示與這個IP相關(guān)的流量信息
L        通過此鍵可切換顯示流量刻度范圍,刻度不同,流量圖形條會跟著變化
q        通過此鍵可退出iftop流量監(jiān)控界面
n        通過此鍵可使iftop輸出結(jié)果以IP或主機(jī)名的方式顯示
s        通過此鍵可切換是否顯示源主機(jī)信息
d        通過此鍵可切換是否顯示遠(yuǎn)端目標(biāo)主機(jī)信息
t        通過此鍵可切換iftop顯示格式,連續(xù)按此鍵可依次顯示:以兩行顯示發(fā)送接收流量、以一行顯示發(fā)送接收流量、只顯示發(fā)送流量/接收流量
N        通過此鍵可切換顯示端口號/端口號對應(yīng)服務(wù)名稱
S        通過此鍵可切換是否顯示本地源主機(jī)的端口信息
D        通過此鍵可切換是否顯示遠(yuǎn)端目標(biāo)主機(jī)的端口信息
p        通過此鍵可切換是否顯示端口信息
1/2/3    根據(jù)最近 2 秒、10 秒、40 秒的平均網(wǎng)絡(luò)流量排序
<        通過此鍵可根據(jù)左邊的本地主機(jī)名或IP地址進(jìn)行排序
>        通過此鍵可根據(jù)遠(yuǎn)端目標(biāo)主機(jī)的主機(jī)名或IP地址進(jìn)行排序
o        通過此鍵可切換是否固定顯示當(dāng)前的連接

使用示例:

  • 顯示網(wǎng)卡 eth0 的信息,主機(jī)通過 ip 顯示
iftop -i bond1 -n
  • 顯示端口號(添加 -P 參數(shù),進(jìn)入界面可通過 p 參數(shù)關(guān)閉)
iftop -i bond1 -n -P
  • 顯示將輸出以 byte 為單位顯示網(wǎng)卡流量,默認(rèn)是 bit
iftop -i bond1 -n -B
  • 顯示流量進(jìn)度條
iftop -i bond1 -n
# 進(jìn)入界面后按下shift+l
  • 顯示每個連接的總流量
iftop -i bond1 -n
# 進(jìn)入界面后按下shift+t
  • 顯示指定 ip 172.17.1.158 的流量
iftop -i bond1 -n
# 進(jìn)入界面后按下 l 后,再輸入172.17.1.158并回車

實戰(zhàn):
  下面將通過找出最費流量的IP和端口號實例來綜合講解iftop
  進(jìn)入界面:

iftop -i bond1 -nNB -m 10M

-i 指定網(wǎng)卡,
-n 代表主機(jī)通過ip顯示不走DNS
-N 只顯示連接端口號,不顯示端口對應(yīng)的服務(wù)名稱(不加會顯示如ssh這樣的服務(wù)名稱,不便于排查)
-B 指定顯示單位為Kb,默認(rèn)是bit,太?。?
-m 設(shè)置輸出界面中最上面的流量刻度最大值,流量刻度分5個大段顯示

  進(jìn)入后界面如下:

 
  按下shift+l顯示流量刻度(L 參數(shù)直接顯示進(jìn)度條,方便閱讀):

 
  按下shift+t顯示總量,總數(shù)統(tǒng)計:

 
  按下 3,根據(jù)最近 40s 統(tǒng)計排序,用平均值來統(tǒng)計最權(quán)威:

 
  按下 t,流量發(fā)送和流量接收合成一行:

 
  多按幾次 shift+b,查看最近 2s、10s、40s的統(tǒng)計:

 
  根據(jù)流量進(jìn)度條找出圖中流量用得最多的 IP(當(dāng)然我這個是壓測儀打的流量,所以每個IP都很高),假定172.26.3.30是流量最高的,篩選指定 IP:172.26.3.30
  按下 shift+l, 輸入172.26.3.30,出現(xiàn)如下:

 
  按回車:

 
  這樣就只看到這個 IP 的流量監(jiān)控了。找到這個IP哪個端口流量用得最多
  按下 p根據(jù)端口號顯示(我這個服務(wù)器沒有任何端口流量,使用壓測儀往網(wǎng)卡打的流量)

到此這篇關(guān)于如何在Linux系統(tǒng)中進(jìn)行CPU、內(nèi)存、磁盤和網(wǎng)卡的性能測試?的文章就介紹到這了,更多相關(guān)Linux硬件性能調(diào)優(yōu)測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

云浮市| 洮南市| 双桥区| 化德县| 油尖旺区| 丹凤县| 克什克腾旗| 江北区| 独山县| 阳曲县| 泗洪县| 通许县| 鲁山县| 杭州市| 武平县| 洮南市| 台湾省| 马鞍山市| 建瓯市| 卢龙县| 中阳县| 惠水县| 江城| 鹤壁市| 石楼县| 吉安市| 宁武县| 仪征市| 康定县| 沙湾县| 平泉县| 日照市| 湖南省| 大邑县| 苍梧县| 章丘市| 湖北省| 营口市| 垣曲县| 双桥区| 克东县|