Linux
如何找到好的狀態 io stats?
我想監視磁碟 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_sec
和disk_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