| | 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 | }}} |