| 55 | * Virtual I/O : I/O 如何虛擬化?? 先前看過 PCI Express 有支援 IOMMU ... |
| 56 | * 系統監控、資源排程(Resource Scheduling and Provisioning)、動態負載平衡(Dynamic Load Balance)需要考慮平均 I/O 上限是否超出單台負載。 |
| 57 | |
| 58 | * 那麼 IOWait 有什麼好的解決知道呢?? - [參考文章] [http://www.cppblog.com/go-benny/archive/2008/04/23/47908.html IOWait 相關問題](簡) |
| 59 | {{{ |
| 60 | IOWait 高的一些處理方法 |
| 61 | |
| 62 | 1、如果有使用 RAID,請檢查 RAID 的狀態,例如:是否正在重建或者沒有初始化 |
| 63 | |
| 64 | 2、更換作業系統的核心,最好使用發行版標準的 Linux kernel,因為有比較多的修補 |
| 65 | |
| 66 | 3、檢查 /proc/sys/vm 下面是否可以最佳化 |
| 67 | |
| 68 | 4、是否使用了檔案系統,檔案系統是否有最佳化的選項,比如在 RAID5 上採用 xfs 文件系統時, |
| 69 | 可以調節一些參數優化性能 |
| 70 | |
| 71 | 5、客戶端程式是否產生了過大的壓力,比如磁碟的讀寫效能只有 10MB/s,每個執行緒的讀寫 |
| 72 | 速度為 5 MB/s,那麼如果讀寫執行緒個數為 20 的話,無疑會造成 IOWait 過高 |
| 73 | |
| 74 | 6、查看進程狀態 |
| 75 | ps -eo pid,user,wchan=WIDE-WCHAN-COLUMN -o s,cmd|awk ' $4 ~ /D/ {print $0}' |
| 76 | lsof -p $pid |
| 77 | |
| 78 | 7、使用block_dump |
| 79 | |
| 80 | /etc/init.d/syslog stop |
| 81 | echo 1 > /proc/sys/vm/block_dump |
| 82 | sleep 60 |
| 83 | dmesg | awk '/(READ|WRITE|dirtied)/ {process[$1]++} END {for (x in process) \ |
| 84 | print process[x],x}' |sort -nr |awk '{print $2 " " $1}' | \ |
| 85 | head -n 10 |
| 86 | |
| 87 | echo 0 > /proc/sys/vm/block_dump |
| 88 | /etc/init.d/syslog start |
| 89 | }}} |