Linux性能優化之磁盤I/O調優


  I/O指標已介紹,那么如何查看系統的這些指標呢?

  一、根據工具查性能

    

  二、根據性能找工具

    

   三、磁盤I/O觀察實例

    iostat 是最常用的磁盤 I/O 性能觀測工具,它提供了每個磁盤的 使用率 IOPS 吞吐量 等各種常見的性能指標。這些指標實際上來自 /proc/diskstats
    

    1)%util ,就是我們前面提到的磁盤 I/O 使用率;

    2)r/s+ w/s ,就是 IOPS
    3)rkB/s+wkB/s ,就是吞吐量;
    4)r_await+w_await ,就是響應時間。
    5)iostat 並不能直接得到磁盤飽和度。可以把觀測到的,平均請求隊列長度或者讀寫請求完成的等待時間,跟基准測試的結果進行對比,綜合評估磁盤的飽和情況。
  四、進程I/O觀察實例

    可以使用 pidstat iotop 這兩個工具。
      

       

   五、I/O優化策略

    1.應用程序優化策略
      第一,可以用追加寫代替隨機寫,減少尋址開銷,加快 I/O 寫的速度。
      第二,可以借助緩存 I/O ,充分利用系統緩存,降低實際 I/O 的次數。
      第三,可以在應用程序內部構建自己的緩存,或者用 Redis 這類外部緩存系統。
      第四,需要頻繁讀寫同一塊磁盤空間時,可以用 mmap 代替 read/write,減少內存的拷貝次數。
      第五,在需要同步寫的場景中,盡量將寫請求合並,而不是讓每個請求都同步寫入磁盤。
      第六,在多個應用程序共享相同磁盤時,為了保證 I/O 不被某個應用完全占用,推薦你使用 cgroups I/O 子系統,來限制進程 進程組的 IOPS 以及吞吐量。
    2.文件系統優化策略
      第一,可以根據實際負載場景的不同,選擇最適合的文件系統。比如 Ubuntu 默認使用 ext4 文件系統
      第二,在選好文件系統后,還可以進一步優化文件系統的配置選項 。
      第三,可以優化文件系統的緩存 。

    3.磁盤優化策略
      磁盤也是整個 I/O 棧的最底層。從磁盤角度出發,自然也有很多有效的性能優化方法
      第一,最簡單有效的優化方法,就是換用性能更好的磁盤,比如用 SSD 替代 HDD
      第二,可以使用 RAID ,把多塊磁盤組合成一個邏輯磁盤,構成冗余獨立磁盤陣列。這樣做既可以提高數據的可靠性,又可以提升數據的訪問性能。
      第三,針對磁盤和應用程序 I/O 模式的特征,我們可以選擇最適合的 I/O 調度算法。比方說,SSD 和虛擬機中的磁盤,通常用的是 noop 調度算法。而數據庫應用,我更推薦使用 deadline 算法。
      第四,可以對應用程序的數據,進行磁盤級別的隔離 。
      第五,在順序讀比較多的場景中,可以增大磁盤的預讀數據 。
      第六,可以優化內核塊設備 I/O 的選項。比如,可以調整磁盤隊列的長度,以提升磁盤的吞吐量 。




 



 

  




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM