AIX 下磁碟 I/O 效能分析[轉]
AIX 下磁碟 I/O 效能分析
魏 新宇, 高階 IT 專家, IBM
魏新宇,任職於 IBM Adavanced Technical Skill 團隊,負責 Power 服產器產品的售前技術支援。
簡介:本文主要介紹在磁碟 I/O 效能的概念以及相關的指標,並介紹 AIX 系統下,衡量和監控磁碟 I/O 效能的方法,以及在 AIX 下,常見的可調整引數。
釋出日期:2012 年 3 月 08 日
級別:高階
訪問情況 :15825 次瀏覽
評論:
磁碟 I/O 的概念
I/O 的概念,從字義來理解就是輸入輸出。作業系統從上層到底層,各個層次之間均存在 I/O。比如,CPU I/O,記憶體 I/O, VMM I/O, 底層磁碟上也 I/O,這是廣義上的 I/O. 通常來講,一個上層的 I/O 可能會產生針對磁碟的多個 I/O,也就是說,上層的 I/O 是稀疏的,下層的 I/O 是密集的。
磁碟的 I/O,顧名思義就是磁碟的輸入輸出。輸入指的是對磁碟寫入資料,輸出指的是從磁碟讀出資料。
衡量磁碟 I/O 效能的指標
我們常見的磁碟型別 ATA、SATA、FC、SCSI、SAS。這幾種磁碟中,伺服器常用的是 SAS 和 FC 磁碟,一些高階儲存也使用 SSD 盤。每一種磁碟的效能是不一樣的。
我們在測試工作中,衡量磁碟 I/O 效能主要參考 IOPS 和吞吐量兩個引數。下面,將介紹一下這兩個引數的含義。
IOPS 與吞吐量的概念
磁碟的 IOPS,也就是在一秒內,磁碟進行多少次 I/O 讀寫。
磁碟的吞吐量,也就是每秒磁碟 I/O 的流量,即磁碟寫入加上讀出的資料的大小。
IOPS 與吞吐量的關係
每秒 I/O 吞吐量= IOPS* 平均 I/O SIZE。從公式可以看出: I/O SIZE 越大,IOPS 越高,那麼每秒 I/O 的吞吐量就越高。因此,我們會認為 IOPS 和吞吐量的數值越高越好。實際上,對於一個磁碟來講,這兩個引數均有其最大值,而且這兩個引數也存在著一定的關係。
下圖為各種磁碟的 IOPS 極限值。
注:上表源自維基百科
在 AIX 中,對於同一個磁碟(或者 LUN,隨著每次 I/O 讀寫資料的大小不通,IOPS 的數值也不是固定不變的。例如,每次 I/O 寫入或者讀出的都是連續的大資料塊,此時 IOPS 相對會低一些;在不頻繁換道的情況下,每次寫入或者讀出的資料塊小,相對來講 IOPS 就會高一些。
I/O 讀寫的型別
大體上講,I/O 的型別可以分為:讀 / 寫 I/O、大 / 小塊 I/O、連續 / 隨機 I/O, 順序 / 併發 I/O。在這幾種型別中,我們主要討論一下:大 / 小塊 I/O、連續 / 隨機 I/O, 順序 / 併發 I/O。
大 / 小塊 I/O
這個數值指的是控制器指令中給出的連續讀出扇區數目的多少。如果數目較多,如 64,128 等,我們可以認為是大塊 I/O;反之,如果很小,比如 4,8,我們就會認為是小塊 I/O,實際上,在大塊和小塊 I/O 之間,沒明確的界限。
連續 / 隨機 I/O
連續 I/O 指的是本次 I/O 給出的初始扇區地址和上一次 I/O 的結束扇區地址是完全連續或者相隔不多的。反之,如果相差很大,則算作一次隨機 I/O
連續 I/O 比隨機 I/O 效率高的原因是:在做連續 I/O 的時候,磁頭幾乎不用換道,或者換道的時間很短;而對於隨機 I/O,如果這個 I/O 很多的話,會導致磁頭不停地換道,造成效率的極大降低。
順序 / 併發 I/O
從概念上講,併發 I/O 就是指向一塊磁碟發出一條 I/O 指令後,不必等待它回應,接著向另外一塊磁碟發 I/O 指令。對於具條帶性的 RAID(LUN,對其進行的 I/O 操作是併發的,例如:raid 0+1(1+0),raid5 等。反之則為順序 I/O。
磁碟 I/O 效能的監控
監控磁碟的 I/O 效能,我們可以使用 AIX 的系統命令,例如:sar -d, iostat, topas, nmon 等。下面,我將以 nmon 和 topas 為例,講述在系統中如何觀察磁碟 I/O 的效能。
topas
登入 AIX 作業系統,輸入 topas,然後 D,會出現如下介面:
在上圖中,TPS 即為磁碟的 IOPS,KBPS 即為磁碟每秒的吞吐量。由於伺服器處於空閒的狀態,我們可以看到 IOPS,KBPS 的資料都非常低。
我們使用 dd if 命令向磁碟 hdisk2 發讀 I/O,block 大小為 1MB:
利用 topas 進行監控:
此時,hdisk2 的吞吐量為 163.9M,IOPS 為 655。
我們再啟動一個 dd if,使 hdisk 的 busy 數值達到 100%:
從上圖可以看出,在磁碟 busy 達到 100% 的時候,其吞吐量為 304.1M,IOPS 為 1200。
hdisk2 是本地整合的 SAS 盤,我們可以查出本地整合 SAS 通道的頻寬為 3Gb:
對於 3Gb 的 SAS 通道,304.1M 的磁碟吞吐量已經接近其 I/O 頻寬的峰值了。
需要指出的是,使用 dd if 測量磁碟的頻寬是可行的,但是由此來確定業務 I/O 的 IOPS 和吞吐量是不科學的。因為,dd if 所發起的讀寫僅為順序 I/O 讀寫,在 OLTP 的業務中,這種讀寫是不常見的,而是隨機小 I/O 比較多,因此,測量業務的磁碟 I/O 效能,需要在執行業務的時候進行監控。
nmon
在系統中輸入 nmon, d,可以得到如下介面 :
可以得到此時磁碟 hdisk2 吞吐量為 318M。
使用 nmon 收集一個時間段的資料,然後使用 nmon analyzer 進行分析,可以得出更為直接的圖表:
將收集好的 nmon 檔案使用 nmon analyzer 進行分析,得出如下報表:
磁碟 I/O 效能調優
確認磁碟 I/O 存在效能問題
對於隨機負載,當遇到餘下情況時,我們那通常認為存在 I/O 效能問題:
-
平均讀時間大於 15ms
-
在具寫 cache 的條件下,平均寫時間大於 2.5ms
對於順序負載,當遇到餘下情況時,我們那通常認為存在 I/O 效能問題:
-
在一個磁碟上有兩個連續的 I/O 流
-
吞吐量不足(即遠遠小於磁碟 I/O 頻寬
對於一塊磁碟來講,隨著 IOPS 數量的增加,I/O service 也會增加,並且會一個飽和點,即 IOPS 達到某個點以後,IOPS 再增加將會引起 I/O service time 的顯著增加。
圖 3. 磁碟 IOPS 與 IO service time 關係圖
從經驗上講,我們在測試工作中,我們主要關注 IOPS 和吞吐量以及磁碟的 busy% 這個數值。如果 IOPS 和吞吐量均很低,磁碟的 busy% 也很低,我們會認為磁碟壓力過小,造成吞吐量和 IOPS 過低;只在 IOPS 和吞吐量均很低,磁碟的 busy% 很高(接近 100%的時候,我們才會從磁碟 I/O 方面分析 I/O 效能。
透過調整 AIX 引數改善磁碟 I/O 效能
在 AIX 系統中,關磁碟 I/O 效能相關的引數我們主要調整的引數如下圖:
需要注意的是,下面幾個引數的調整值,只是經驗數值;對於不同的應用,不同的場景,應具體情況具體分析。
調整I/O 佇列長度
queue_depth 是 AIX 一次可以傳送到磁碟裝置的命令的數量,把命令放在佇列中再傳送給磁碟可以提高 I/O 效能。AIX 中定義的每個磁碟在 ODM 庫中都 queue_depth 屬性。這個屬性限制了 AIX 可以傳送到裝置的最大命令的數量。
queue_depth 預設數值為 4
將 hdisk2 的佇列長度從 16 調整為 64:
max_transfer 引數
這個引數的含義是,儲存 driver 可以向儲存發的最大的 I/O。透過增加 max_transfer 的數值,我們可以允許 VG 的 LTG 的數值更大。
這個引數我們可以從 64M 調整到 128M。
光纖卡num_cmd_elems引數
如果是透過光纖卡連線的外接儲存,可以考慮調整 num_cmd_elems,這個引數的作用是:controls maximum number of in-flight Ios
這個引數的預設值為 500,我們將其修改為 1000:
光纖卡 max_xfer_size 引數 : attribute also controls a DMA memory area used to hold data for transfer, and at the default is 16 MB. 這個引數是控制 DMA 區域的,用於保持傳輸的資料的的區域,它的預設值是 16MB,可以把這個數值調整成 128MB,這樣光纖卡的頻寬會高一些 .
FSCSI 裝置
對於 FSCSI 裝置而言,我們可以透過設定引數:dyntrk 和 fc_err_recov 來達到路徑快速切換的目的:This sets the adapters to fast fail over and reduces the amount of time required to select a new data path.
修改完畢以後,榮如下命令進行確認:
總結
在 AIX 下調整磁碟 I/O 效能是一個相對複雜的工作,引數的數值往往是根據環境的變化而不通。這就要求我們在熟悉磁碟 I/O 效能架構的基礎上,靈活調整。
參考資料
學習
_ 透過參考 ,瞭解 AIX 的更多資訊。
_ 透過參考 ,瞭解 AIX 效能監控的資訊。
_ “最佳化 AIX 6.1 的效能”(developerWorks,2008 年 3 月:在本文中,將介紹關於 AIX 6.1 中 CPU、虛擬記憶體和 I/O(磁碟和網路等方面的效能監視和最佳化的最新更改。實際上,其中的許多更改並沒有對核心進行多少創新,而是更關注於一些輔助的內容,比如對預設引數進行改進,以便更精確地反映實際的資料處理。還有一些其他的增強,包括唯一的可調引數的文件說明、受限制的可調引數,以及對某些子系統所做的各種其他改進。您將瞭解更多有關效能最佳化方法的資訊,而這些內容是任何最佳化策略所必需的部分。
_ “AIX 5L 效能最佳化”(developerWorks,2007 年 9 月:整個系列文章會從 CPU,記憶體,硬碟等方面對 AIX 5L 系統的最佳化工作進行一次詳細的討論。同時會更具許多的具體情況和例子來說明 AIX 上的一些工具和命令的作用以及它們會為管理員日常上的工作提供那些的幫助。同時會介紹一些 AIX 5L 中新增的一些管理和最佳化方面的新功能,讓您對您的系統有一個更好的瞭解。
_ AIX and UNIX 專區:developerWorks 的“AIX and UNIX 專區”提供了大量與 AIX 系統管理的所方面相關的資訊,您可以利用它們來擴充套件自己的 UNIX 技能。
_ AIX and UNIX 新手入門:訪問“AIX and UNIX 新手入門”頁面可瞭解更多關於 AIX 和 UNIX 的內容。
_ AIX and UNIX 專題彙總:AIX and UNIX 專區已經為您推出了很多的技術專題,為您總結了很多熱門的知識點。我們在後面還會繼續推出很多相關的熱門專題給您,為了方便您的訪問,我們在這裡為您把本專區的所專題進行彙總,讓您更方便的找到您需要的內容。
_ AIX and UNIX 下載中心:在這裡你可以下載到可以執行在 AIX 或者是 UNIX 系統上的 IBM 伺服器軟體以及工具,讓您可以提前免費試用他們的強大功能。
_ IBM Systems Magazine for AIX 中文版:本雜誌的內容更加關注於趨勢和企業級架構應用方面的內容,同時對於新興的技術、產品、應用方式等也很深入的探討。IBM Systems Magazine 的內容都是由十分資深的業內人士撰寫的,包括 IBM 的合作伙伴、IBM 的主機工程師以及高階管理人員。所以,從這些內容中,您可以瞭解到更高層次的應用理念,讓您在擇和應用 IBM 系統時一個更好的認識。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10455206/viewspace-1070279/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【AIX】AIX 下磁碟 I/O 效能分析AI
- AIX系統磁碟I/O效能評估AI
- 在AIX下為Oracle調整磁碟I/O引數AIOracle
- AIX使用非同步I/O(aio)提高系統效能(轉)AI非同步
- Linux 下的I/O效能分析 iotopLinux
- Linux下磁碟I/O測試Linux
- 如何監測 Linux 的磁碟 I/O 效能Linux
- 磁碟效能測試工具 flexible I/O testerFlex
- 減少ORACLE中的磁碟I/O(轉)Oracle
- 優化磁碟I/O優化
- 在Linux下測試磁碟的I/OLinux
- Direct I/O (DIO) and Concurrent I/O (CIO) on AIX 5LAI
- Linux下如何測試磁碟I/O: ( hdparm -t)Linux
- 使用iostat監控磁碟I/OiOS
- MySQL之磁碟I/O過高排查MySql
- Oracle 9i 整體效能優化概述草稿之四:調整磁碟I/O (zt)Oracle優化
- AIX系統網路效能分析(轉)AI
- 【轉】Oracle資料庫優化之資料庫磁碟I/OOracle資料庫優化
- hp unix 硬碟I/O分析硬碟
- 【I/O scheduler】Linux的磁碟排程策略Linux
- 【AIX】AIX系統下檢視磁碟陣列AI陣列
- 如何在Linux系統伺服器中測試儲存/磁碟I/O效能?Linux伺服器
- Linux 下使用 dd 命令進行硬碟 I/O 效能檢測Linux硬碟
- Linux系統監控之磁碟I/O篇Linux
- InnoDB 中文參考手冊 --- 12 檔案空間管理和磁碟 I/O (轉)
- linux監測I/O效能-iostatLinuxiOS
- Oracle優化經典文章------磁碟I/O和碎片篇Oracle優化
- Linux下的5種I/O模型與3組I/O複用Linux模型
- FFmpeg架構之I/O模組分析架構
- Java I/O流模型概念分析整理Java模型
- 在Linux下開啟32位I/O和DMA(轉)Linux
- Veritas Quick I/O and Cached Quick I/OUI
- 效能分析(7)- 未利用系統快取導致 I/O 緩慢案例快取
- 讀書筆記 Improving Database Performance With AIX Concurrent I/O筆記DatabaseORMAI
- Oracle資料庫9i在AIX環境下的效能調整Oracle資料庫AI
- 計算機I/O與I/O模型計算機模型
- I/O埠和I/O記憶體記憶體
- 裝置I/O之OVERLAPPED (轉)APP