RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Linux使用iostat命令

CHANBAEK ? 來(lái)源:myfreax ? 作者:myfreax ? 2023-01-04 17:17 ? 次閱讀

IO等待或者iowait,wait,wa,%iowait,或者wait%通??梢酝ㄟ^(guò)Linux系統(tǒng)監(jiān)控工具查看。例如命令行工具top、sar、atop等。

就其本身而言,它是眾多性能統(tǒng)計(jì)數(shù)據(jù)之一,可讓我們深入了解Linux系統(tǒng)性能。當(dāng)CPU負(fù)載峰值為60到80時(shí)。I/O等待會(huì)導(dǎo)致頁(yè)面加載緩慢、超時(shí)和間歇性中斷。

IO等待是CPU或多個(gè)CPU空閑的時(shí)間百分比,在此期間系統(tǒng)有等待的磁盤(pán)I/O請(qǐng)求,I/O等待適用于Unix/Linux系統(tǒng),包括macOS、FreeBSD、Solaris。

iostat 命令查找高IO等待的磁盤(pán)

Linux有很多可用的工具可以用來(lái)發(fā)現(xiàn)與排錯(cuò),有些工具很容易使用,有些用法則比較高級(jí)。

查看I/O 等待問(wèn)題不僅需要使用一些高級(jí)工具,也需要一些基本工具的高級(jí)用法。I/O等待之所以難以排查是因?yàn)槟J(rèn)有太多的工具告訴你系統(tǒng)I/O阻塞。

但沒(méi)那么多工具可以幫你縮小范圍以確定是哪個(gè)或哪些進(jìn)程引起的問(wèn)題。

在排查IO等待問(wèn)題上,首先確定是不是因?yàn)镮/O引起系統(tǒng)緩慢。你可以使用很多工具但最簡(jiǎn)單的Linux命令還是top。

使用top命令即可看到類似這樣的信息Cpu(s): 0.0%us, 0.5%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st。

us用戶空間占用CPU百分比。sy內(nèi)核空間占用CPU百分比。ni用戶進(jìn)程空間內(nèi)改變過(guò)優(yōu)先級(jí)的進(jìn)程占用CPU百分比。

id空閑CPU百分比。wa等待輸入輸出的CPU時(shí)間百分比。hi硬件中斷。si軟件中斷。st實(shí)時(shí)。

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(s) 這行你可以看出當(dāng)前CPU IO等待的情況,越高的wa表示越多的cpu資源在等待I/O。

上面的top命令從系統(tǒng)面大體展示I/O等待,但它沒(méi)有告訴你哪個(gè)硬盤(pán)正在被影響,為此我們還需要使用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 -x 2 5命令將每2秒打印報(bào)告,共打印5次。iostata命令的-x選項(xiàng)打印更詳細(xì)的報(bào)告信息。

iostat命令打印的第1個(gè)報(bào)告,數(shù)值是基于最后一次系統(tǒng)啟動(dòng)的時(shí)間統(tǒng)計(jì)的?;谶@個(gè)原因,在大部份情況下,iostat命令打印出的第1個(gè)報(bào)告應(yīng)該被忽略。

每個(gè)子報(bào)告都是基于上1次的報(bào)告。在這個(gè)例子中,iostat -x 2 5命令將打印5次報(bào)告。

第2份報(bào)告就是從第1份報(bào)告開(kāi)始后的硬盤(pán)數(shù)據(jù),第3份報(bào)告基于第2份,依此類推。

上述示例,sda盤(pán)的%utili達(dá)到了111.41%。這表示引起I/O慢的進(jìn)程在寫(xiě)入sda磁盤(pán)盤(pán)。

因?yàn)槲疫@個(gè)測(cè)試實(shí)例中只有1個(gè)硬盤(pán),但對(duì)于有多硬盤(pán)的服務(wù)器來(lái)說(shuō),這可以縮小在使用I/O的進(jìn)程范圍。

iostat命令除了提供%utili信息外,像rrqm/s、wrqm/s這些每秒讀、寫(xiě)的請(qǐng)求數(shù),r/s、w/s每秒讀寫(xiě)數(shù)也很有用。

iotop 命令查找高IO等待的進(jìn)程

查看哪個(gè)進(jìn)程使用硬盤(pán)最多,最簡(jiǎn)單的方法就是使用iotop命令。iotop命令定期采樣磁盤(pán)的讀寫(xiě)數(shù)據(jù)。

顯示每個(gè)進(jìn)程磁盤(pán)讀DISK READ和 DISK WRITE寫(xiě)速度以及進(jìn)程的IO優(yōu)先級(jí)PRIO等信息。

通過(guò)查看磁盤(pán)的讀DISK READ與寫(xiě)DISK WRITE,我們很容易就可以確定是bonnie++進(jìn)程在頻繁的使用磁盤(pán)IO。

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

ps 命令查找高IO等待的進(jìn)程

雖然iotop好用,但主流的Linux發(fā)行版中是沒(méi)有安裝的。系統(tǒng)管理員總是會(huì)碰到這樣的情況,他們沒(méi)辦法在短時(shí)間內(nèi)簡(jiǎn)單地安裝這些非默認(rèn)命令。

如果iotop沒(méi)辦法用,可以使用PS命令來(lái)代替iotop命令。以下的步聚還是可以幫助你縮小進(jìn)程的范圍。

ps命令可以打印出內(nèi)存,cpu的情況。但沒(méi)辦法打印磁盤(pán)I/O的情況。雖然ps命令沒(méi)辦法打印出I/O的情況,但它可以打印進(jìn)程是否在等待I/O。

ps命令的STAT狀態(tài)列提供進(jìn)程當(dāng)前的狀態(tài)。D表示不間斷睡眠。R正在運(yùn)行。S可中斷的睡眠,正在等待事件的完成。T已經(jīng)終止進(jìn)程。

X表示進(jìn)程已經(jīng)死亡,你可能永遠(yuǎn)不會(huì)看到此狀態(tài)。Z表示已失效,通常稱為僵尸進(jìn)程,已終止但未由其父進(jìn)程回收。

等待I/O的進(jìn)程通常處于D狀態(tài),通過(guò)ps命令打印的信息我們就可以找到在等待IO的進(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

命令會(huì)每5秒循環(huán)打印處于D狀態(tài)的進(jìn)程,共打印10次。但僅憑進(jìn)程處于D狀態(tài),還不能完全確定就是該進(jìn)程引起的I/O等待。

為了確定可疑的進(jìn)程,我們還需要使用/proc文件系統(tǒng)。在這個(gè)虛擬文件系統(tǒng)里,每個(gè)進(jìn)程都有一個(gè)IO文件,里面的數(shù)值跟iotop命令獲取的I/O數(shù)值是一樣的。

假設(shè),我們懷疑引起高IO等待的進(jìn)程bonnie++,它的進(jìn)程PID是16528。我們可以運(yùn)行命令cat /proc/16528/io查看進(jìn)程磁盤(pán)IO數(shù)據(jù)。

cat /proc/16528/io
rchar: 562397689
wchar: 1073318747
syscr: 137395
syscw: 190792
read_bytes: 482344960
write_bytes: 524697984
cancelled_write_bytes: 16801792

read_byteswrite_bytes就這個(gè)進(jìn)程讀寫(xiě)硬盤(pán)的字節(jié)數(shù)。在這里,bonnie++已經(jīng)讀取了46MB,寫(xiě)入524MB的數(shù)據(jù)。

lsof 命令查看頻繁讀寫(xiě)的文件

lsof命令會(huì)為你展示指定進(jìn)程打開(kāi)的所有文件,為了減少打印的信息,可以僅使用-p選項(xiàng)打印指定進(jìn)程打開(kāi)的文件。

lsof -p 16528

減少I/O等待

優(yōu)化應(yīng)用程序的代碼和數(shù)據(jù)庫(kù)查詢。這可以大大降低磁盤(pán)讀/寫(xiě)的頻率。這應(yīng)該是您的第一種方法。

確保您有足夠的可用內(nèi)存,以便大約一半的服務(wù)器內(nèi)存用于內(nèi)存緩沖區(qū)和緩存,而不是使用交換空間和分頁(yè)到磁盤(pán)。

調(diào)整您的系統(tǒng)、存儲(chǔ)設(shè)備和 Linux 內(nèi)核以提高存儲(chǔ)性能和使用壽命。最后,如果一切都失敗了。將存儲(chǔ)設(shè)備升級(jí)到更快的SSD、NVMe或其他高吞吐量存儲(chǔ)設(shè)備。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • IO
    IO
    +關(guān)注

    關(guān)注

    0

    文章

    448

    瀏覽量

    39132
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10854

    瀏覽量

    211578
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209326
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    683

    瀏覽量

    22011
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    何在Linux中使用htop命令

    本文介紹如何在 Linux 中使用 htop 命令
    的頭像 發(fā)表于 12-04 14:45 ?2008次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>Linux</b>中使用htop<b class='flag-5'>命令</b>

    linux運(yùn)維命令大全

    Linux高端運(yùn)維學(xué)習(xí)需要掌握大量的命令及相關(guān)工具,通讀bash man page、掌握VIM使用、了解SSH是Linux高端運(yùn)維工程師必備功課,熟練掌握Linux高端運(yùn)維實(shí)用
    發(fā)表于 03-15 16:36

    Linux查看資源使用情況和性能調(diào)優(yōu)常用的命令

    目錄 前言 top命令 htop命令 ps命令 free命令 vmstat命令 iosat命令
    的頭像 發(fā)表于 11-12 17:54 ?4196次閱讀

    何在Linux使用pidof命令

    `pidof`是一個(gè)命令行程序,可讓您找到正在運(yùn)行程序的進(jìn)程ID。在教程中,我們將說(shuō)明如何在Linux 使用pidof命令。
    的頭像 發(fā)表于 12-05 17:01 ?2320次閱讀

    何在Linux使用touch命令

    Linux touch命令用于更改文件時(shí)間戳。但touch命令的最常見(jiàn)用法是創(chuàng)建文件。
    的頭像 發(fā)表于 12-05 17:21 ?2071次閱讀

    何在Linux使用rpm命令

    RPM是基于RedHat Linux發(fā)行版的軟件包管理器,例如CentOS和Fedora。RPM還指`rpm`命令和`.rpm`文件擴(kuò)展名稱。
    的頭像 發(fā)表于 01-04 17:14 ?1664次閱讀

    何在Linux上使用粘貼命令?

    Linux中的粘貼命令是一個(gè)有用的工具,用于將多個(gè)文件或文本行合并到單個(gè)文件或輸出中。它通常與剪切命令結(jié)合使用,允許用戶剪切特定行或文本部分并將其粘貼到其他地方。在本文中,小編將探討 Linu
    的頭像 發(fā)表于 02-08 16:58 ?1832次閱讀

    何在Linux中高效運(yùn)行終端命令

    Linux 終端是一個(gè)功能強(qiáng)大的工具,允許您使用命令執(zhí)行各種系統(tǒng)操作。文件操作、程序管理和服務(wù)自動(dòng)化是您可以使用 shell 命令高效執(zhí)行的一些操作。
    的頭像 發(fā)表于 03-20 09:39 ?714次閱讀

    何在Linux中使用progress命令

    progress 命令是一個(gè)簡(jiǎn)單但功能強(qiáng)大的 Linux/Unix 命令行工具,可讓用戶查看文件操作的進(jìn)度。
    的頭像 發(fā)表于 04-08 15:51 ?2454次閱讀

    何在Linux中高效運(yùn)行終端命令

    Linux 終端是一個(gè)功能強(qiáng)大的工具,允許您使用命令執(zhí)行各種系統(tǒng)操作。文件操作、程序管理和服務(wù)自動(dòng)化是您可以使用 shell 命令高效執(zhí)行的一些操作。
    的頭像 發(fā)表于 04-13 10:34 ?673次閱讀

    何在Linux命令行中運(yùn)行Python腳本

    Python 腳本。 在本文中,我們將詳細(xì)介紹如何在 Linux 命令行中運(yùn)行 Python 腳本。我們將討論以下主題:
    的頭像 發(fā)表于 05-12 14:49 ?1681次閱讀

    恒訊科技分析:如何在Linux上使用rm命令刪除文件和目錄?

    本指南展示了如何在Linux中使用rm命令行刪除文件、目錄和其他內(nèi)容?
    的頭像 發(fā)表于 06-09 17:02 ?1174次閱讀

    Linux查看IO狀態(tài)的常用命令都有哪些呢?

    介紹下Linux的3個(gè)常用I/O相關(guān)命令,解決I/O壓力過(guò)大問(wèn)題時(shí)用iostat,查看磁盤(pán)的I/O狀態(tài)用iotop,查看I/O進(jìn)程排名用lsof
    的頭像 發(fā)表于 01-16 09:28 ?5372次閱讀

    華納云監(jiān)視Linux磁盤(pán)IO性能命令:iotop,iostat,vmstat,atop,dstat,ioping

    以下介紹6個(gè)監(jiān)視 Linux 磁盤(pán)IO性能的命令(工具),它們分別是iotop、iostat、vmstat、atop、dstat、ioping,以下將附上簡(jiǎn)單的使用方法。 前言 磁盤(pán)IO
    的頭像 發(fā)表于 10-24 14:43 ?168次閱讀

    Linux系統(tǒng)監(jiān)控報(bào)I/O問(wèn)題怎么辦

    Linux系統(tǒng)出現(xiàn)了性能問(wèn)題,一般我們可以通過(guò)top、iostat、free、vmstat等命令來(lái)查看初步定位問(wèn)題。其中iostat可以給我們提供豐富的IO狀態(tài)數(shù)據(jù)。 一、查詢
    的頭像 發(fā)表于 12-18 09:07 ?188次閱讀
    RM新时代网站-首页