linuxio隊列命令 linux隊列實現(xiàn)

Linux 里面iostat命令作用是什么?

iostat 可以提供更豐富的IO性能狀態(tài)數(shù)據(jù)

成都創(chuàng)新互聯(lián)專注于克州網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供克州營銷型網(wǎng)站建設(shè),克州網(wǎng)站制作、克州網(wǎng)頁設(shè)計、克州網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造克州網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供克州網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

iostat提供幾個用于定制輸出的開關(guān)。最有用的有:

-c 只顯示CPU行

-d 顯示設(shè)備(磁盤)使用狀態(tài)

-k 以千字節(jié)為單位顯示磁盤輸出

-t 在輸出中包括時間戳

-x 在輸出中包括擴展的磁盤指標(biāo)

rrqm/s: 每秒進行 merge 的讀操作數(shù)目。

wrqm/s: 每秒進行 merge 的寫操作數(shù)目。

r/s: 每秒完成的讀 I/O 設(shè)備次數(shù)。

w/s: 每秒完成的寫 I/O 設(shè)備次數(shù)。

rsec/s: 每秒讀扇區(qū)數(shù)。

wsec/s: 每秒寫扇區(qū)數(shù)。

rkB/s: 每秒讀K字節(jié)數(shù)。是 rsect/s 的一半,因為每扇區(qū)大小為512字節(jié)。(需要計算)

wkB/s: 每秒寫K字節(jié)數(shù)。是 wsect/s 的一半。(需要計算)

avgrq-sz: 平均每次設(shè)備I/O操作的數(shù)據(jù)大小 (扇區(qū))。

avgqu-sz: 平均I/O隊列長度。

await: 平均每次設(shè)備I/O操作的等待時間 (毫秒)。

svctm: 平均每次設(shè)備I/O操作的服務(wù)時間 (毫秒)。

%util: 一秒中有百分之多少的時間用于 I/O 操作。

關(guān)于Merge的解釋:當(dāng)系統(tǒng)調(diào)用需要讀取數(shù)據(jù)的時 候,VFS將請求發(fā)到各個FS,如果FS發(fā)現(xiàn)不同的讀取請求讀取的是相同Block的數(shù)據(jù),F(xiàn)S會將這個請求合并Merge

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

%util:在統(tǒng)計時間內(nèi)所有處理IO時間,除以總共統(tǒng)計時間。例如,如果統(tǒng)計間隔1秒,該 設(shè)備有0.8秒在處理IO,而0.2秒閑置,那么該設(shè)備的%util = 0.8/1 = 80%,所以該參數(shù)暗示了設(shè)備的繁忙程度。一般地,如果該參數(shù)是100%表示設(shè)備已經(jīng)接近滿負(fù)荷運行了(當(dāng)然如果是多磁盤,即使%util是100%,因 為磁盤的并發(fā)能力,所以磁盤使用未必就到了瓶頸)。

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 進程總數(shù)

1 running 正在運行的進程數(shù)

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

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

0 zombie 僵尸進程數(shù)

Cpu(s):

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

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

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

98.7% id 空閑CPU百分比

0.0% wa 等待輸入輸出的CPU時間百分比

0.0% hi

0.0% si

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

第二種:用vmstat

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

輸入命令:

vmstat 2 5

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

vmstat參數(shù)解釋:

Procs

r: 等待運行的進程數(shù) b: 處在非中斷睡眠狀態(tài)的進程數(shù) w: 被交換出去的可運行的進程數(shù)。此數(shù)由 linux 計算得出,但 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ù),包括時鐘中斷

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

CPU

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

us: CPU 使用時間

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

id: 閑置時間

準(zhǔn)測

更多vmstat使用信息

第二種:用iostat

安裝:

Iostat 是 sysstat 工具集的一個工具,需要安裝。

Centos的安裝方式是:

yum install sysstat

Ubuntu的安裝方式是:

aptitude install sysstat

使用:

iostat -dx 顯示磁盤擴展信息

root@fileapp:~# iostat -dx

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

如果這兩對數(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為單位的列強制使用Kilobytes為單位;2表示,數(shù)據(jù)顯示每隔2秒刷新一次。

tps:該設(shè)備每秒的傳輸次數(shù)(Indicate the number of transfers per second that were issued to the device.)。"一次傳輸"意思是"一次I/O請求"。多個邏輯請求可能會被合并為"一次I/O請求"。"一次傳輸"請求的大小是未知的。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還有一個比較常用的選項 -x ,該選項將用于顯示和io相關(guān)的擴展數(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)時間(await) iostat -c 1 10 #查看cpu狀態(tài)

5, 實例分析

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)時間5ms,磁盤使用率80。磁盤響應(yīng)正常,但是已經(jīng)很繁忙了。

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

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

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

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

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

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

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

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

等待時間超過5ms, 磁盤io有問題

Linux中常見IO調(diào)度器

對于磁盤I/O,Linux提供了cfq, deadline和noop三種調(diào)度策略

考慮到硬件配置、實際應(yīng)用場景(讀寫比例、順序還是隨機讀寫)的差異,上面的簡單解釋對于實際選擇沒有太大幫助,實際該選擇哪個基本還是要實測來驗證。不過下面幾條說明供參考:

NOOP全稱No Operation,中文名稱電梯式調(diào)度器,該算法實現(xiàn)了最簡單的FIFO隊列,所有I/O請求大致按照先來后到的順序進行操作。NOOP實現(xiàn)了一個簡單的FIFO隊列,它像電梯的工作方式一樣對I/O請求進行組織。它是基于先入先出(FIFO)隊列概念的 Linux 內(nèi)核里最簡單的I/O 調(diào)度器。此調(diào)度程序最適合于固態(tài)硬盤。

Deadline翻譯成中文是截止時間調(diào)度器,是對Linus Elevator的一種改進,它避免有些請求太長時間不能被處理。另外可以區(qū)分對待讀操作和寫操作。DEADLINE額外分別為讀I/O和寫I/O提供了FIFO隊列。

Deadline對讀寫request進行了分類管理,并且在調(diào)度處理的過程中讀請求具有較高優(yōu)先級。這主要是因為讀請求往往是同步操作,對延遲時間比較敏感,而寫操作往往是異步操作,可以盡可能的將相鄰訪問地址的請求進行合并,但是,合并的效率越高,延遲時間會越長。因此,為了區(qū)別對待讀寫請求類型,deadline采用兩條鏈表對讀寫請求進行分類管理。但是,引入分類管理之后,在讀優(yōu)先的情況下,寫請求如果長時間得到不到調(diào)度,會出現(xiàn)餓死的情況,因此,deadline算法考慮了寫?zhàn)I死的情況,從而保證在讀優(yōu)先調(diào)度的情況下,寫請求不會被餓死。

總體來講,deadline算法對request進行了優(yōu)先權(quán)控制調(diào)度,主要表現(xiàn)在如下幾個方面:

CFQ全稱Completely Fair Scheduler ,中文名稱完全公平調(diào)度器,它是現(xiàn)在許多 Linux 發(fā)行版的默認(rèn)調(diào)度器,CFQ是內(nèi)核默認(rèn)選擇的I/O調(diào)度器。它將由進程提交的同步請求放到多個進程隊列中,然后為每個隊列分配時間片以訪問磁盤。 對于通用的服務(wù)器是最好的選擇,CFQ均勻地分布對I/O帶寬的訪問 。CFQ為每個進程和線程,單獨創(chuàng)建一個隊列來管理該進程所產(chǎn)生的請求,以此來保證每個進程都能被很好的分配到I/O帶寬,I/O調(diào)度器每次執(zhí)行一個進程的4次請求。該算法的特點是按照I/O請求的地址進行排序,而不是按照先來后到的順序來進行響應(yīng)。簡單來說就是給所有同步進程分配時間片,然后才排隊訪問磁盤。

多隊列無操作I / O調(diào)度程序。不對請求進行重新排序,最小的開銷。NVME等快速隨機I / O設(shè)備的理想選擇。

這是對最后期限I / O調(diào)度程序的改編,但設(shè)計用于 多隊列設(shè)備。一個出色的多面手,CPU開銷相當(dāng)?shù)汀?/p>

在linux系統(tǒng)中如何查看cpu和io

在 Linux 系統(tǒng)中,可以使用以下命令查看 CPU 信息:

top: 顯示系統(tǒng)進程的實時狀態(tài)

htop: 與 top 類似,但提供了更多的信息和更好的可視化

mpstat: 顯示多核 CPU 的狀態(tài)

lscpu: 顯示系統(tǒng) CPU 的配置信息

查看 IO 信息,可以使用以下命令:

iostat : 用于檢測磁盤I/O的使用狀況

vmstat : 用于檢測虛擬內(nèi)存的使用狀況

mpstat : 用于檢測 CPU 和磁盤I/O的使用狀況

dstat : 用于檢測磁盤I/O,網(wǎng)絡(luò),CPU等系統(tǒng)資源的使用狀況

需要注意的是這些命令需要安裝對應(yīng)的工具包

本文名稱:linuxio隊列命令 linux隊列實現(xiàn)
當(dāng)前URL:http://bm7419.com/article24/ddepece.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、外貿(mào)網(wǎng)站建設(shè)、App開發(fā)、標(biāo)簽優(yōu)化營銷型網(wǎng)站建設(shè)、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計