溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

AIX 下磁盤 I/O 性能分析

發(fā)布時間:2020-08-10 02:42:08 來源:ITPUB博客 閱讀:563 作者:hd_system 欄目:大數(shù)據(jù)

本文主要介紹在磁盤 I/O 性能的概念以及相關(guān)的指標(biāo),并介紹 AIX 系統(tǒng)下,衡量和監(jiān)控磁盤 I/O 性能的方法,以及在 AIX 下,常見的可調(diào)整參數(shù)。


磁盤 I/O 的概念

I/O 的概念,從字義來理解就是輸入輸出。操作系統(tǒng)從上層到底層,各個層次之間均存在 I/O。比如,CPU 有 I/O,內(nèi)存有 I/O, VMM 有 I/O, 底層磁盤上也有 I/O,這是廣義上的 I/O. 通常來講,一個上層的 I/O 可能會產(chǎn)生針對磁盤的多個 I/O,也就是說,上層的 I/O 是稀疏的,下層的 I/O 是密集的。

磁盤的 I/O,顧名思義就是磁盤的輸入輸出。輸入指的是對磁盤寫入數(shù)據(jù),輸出指的是從磁盤讀出數(shù)據(jù)。


衡量磁盤 I/O 性能的指標(biāo)

圖 1. 物理磁盤的架構(gòu)以及常見磁盤類型 AIX 下磁盤 I/O 性能分析

我們常見的磁盤類型有 ATA、SATA、FC、SCSI、SAS。這幾種磁盤中,服務(wù)器常用的是 SAS 和 FC 磁盤,一些高端存儲也使用 SSD 盤。每一種磁盤的性能是不一樣的。

我們在測試工作中,衡量磁盤 I/O 性能主要參考 IOPS 和吞吐量兩個參數(shù)。下面,將介紹一下這兩個參數(shù)的含義。

IOPS 與吞吐量的概念

磁盤的 IOPS,也就是在一秒內(nèi),磁盤進行多少次 I/O 讀寫。

磁盤的吞吐量,也就是每秒磁盤 I/O 的流量,即磁盤寫入加上讀出的數(shù)據(jù)的大小。

IOPS 與吞吐量的關(guān)系

每秒 I/O 吞吐量= IOPS* 平均 I/O SIZE。從公式可以看出: I/O SIZE 越大,IOPS 越高,那么每秒 I/O 的吞吐量就越高。因此,我們會認為 IOPS 和吞吐量的數(shù)值越高越好。實際上,對于一個磁盤來講,這兩個參數(shù)均有其最大值,而且這兩個參數(shù)也存在著一定的關(guān)系。

下圖為各種磁盤的 IOPS 極限值。

表 1. 常見磁盤類型及其 IOPS AIX 下磁盤 I/O 性能分析 AIX 下磁盤 I/O 性能分析

注:上表源自維基百科 http://en.wikipedia.org/wiki/IOPS

在 AIX 中,對于同一個磁盤(或者 LUN),隨著每次 I/O 讀寫數(shù)據(jù)的大小不通,IOPS 的數(shù)值也不是固定不變的。例如,每次 I/O 寫入或者讀出的都是連續(xù)的大數(shù)據(jù)塊,此時 IOPS 相對會低一些;在不頻繁換道的情況下,每次寫入或者讀出的數(shù)據(jù)塊小,相對來講 IOPS 就會高一些。

I/O 讀寫的類型

大體上講,I/O 的類型可以分為:讀 / 寫 I/O、大 / 小塊 I/O、連續(xù) / 隨機 I/O, 順序 / 并發(fā) I/O。在這幾種類型中,我們主要討論一下:大 / 小塊 I/O、連續(xù) / 隨機 I/O, 順序 / 并發(fā) I/O。

大 / 小塊 I/O

這個數(shù)值指的是控制器指令中給出的連續(xù)讀出扇區(qū)數(shù)目的多少。如果數(shù)目較多,如 64,128 等,我們可以認為是大塊 I/O;反之,如果很小,比如 4,8,我們就會認為是小塊 I/O,實際上,在大塊和小塊 I/O 之間,沒有明確的界限。

連續(xù) / 隨機 I/O

連續(xù) I/O 指的是本次 I/O 給出的初始扇區(qū)地址和上一次 I/O 的結(jié)束扇區(qū)地址是完全連續(xù)或者相隔不多的。反之,如果相差很大,則算作一次隨機 I/O

連續(xù) I/O 比隨機 I/O 效率高的原因是:在做連續(xù) I/O 的時候,磁頭幾乎不用換道,或者換道的時間很短;而對于隨機 I/O,如果這個 I/O 很多的話,會導(dǎo)致磁頭不停地換道,造成效率的極大降低。

順序 / 并發(fā) I/O

從概念上講,并發(fā) I/O 就是指向一塊磁盤發(fā)出一條 I/O 指令后,不必等待它回應(yīng),接著向另外一塊磁盤發(fā) I/O 指令。對于具有條帶性的 RAID(LUN),對其進行的 I/O 操作是并發(fā)的,例如:raid 0+1(1+0),raid5 等。反之則為順序 I/O。

磁盤 I/O 性能的監(jiān)控

監(jiān)控磁盤的 I/O 性能,我們可以使用 AIX 的系統(tǒng)命令,例如:sar -d, iostat, topas, nmon 等。下面,我將以 nmon 和 topas 為例,講述在系統(tǒng)中如何觀察磁盤 I/O 的性能。

topas

登錄 AIX 操作系統(tǒng),輸入 topas,然后按 D,會出現(xiàn)如下界面:

AIX 下磁盤 I/O 性能分析

在上圖中,TPS 即為磁盤的 IOPS,KBPS 即為磁盤每秒的吞吐量。由于服務(wù)器處于空閑的狀態(tài),我們可以看到 IOPS,KBPS 的數(shù)據(jù)都非常低。

我們使用 dd if 命令向磁盤 hdisk2 發(fā)讀 I/O,block 大小為 1MB:

AIX 下磁盤 I/O 性能分析

利用 topas 進行監(jiān)控:

AIX 下磁盤 I/O 性能分析

此時,hdisk2 的吞吐量為 163.9M,IOPS 為 655。

我們再啟動一個 dd if,使 hdisk 的 busy 數(shù)值達到 100%:

AIX 下磁盤 I/O 性能分析

AIX 下磁盤 I/O 性能分析
從上圖可以看出,在磁盤 busy 達到 100% 的時候,其吞吐量為 304.1M,IOPS 為 1200。

hdisk2 是本地集成的 SAS 盤,我們可以查出本地集成 SAS 通道的帶寬為 3Gb:

AIX 下磁盤 I/O 性能分析

對于 3Gb 的 SAS 通道,304.1M 的磁盤吞吐量已經(jīng)接近其 I/O 帶寬的峰值了。

需要指出的是,使用 dd if 測量磁盤的帶寬是可行的,但是由此來確定業(yè)務(wù) I/O 的 IOPS 和吞吐量是不科學(xué)的。因為,dd if 所發(fā)起的讀寫僅為順序 I/O 讀寫,在 OLTP 的業(yè)務(wù)中,這種讀寫是不常見的,而是隨機小 I/O 比較多,因此,測量業(yè)務(wù)的磁盤 I/O 性能,需要在運行業(yè)務(wù)的時候進行監(jiān)控。

nmon

在系統(tǒng)中輸入 nmon,按 d,可以得到如下界面 :

AIX 下磁盤 I/O 性能分析

可以得到此時磁盤 hdisk2 吞吐量為 318M。

使用 nmon 收集一個時間段的數(shù)據(jù),然后使用 nmon analyzer 進行分析,可以得出更為直接的圖表:

AIX 下磁盤 I/O 性能分析

將收集好的 nmon 文件使用 nmon analyzer 進行分析,得出如下報表:

圖 2.nmon 圖表顯示磁盤性能 AIX 下磁盤 I/O 性能分析

磁盤 I/O 性能調(diào)優(yōu)

確認磁盤 I/O 存在性能問題

對于隨機負載,當(dāng)遇到余下情況時,我們那通常認為存在 I/O 性能問題:

  1. 平均讀時間大于 15ms
  2. 在具有寫 cache 的條件下,平均寫時間大于 2.5ms

對于順序負載,當(dāng)遇到余下情況時,我們那通常認為存在 I/O 性能問題:

  1. 在一個磁盤上有兩個連續(xù)的 I/O 流
  2. 吞吐量不足(即遠遠小于磁盤 I/O 帶寬)

對于一塊磁盤來講,隨著 IOPS 數(shù)量的增加,I/O service 也會增加,并且會有一個飽和點,即 IOPS 達到某個點以后,IOPS 再增加將會引起 I/O service time 的顯著增加。

圖 3. 磁盤 IOPS 與 IO service time 關(guān)系圖 AIX 下磁盤 I/O 性能分析

從經(jīng)驗上講,我們在測試工作中,我們主要關(guān)注 IOPS 和吞吐量以及磁盤的 busy% 這三個數(shù)值。如果 IOPS 和吞吐量均很低,磁盤的 busy% 也很低,我們會認為磁盤壓力過小,造成吞吐量和 IOPS 過低;只有在 IOPS 和吞吐量均很低,磁盤的 busy% 很高(接近 100%)的時候,我們才會從磁盤 I/O 方面分析 I/O 性能。

通過調(diào)整 AIX 參數(shù)改善磁盤 I/O 性能

在 AIX 系統(tǒng)中,有關(guān)磁盤 I/O 性能相關(guān)的參數(shù)我們主要調(diào)整的參數(shù)如下圖:

圖 4.AIX 常見的磁盤 I/O 性能參數(shù) AIX 下磁盤 I/O 性能分析

需要注意的是,下面幾個參數(shù)的調(diào)整值,只是經(jīng)驗數(shù)值;對于不同的應(yīng)用,不同的場景,應(yīng)具體情況具體分析。

調(diào)整I/O 隊列長度

queue_depth 是 AIX 一次可以傳送到磁盤設(shè)備的命令的數(shù)量,把命令放在隊列中再傳送給磁盤可以提高 I/O 性能。AIX 中定義的每個磁盤在 ODM 庫中都有 queue_depth 屬性。這個屬性限制了 AIX 可以傳送到設(shè)備的最大命令的數(shù)量。

queue_depth 默認數(shù)值為 4

AIX 下磁盤 I/O 性能分析

將 hdisk2 的隊列長度從 16 調(diào)整為 64:

AIX 下磁盤 I/O 性能分析

max_transfer 參數(shù)

這個參數(shù)的含義是,存儲 driver 可以向存儲發(fā)的最大的 I/O。通過增加 max_transfer 的數(shù)值,我們可以允許 VG 的 LTG 的數(shù)值更大。

這個參數(shù)我們可以從 64M 調(diào)整到 128M。

AIX 下磁盤 I/O 性能分析

光纖卡num_cmd_elems參數(shù)

如果是通過光纖卡連接的外置存儲,可以考慮調(diào)整 num_cmd_elems,這個參數(shù)的作用是:controls maximum number of in-flight Ios

這個參數(shù)的默認值為 500,我們將其修改為 1000:

AIX 下磁盤 I/O 性能分析

光纖卡 max_xfer_size 參數(shù) : attribute also controls a DMA memory area used to hold data for transfer, and at the default is 16 MB. 這個參數(shù)是控制 DMA 區(qū)域的,用于保持傳輸?shù)臄?shù)據(jù)的的區(qū)域,它的默認值是 16MB,可以把這個數(shù)值調(diào)整成 128MB,這樣光纖卡的帶寬會高一些 .

AIX 下磁盤 I/O 性能分析

FSCSI 設(shè)備

對于 FSCSI 設(shè)備而言,我們可以通過設(shè)置參數(shù):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 性能分析

修改完畢以后,榮如下命令進行確認:

AIX 下磁盤 I/O 性能分析

總結(jié)

在 AIX 下調(diào)整磁盤 I/O 性能是一個相對復(fù)雜的工作,參數(shù)的數(shù)值往往是根據(jù)環(huán)境的變化而不通。這就要求我們在熟悉磁盤 I/O 性能架構(gòu)的基礎(chǔ)上,靈活調(diào)整。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI