文件系統向外展現的空間使用,而非磁盤空間的真是用量,由於文件系統的元數據也會佔用磁盤空間ios
若是存儲過多的小文件、就可能碰到索引節點容量已滿的問題redis
若是存儲過多的小文件、就可能碰到索引節點容量已滿的問題,從而能夠減小訪問慢速磁盤的次數緩存
第一個維度、從文件系統和磁盤 I/O 的性能指標出發。換句話說,當你想查看某個性能指標時,要清楚知道,哪些工具能夠作到工具
第二個維度,從工具出發。也就是當你已經安裝了某個工具後,要知道這個工具能提供哪些指標性能
根據指標招工學習
仍是那句話,找關聯。多種性能指標間都有必定的關聯性,不要徹底孤立的看待他們。想弄清楚性能指標的關聯性,
就要通曉每種性能指標的工做原理。這也是爲何我在介紹每一個性能指標時,都要穿插講解相關的系統原理,再次但願你能記住這一點。spa
一、先用 iostat 發現磁盤 I/O 性能瓶頸;
二、再借助 pidstat ,定位出致使瓶頸的進程;
三、隨後分析進程的 I/O 行爲;
四、最後,結合應用程序的原理,分析這些 I/O 的來源。線程
因此,爲了縮小排查範圍,我一般會先運行那幾個支持指標較多的工具,如 iostat、vmstat、pidstat 等。而後再根據觀察到的現象,結合系統和應用程序的原理,尋找下一
步的分析方向。我把這個過程畫成了一張圖,你能夠保存下來參考使用。3d
圖中列出了最經常使用的幾個文件系統和磁盤 I/O 性能分析工具,以及相應的分析流程,箭頭則表示分析方向。這其中,iostat、vmstat、pidstat 是最核心的幾個性能工具,它們也提
供了最重要的 I/O 性能指標。舉幾個例子你可能更容易理解。日誌
例如,在前面講過的 MySQL 和 Redis 案例中,咱們就是經過 iostat 確認磁盤出現 I/O性能瓶頸,而後用 pidstat 找出 I/O 最大的進程,接着藉助 strace 找出該進程正在讀寫的
文件,最後結合應用程序的原理,找出大量 I/O 的緣由。
再如,當你用 iostat 發現磁盤有 I/O 性能瓶頸後,再用 pidstat 和 vmstat 檢查,可能會發現 I/O 來自內核線程,如 Swap 使用大量升高。這種狀況下,你就得進行內存分析了,
先找出佔用大量內存的進程,再設法減小內存的使用。
另外注意,我在這個圖中只列出了最核心的幾個性能工具,並無列出前面表格中的全部工具。這麼作,一方面是不想用大量的工具列表嚇到你。在學習之初就接觸全部核心或小
衆的工具,不見得是好事。另外一方面,也是但願你能先把重心放在覈心工具上,畢竟熟練掌握它們,就能夠解決大多數問題。
因此,你能夠保存下這張圖,做爲文件系統和磁盤 I/O 性能分析的思路圖譜。從最核心的這幾個工具開始,經過我提供的那些案例,本身在真實環境裏實踐,拿下它們。
今天,咱們一塊兒複習了常見的文件系統和磁盤 I/O 性能指標,梳理了常見的 I/O 性能觀測工具,並創建了性能指標和工具的關聯。最後,咱們還總結了快速分析 I/O 性能問題的思路。
仍是那句話,雖然 I/O 的性能指標不少,相應的性能分析工具也有很多,但熟悉了各指標含義後,你就會天然找到它們的關聯。順着這個思路往下走,掌握經常使用的分析套路也並不難。