真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux查看io命令 linux 查看io命令

Linux如何查看與測(cè)試磁盤IO性能

top命令的其他參數(shù)代表的含義詳見top命令詳解

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的舒城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

sar 命令是分析系統(tǒng)瓶頸的神器,可以用來查看 CPU 、內(nèi)存、磁盤、網(wǎng)絡(luò)等性能。

sar 命令查看當(dāng)前磁盤性能的命令為:

linux系統(tǒng)如何查看網(wǎng)絡(luò)IO?

首先 、用top命令查看

top - 16:15:05 up 6 days, ?6:25, ?2 users, ?load average: 1.45, 1.77, 2.14

Tasks: 147 total, ? 1 running, 146 sleeping, ? 0 stopped, ? 0 zombie

Cpu(s): ?0.2% us, ?0.2% sy, ?0.0% ni, 86.9% id, 12.6% wa, ?0.0% hi, ?0.0% si

Mem: ? 4037872k total, ?4003648k used, ? ?34224k free, ? ? 5512k buffers

Swap: ?7164948k total, ? 629192k used, ?6535756k free, ?3511184k cached

查看12.6% wa

IO等待所占用的CPU時(shí)間的百分比,高過30%時(shí)IO壓力高

其次、 用iostat -x 1 10

avg-cpu: ?%user ? %nice ? ?%sys %iowait ? %idle

0.00 ? ? ? 0.00 ? ? 0.25 ? ?33.46 ? ?66.29

Device: ? ?rrqm/s ?wrqm/s ? r/s ? ?w/s ? ? rsec/s ? wsec/s ? ?rkB/s ? ?wkB/s avgrq-sz avgqu-sz ? await ?svctm ?%util

sda ? ? ? ? ?0.00 ? ?0.00 ? ? ?0.00 ? 0.00 ? ?0.00 ? ?0.00 ? ? ? ? 0.00 ? ? 0.00 ? ? 0.00 ? ? ? ? ? 0.00 ? ?0.00 ? ?0.00 ? 0.00

sdb ? ? ? ? ?0.00 ? 1122 ?17.00 ?9.00 ?192.00 9216.00 ? ?96.00 ?4608.00 ? 123.79 ? 137.23 1033.43 ?13.17 100.10

sdc ? ? ? ? ?0.00 ? ?0.00 ? ? 0.00 ? 0.00 ? ? 0.00 ? ? 0.00 ? ? ?0.00 ? ? 0.00 ? ? 0.00 ? ? ? ? ? ? 0.00 ? ?0.00 ? ? ?0.00 ? 0.00

查看%util 100.10 %idle 66.29

如果 %util 接近 100%,說明產(chǎn)生的I/O請(qǐng)求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷,該磁盤可能存在瓶頸。

idle小于70% IO壓力就較大了,一般讀取速度有較多的wait.

同時(shí)可以結(jié)合vmstat 查看查看b參數(shù)(等待資源的進(jìn)程數(shù))

vmstat -1

如果你想對(duì)硬盤做一個(gè)IO負(fù)荷的壓力測(cè)試可以用如下命令

time dd if=/dev/zero bs=1M count=2048 of=direct_2G

此命令為在當(dāng)前目錄下新建一個(gè)2G的文件

我們?cè)谛陆ㄎ募A的同時(shí)來測(cè)試IO的負(fù)荷情況。

如何找出Linux系統(tǒng)高IO的思路總結(jié)

前言

I/O Wait是一個(gè)需要使用高級(jí)的工具來debug問題原因,當(dāng)然也有許多基本工具的高級(jí)用法。I/O wait的問題難以定位的原因是:因?yàn)槲覀冇泻芏喙ぞ呖梢愿嬖V你I/O 受限了,但是并沒有告訴你具體是哪個(gè)進(jìn)程引起的。

1. 如何確認(rèn),是否是I/O問題導(dǎo)致系統(tǒng)緩慢

確認(rèn)是否是I/O導(dǎo)致的系統(tǒng)緩慢我們可以使用多個(gè)命令,但是,最簡(jiǎn)單的是unix的命令 top

# top

top - 14:31:20 up 35 min, 4 users, load average: 2.25, 1.74, 1.68

Tasks: 71 total, 1 running, 70 sleeping, 0 stopped, 0 zombie

Cpu(s): 2.3%us, 1.7%sy, 0.0%ni, 0.0%id, 96.0%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 245440k total, 241004k used, 4436k free, 496k buffers

Swap: 409596k total, 5436k used, 404160k free, 182812k cached

從CPU這行,可以發(fā)現(xiàn)CPU的io wait;這里是96.0%。越高就代表CPU用于io wait的資源越多。

2. 找出哪個(gè)磁盤正在被寫入

上邊的top命令從一個(gè)整體上說明了I/O wait,但是并沒有說明是哪塊磁盤影響的,想知道是哪塊磁盤引發(fā)的問題,可以使用另外一個(gè)命令 iostat 命令

$ iostat -x 2 5

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

3.66 0.00 47.64 48.69 0.00 0.00

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 44.50 39.27 117.28 29.32 11220.94 13126.70 332.17 65.77 462.79 9.80 2274.71 7.60 111.41

dm-0 0.00 0.00 83.25 9.95 10515.18 4295.29 317.84 57.01 648.54 16.73 5935.79 11.48 107.02

dm-1 0.00 0.00 57.07 40.84 228.27 163.35 8.00 93.84 979.61 13.94 2329.08 10.93 107.02

iostat 會(huì)每2秒更新一次,一共打印5次信息, -x 的選項(xiàng)是打印出擴(kuò)展信息

第一個(gè)iostat 報(bào)告會(huì)打印出系統(tǒng)最后一次啟動(dòng)后的統(tǒng)計(jì)信息,這也就是說,在多數(shù)情況下,第一個(gè)打印出來的信息應(yīng)該被忽略,剩下的報(bào)告,都是基于上一次間隔的時(shí)間。舉例子來說,這個(gè)命令會(huì)打印5次,第二次的報(bào)告是從第一次報(bào)告出來一個(gè)后的統(tǒng)計(jì)信息,第三次是基于第二次 ,依次類推

所以,一定記?。旱谝粋€(gè)忽略!

在上面的例子中,sda的%utilized 是111.41%,這個(gè)很好的說明了有進(jìn)程正在寫入到sda磁盤中。

除了%utilized 外,我們可以從iostat得到更加豐富的資源信息,例如每毫秒讀寫請(qǐng)求(rrqm/s wrqm/s)),每秒讀寫的((r/s w/s)。在上邊的例子中,我們的項(xiàng)目看起來正在讀寫非常多的信息。這個(gè)對(duì)我們查找相應(yīng)的進(jìn)程非常有用。

3. 找出導(dǎo)致高IO的進(jìn)程

# iotop

Total DISK READ: 8.00 M/s | Total DISK WRITE: 20.36 M/s

TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND

15758 be/4 root 7.99 M/s 8.01 M/s 0.00 % 61.97 % bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

最簡(jiǎn)單的方法就是用iotop找出哪個(gè)進(jìn)程用了最多的存儲(chǔ)資源,從上面可以看到是bonnie++。

iotop很好用,但是不是默認(rèn)安裝的。

如果沒有iotop,下面的方式也可以讓你有種方法縮小范圍,盡快找到是哪個(gè)進(jìn)程。

ps 命令對(duì)內(nèi)存和CPU有一個(gè)統(tǒng)計(jì),但是他沒有對(duì)磁盤I/O的統(tǒng)計(jì),雖然他沒有顯示磁盤I/O,但是它顯示進(jìn)行的狀態(tài),我們可以用來知道一個(gè)進(jìn)程是否正在等待I/O

主要的進(jìn)程狀態(tài)有:

PROCESS STATE CODES

D uninterruptible sleep (usually IO)

R running or runnable (on run queue)

S interruptible sleep (waiting for an event to complete)

T stopped, either by a job control signal or because it is being traced.

W paging (not valid since the 2.6.xx kernel)

X dead (should never be seen)

Z defunct ("zombie") process, terminated but not reaped by its parent.

等待I/O的進(jìn)程的狀態(tài)一般是“uninterruptible sleep”,或者“D”,我們可以很容易的查找到正在等待I/O的進(jìn)程

# for x in `seq 1 1 10`; do ps -eo state,pid,cmd | grep "^D"; echo "----"; sleep 5; done

D 248 [jbd2/dm-0-8]

D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

----

D 22 [kswapd0]

D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

----

D 22 [kswapd0]

D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

----

D 22 [kswapd0]

D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

----

D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

上邊的例子會(huì)循環(huán)的輸出狀態(tài)是D的進(jìn)程,每5秒一次,一共10次

從輸出我們可以知道 bonnie++ 的pid是16528 ,在waiting,bonnie++看起來就是我們想找到的進(jìn)程,但是,只是從它的狀態(tài),我們沒有辦法證明就是bonnie++引起的I/O等待。

為了證明,我們可以可以查看/proc,每個(gè)進(jìn)程目錄下都有一個(gè)叫io的文件,里邊保存這和iotop類似的信息。

# cat /proc/16528/io

rchar: 48752567

wchar: 549961789

syscr: 5967

syscw: 67138

read_bytes: 49020928

write_bytes: 549961728

cancelled_write_bytes: 0

read_bytes和write_bytes是這個(gè)進(jìn)程從磁盤讀寫的字節(jié),在這個(gè)例子中,bonnie++進(jìn)程讀取了46M的數(shù)據(jù)并且寫入了524MB的數(shù)據(jù)到磁盤上。

4. 找出哪個(gè)文件正在被大量寫入

lsof 命令可以展示一個(gè)進(jìn)程打開的所有文件。從這個(gè)列表中,我們可以找到哪個(gè)文件被寫入。

# lsof -p 16528

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

bonnie++ 16528 root cwd DIR 252,0 4096 130597 /tmp

truncated

bonnie++ 16528 root 8u REG 252,0 501219328 131869 /tmp/Bonnie.16528

bonnie++ 16528 root 9u REG 252,0 501219328 131869 /tmp/Bonnie.16528

bonnie++ 16528 root 10u REG 252,0 501219328 131869 /tmp/Bonnie.16528

bonnie++ 16528 root 11u REG 252,0 501219328 131869 /tmp/Bonnie.16528

bonnie++ 16528 root 12u REG 252,0 501219328 131869 strong/tmp/Bonnie.16528/strong

# df /tmp

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/mapper/workstation-root 7667140 2628608 4653920 37% /

# pvdisplay

--- Physical volume ---

PV Name /dev/sda5

VG Name workstation

PV Size 7.76 GiB / not usable 2.00 MiB

Allocatable yes

PE Size 4.00 MiB

Total PE 1986

Free PE 8

Allocated PE 1978

PV UUID CLbABb-GcLB-l5z3-TCj3-IOK3-SQ2p-RDPW5S

使用pvdisplay可以看到,pv設(shè)備就是/dev/sda5,正是我們前面找到的sda。

參考文檔:

linux查看磁盤io的幾種方法

linux查看磁盤io的幾種方法

怎樣才能快速的定位到并發(fā)高是由于磁盤io開銷大呢?可以通過三種方式:

第一種:用 top 命令 中的cpu 信息觀察

Top可以看到的cpu信息有:

Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si

具體的解釋如下:

Tasks: 29 total 進(jìn)程總數(shù)

1 running 正在運(yùn)行的進(jìn)程數(shù)

28 sleeping 睡眠的進(jìn)程數(shù)

0 stopped 停止的進(jìn)程數(shù)

0 zombie 僵尸進(jìn)程數(shù)

Cpu(s):

0.3% us 用戶空間占用CPU百分比

1.0% sy 內(nèi)核空間占用CPU百分比

0.0% ni 用戶進(jìn)程空間內(nèi)改變過優(yōu)先級(jí)的進(jìn)程占用CPU百分比

98.7% id 空閑CPU百分比

0.0% wa 等待輸入輸出的CPU時(shí)間百分比

0.0% hi

0.0% si

0.0% wa 的百分比可以大致的體現(xiàn)出當(dāng)前的磁盤io請(qǐng)求是否頻繁。如果 wa的數(shù)量比較大,說明等待輸入輸出的的io比較多。

第二種:用vmstat

vmstat 命令報(bào)告關(guān)于線程、虛擬內(nèi)存、磁盤、陷阱和 CPU 活動(dòng)的統(tǒng)計(jì)信息。由 vmstat 命令生成的報(bào)告可以用于平衡系統(tǒng)負(fù)載活動(dòng)。系統(tǒng)范圍內(nèi)的這些統(tǒng)計(jì)信息(所有的處理器中)都計(jì)算出以百分比表示的平均值,或者計(jì)算其總和。

輸入命令:

vmstat 2 5

如果發(fā)現(xiàn)等待的進(jìn)程和處在非中斷睡眠狀態(tài)的進(jìn)程數(shù)非常多,并且發(fā)送到塊設(shè)備的塊數(shù)和從塊設(shè)備接收到的塊數(shù)非常大,那就說明磁盤io比較多。

vmstat參數(shù)解釋:

Procs

r: 等待運(yùn)行的進(jìn)程數(shù) b: 處在非中斷睡眠狀態(tài)的進(jìn)程數(shù) w: 被交換出去的可運(yùn)行的進(jìn)程數(shù)。此數(shù)由 linux 計(jì)算得出,但 linux 并不耗盡交換空間

Memory

swpd: 虛擬內(nèi)存使用情況,單位:KB

free: 空閑的內(nèi)存,單位KB

buff: 被用來做為緩存的內(nèi)存數(shù),單位:KB

Swap

si: 從磁盤交換到內(nèi)存的交換頁數(shù)量,單位:KB/秒

so: 從內(nèi)存交換到磁盤的交換頁數(shù)量,單位:KB/秒

IO

bi: 發(fā)送到塊設(shè)備的塊數(shù),單位:塊/秒

bo: 從塊設(shè)備接收到的塊數(shù),單位:塊/秒

System

in: 每秒的中斷數(shù),包括時(shí)鐘中斷

cs: 每秒的環(huán)境(上下文)切換次數(shù)

CPU

按 CPU 的總使用百分比來顯示

us: CPU 使用時(shí)間

sy: CPU 系統(tǒng)使用時(shí)間

id: 閑置時(shí)間

準(zhǔn)測(cè)

更多vmstat使用信息

第二種:用iostat

安裝:

Iostat 是 sysstat 工具集的一個(gè)工具,需要安裝。

Centos的安裝方式是:

yum install sysstat

Ubuntu的安裝方式是:

aptitude install sysstat

使用:

iostat -dx 顯示磁盤擴(kuò)展信息

root@fileapp:~# iostat -dx

r/s 和 w/s 分別是每秒的讀操作和寫操作,而rKB/s 和wKB/s 列以每秒千字節(jié)為單位顯示了讀和寫的數(shù)據(jù)量

如果這兩對(duì)數(shù)據(jù)值都很高的話說明磁盤io操作是很頻繁。

+++++++++++++++++++++++++++++++++++++

linux wa%過高,iostat查看io狀況

1, 安裝??iostat??

yum install sysstat

之后就可以使用?iostat 命令了,

2,入門使用

iostat -d -k 2

參數(shù) -d 表示,顯示設(shè)備(磁盤)使用狀態(tài);-k某些使用block為單位的列強(qiáng)制使用Kilobytes為單位;2表示,數(shù)據(jù)顯示每隔2秒刷新一次。

tps:該設(shè)備每秒的傳輸次數(shù)(Indicate the number of transfers per second that were issued to the device.)。"一次傳輸"意思是"一次I/O請(qǐng)求"。多個(gè)邏輯請(qǐng)求可能會(huì)被合并為"一次I/O請(qǐng)求"。"一次傳輸"請(qǐng)求的大小是未知的。kB_read/s:每秒從設(shè)備(drive expressed)讀取的數(shù)據(jù)量;

kB_wrtn/s:每秒向設(shè)備(drive expressed)寫入的數(shù)據(jù)量;

kB_read:讀取的總數(shù)據(jù)量;kB_wrtn:寫入的總數(shù)量數(shù)據(jù)量;這些單位都為Kilobytes。

指定監(jiān)控的設(shè)備名稱為sda,該命令的輸出結(jié)果和上面命令完全相同。

iostat -d sda 2

默認(rèn)監(jiān)控所有的硬盤設(shè)備,現(xiàn)在指定只監(jiān)控sda。?

3, -x 參數(shù)

iostat還有一個(gè)比較常用的選項(xiàng) -x ,該選項(xiàng)將用于顯示和io相關(guān)的擴(kuò)展數(shù)據(jù)。

iostat -d -x -k 1 10

輸出信息的含義

4, 常見用法

iostat -d -k 1 10? ? ? ? #查看TPS和吞吐量信息(磁盤讀寫速度單位為KB)

iostat -d -m 2? ? ? ? ? ? #查看TPS和吞吐量信息(磁盤讀寫速度單位為MB)

iostat -d -x -k 1 10? ? ? #查看設(shè)備使用率(%util)、響應(yīng)時(shí)間(await) iostat -c 1 10 #查看cpu狀態(tài)

5, 實(shí)例分析

iostat -d -k 1 | grep vda

Device:? ? ? ? ? ? tps? ? kB_read/s? ? kB_wrtn/s? ? kB_read? ? kB_wrtn

sda10? ? ? ? ? ? 60.72? ? ? ? 18.95? ? ? ? 71.53? 395637647 1493241908

sda10? ? ? ? ? 299.02? ? ? 4266.67? ? ? 129.41? ? ? 4352? ? ? ? 132

sda10? ? ? ? ? 483.84? ? ? 4589.90? ? ? 4117.17? ? ? 4544? ? ? 4076

sda10? ? ? ? ? 218.00? ? ? 3360.00? ? ? 100.00? ? ? 3360? ? ? ? 100

sda10? ? ? ? ? 546.00? ? ? 8784.00? ? ? 124.00? ? ? 8784? ? ? ? 124

sda10? ? ? ? ? 827.00? ? 13232.00? ? ? 136.00? ? ? 13232? ? ? ? 136

上面看到,磁盤每秒傳輸次數(shù)平均約400;每秒磁盤讀取約5MB,寫入約1MB。

iostat -d -x -k 1

Device:? ? rrqm/s wrqm/s? r/s? w/s? rsec/s? wsec/s? ? rkB/s? ? wkB/s avgrq-sz avgqu-sz? await? svctm? %util

sda? ? ? ? ? 1.56? 28.31? 7.84 31.50? 43.65? ? 3.16? ? 21.82? ? 1.58? ? 1.19? ? 0.03? ? 0.80? 2.61? 10.29

sda? ? ? ? ? 1.98? 24.75 419.80? 6.93 13465.35? 253.47? 6732.67? 126.73? ? 32.15? ? 2.00? ? 4.70? 2.00? 85.25

sda? ? ? ? ? 3.06? 41.84 444.90 54.08 14204.08 2048.98? 7102.04? 1024.49? ? 32.57? ? 2.10? ? 4.21? 1.85? 92.24

可以看到磁盤的平均響應(yīng)時(shí)間5ms,磁盤使用率80。磁盤響應(yīng)正常,但是已經(jīng)很繁忙了。

可以看到磁盤的平均響應(yīng)時(shí)間5ms,磁盤使用率90。磁盤響應(yīng)正常,但是已經(jīng)很繁忙了。

await:? 每一個(gè)IO請(qǐng)求的處理的平均時(shí)間(單位是微秒毫秒)。這里可以理解為IO的響應(yīng)時(shí)間,一般地系統(tǒng)IO響應(yīng)時(shí)間應(yīng)該低于5ms,如果大于10ms就比較大了

svctm? ? 表示平均每次設(shè)備I/O操作的服務(wù)時(shí)間(以毫秒為單位)。如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,

如果await的值遠(yuǎn)高于svctm的值,則表示I/O隊(duì)列等待太長(zhǎng),? 系統(tǒng)上運(yùn)行的應(yīng)用程序?qū)⒆兟?/p>

%util: 在統(tǒng)計(jì)時(shí)間內(nèi)所有處理IO時(shí)間,除以總共統(tǒng)計(jì)時(shí)間

所以該參數(shù)暗示了設(shè)備的繁忙程度

。一般地,如果該參數(shù)是100%表示設(shè)備已經(jīng)接近滿負(fù)荷運(yùn)行了(當(dāng)然如果是多磁盤,即使%util是100%,因?yàn)榇疟P的并發(fā)能力,所以磁盤使用未必就到了瓶頸)。

也可以使用下面的命令,同時(shí)顯示cpu和磁盤的使用情況

等待時(shí)間超過5ms, 磁盤io有問題


本文名稱:linux查看io命令 linux 查看io命令
網(wǎng)站URL:http://weahome.cn/article/ddojdpj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部