五月天青色头像情侣网名,国产亚洲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是什么?的評論 (共 條)

分享到微博請遵守國家法律
二手房| 沙雅县| 枝江市| 平顺县| 翁牛特旗| 历史| 志丹县| 那坡县| 东港市| 沂南县| 新和县| 江阴市| 桃源县| 三原县| 兴海县| 阜康市| 比如县| 伊宁县| 屯昌县| 丹巴县| 郓城县| 林甸县| 社会| 海口市| 明星| 道真| 航空| 禄丰县| 措勤县| 祥云县| 宁夏| 卢龙县| 宁德市| 呼图壁县| 兴文县| 密山市| 梅河口市| 峨边| 额济纳旗| 海门市| 正安县|