Linux

如何找到好的狀態 io stats?

  • May 24, 2018

我想監視磁碟 I/O 活動,以防 I/O 處理繁重。這個Nagios 外掛接縫很簡單,他在其中給出了範例

Example: Tps, read and write thresholds:
   ./check_diskstat.sh -d sda -w 200,100000,100000 -c 300,200000,200000

Example: Average queue length threshold:
   ./check_diskstat.sh -d sda -W 50 -C 100

問題

由於不同的主機會有不同的空閒 I/O 活動,我怎樣才能找到好的起始值來使用?

我想另一種問同樣問題的方法是:iostat應該在每個主機上使用哪些參數來查看它的“良好狀態”磁碟 I/O 是什麼?

底層計數器記錄在https://www.kernel.org/doc/Documentation/block/stat.txt

根據從塊設備讀取或寫入的 IOP 和扇區的絕對數量(小寫 -w-c選項)設置有意義的門檻值需要先驗了解該特定塊設備的實際能力(例如通過對它們進行基準測試)。

使用隊列長度(大寫 -W-C選項)似乎更通用一些。當你得到一個壞的增加的 IO 隊列時,不管底層儲存有多快,你推動的讀/寫次數超過了它所能支持的次數,你的應用程序就會變慢。

我不知道記錄的 50 和 100 毫秒是合理的還是完全任意的值。


對於我的虛擬伺服器,使用絕對數字相對容易,它們以具有特定限制的風格進行配置 ,我只需要將警告/嚴重級別設置為例如分配限制的 80% 和 95%。

例如,具有 600 IOPS 和 10 MB/s 的風味:

將分配的disk_read_bytes_secdisk_write_bytes_sec除以 512(扇區大小)以獲得虛擬磁碟將支持的扇區限制。(10 MB = 10000000 bytes) / 512 = 19531

19531 * 80% = 15624 和 600 * 80% = 480

19531 * 95% = 18749 和 600 * 95% = 570

./check_diskstat.sh -d vda -w 480,15624,15624 -c 570,18749,18749

引用自:https://serverfault.com/questions/913620