五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一文講解系統(tǒng)性能分析之|iowait是什么?

2023-04-11 15:23 作者:補給站Linux內核  | 我要投稿

我們對系統(tǒng)性能進行優(yōu)化時,一般會使用?top?命令來查看系統(tǒng)負載和系統(tǒng)中各個進程的運行情況,從而找出影響系統(tǒng)性能的因素。如下圖所示:


top?命令會輸出很多系統(tǒng)相關的信息,如:系統(tǒng)負載、系統(tǒng)中的進程數(shù)、CPU使用率和內存使用率等,這些信息對排查系統(tǒng)性能問題起著至關重要的作用。

本文主要介紹?top?命令中的?iowait?指標(如上圖中紅色方框所示)的含義和作用。

什么是iowait

什么是?iowait?我們來看看 Linux 的解釋:

Show the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request.

中文翻譯的意思就是:CPU 在等待磁盤 I/O 請求完成時,處于空閑狀態(tài)的時間百分比(此時正在運行著?idle?進程)。

可以看出,如果系統(tǒng)處于?iowait?狀態(tài),那么必須滿足以下兩個條件:

  1. 系統(tǒng)中存在等待 I/O 請求完成的進程。

  2. 系統(tǒng)當前正處于空閑狀態(tài),也就是說沒有可運行的進程。

iowait統(tǒng)計原理

既然我們知道了?iowait?的含義,那么接下來看看 Linux 是怎么統(tǒng)計?iowait?的比率的。

Linux 會把?iowait?占用的時間輸出到?/proc/stat?文件中,我們可以通過一下命令來獲取到?iowait?占用的時間:

命令輸出如下圖所示:


紅色方框中的數(shù)據(jù)就是?iowait?占用的時間。

我們可以每隔一段時間讀取一次?/proc/stat?文件,然后把兩次獲取到的?iowait?時間進行相減,得到的結果是這段時間內,CPU處于?iowait?狀態(tài)的時間。接著再將其除以總時間,得到?iowait?占用總時間的比率。

現(xiàn)在我們來看看?/proc/stat?文件是怎樣獲取?iowait?的時間的。

在內核中,每個 CPU 都有一個?cpu_usage_stat?結構,主要用于統(tǒng)計 CPU 一些信息,其定義如下:

cpu_usage_stat?結構的?iowait?字段記錄了 CPU 處于?iowait?狀態(tài)的時間。

所以要獲取系統(tǒng)處于?iowait?狀態(tài)的總時間,只需要將所有 CPU 的?iowait?時間相加即可,代碼如下(位于源文件?fs/proc/stat.c):

show_stat()?函數(shù)首先會遍歷所有 CPU,然后讀取其?iowait?時間,并且將它們相加。



增加iowait時間

從上面的分析可知,每個 CPU 都有一個用于統(tǒng)計?iowait?時間的計數(shù)器,那么什么時候會增加這個計數(shù)器呢?

答案是:系統(tǒng)時鐘中斷。

在?系統(tǒng)時鐘中斷?中,會調用?account_process_tick()?函數(shù)來更新 CPU 的時間,代碼如下:

我們主要關注當前進程是?idle?進程的情況,這是內核會調用?account_idle_time()?函數(shù)進行處理,其代碼如下:

account_idle_time()?函數(shù)的邏輯比較簡單,主要分以下兩種情況進行處理:

  1. 如果當前有進程在等待 I/O 請求的話,那么增加?iowait?的時間。

  2. 如果當前沒有進程在等待 I/O 請求的話,那么增加?idle?的時間。

所以,從上面的分析可知,要增加?iowait?的時間需要滿足以下兩個條件:

  1. 當前進程是?idle?進程,也就是說 CPU 處于空閑狀態(tài)。

  2. 有進程在等待 I/O 請求完成。

進一步說,當 CPU 處于?iowait?狀態(tài)時,說明 CPU 處于空閑狀態(tài),并且系統(tǒng)中有進程因為等待 I/O 請求而阻塞,也說明了 CPU 的利用率不夠充分。

這時,我們可以使用異步 I/O(如?iouring)來優(yōu)化程序,使得進程不會被 I/O 請求阻塞。


原文作者:Linux內核那些事



一文講解系統(tǒng)性能分析之|iowait是什么?的評論 (共 條)

分享到微博請遵守國家法律
吴堡县| 余干县| 泸西县| 驻马店市| 达日县| 库尔勒市| 大关县| 喜德县| 潮安县| 曲阜市| 凤山县| 虞城县| 黄浦区| 郎溪县| 建昌县| 英山县| 鄂尔多斯市| 永新县| 策勒县| 宾阳县| 凌海市| 镇康县| 新建县| 文昌市| 南郑县| 奉化市| 长岭县| 汶川县| 原平市| 绵阳市| 延吉市| 顺平县| 池州市| 平和县| 定襄县| 西峡县| 芦山县| 收藏| 甘南县| 盐池县| 兴城市|