iostat命令:
%user:CPU處在用戶模式下的時間百分比。
%nice:CPU處在帶NICE值的用戶模式下的時間百分比。
%system:CPU處在系統模式下的時間百分比。
%iowait:CPU等待輸入輸出完成時間的百分比。
%steal:管理程序維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比。
%idle:CPU空閑時間百分比。
如果%iowait的值過高,表示硬盤存在I/O瓶頸
如果%idle值高,表示CPU較空閑
如果%idle值高但系統響應慢時,可能是CPU等待分配內存,應加大內存容量。
如果%idle值持續低于10,表明CPU處理能力相對較低,系統中最需要解決的資源是CPU。
工作機制
當應用程序需要讀取文件中的數據時,操作系統先分配一些內存,將數據從存儲設備讀入到這些內存中,然后再將數據分發給應用程序;當需要往文件中寫數據時,操作系統先分配內存接收用戶數據,然后再將數據從內存寫到磁盤上。
對于每個文件的第一個讀請求,系統讀入所請求的頁面并讀入緊隨其后的少數幾個頁面(不少于一個頁面,通常是三個頁面),這時的預讀稱為同步預讀。
如果應用程序接下來是順序讀取的話,那么文件 cache 命中,OS 會加大同步預讀的范圍,增強緩存效率,此時的預讀被稱為異步預讀
如果接下來 cache 沒命中,那么 OS 會繼續使用同步預讀。
因此基本思路就是:
盡量避免磁盤的隨機IO , 盡量利用磁盤預讀緩存 , 利用局部性原理
盡可能地順序讀寫一個文件
單進程讀寫硬盤
避免對大目錄操作
把小文件的讀寫轉換為大文件的寫