2011年3月9日 星期三

SQL Server IO 測試工具 - SQLIO的使用與不同Block Size下的效能測試

備註:修改日期 2016/01/07 
由於SQLIO已不支援,所以建議可以參考使用DiskSpd,並請參考我的另一篇文章。 
Windows上不同Block Size的效能測試 - 以AWS EC2為例 

資料庫是一種使用I/O非常頻繁的軟體,所以硬碟就相對的非常的重要,當然SQL Server也不例外,但是我們買來的硬體雖然都有廠商或公開的測試值,但是如果硬體配備或環境不是完全相同時,該如何進行模擬測試呢,在我的上一篇 [SQL Server 儲存設備 (Storage) 最佳調整作業] – [Storage Top 10 Best Practices],在文章中有介紹二個工具可以完成,所以本篇我們介紹一個由原廠(Microsoft)推出的一個模擬SQL Server I/O動作的軟體SQLIO

        在使用前我先來介紹一下使用的方法,首先開啟一個DOS視窗後,然後切換目錄到Program Files/SQLIO下,輸入SQLIO -h 先看一下說明的部份,我將幾個常用參數整理如下:

常用參數介紹:
參數
說明
-k<R|W>
設定測試項目為讀取(R)或寫入(W)
-s
設定測試執行的時間
-d
設定同時運作的磁碟有那些
-o
指定I/O執行需求的深度
-b
指定I/OBlock Size
-F
讀入參數檔案
-f
I/O讀寫的方式(Random or Sequential)
-t
執行緒的數量

        介紹完參數的介紹後,我們介紹一下使用的方法,在這邊我們利用一個範列介紹一下,在資料庫中我們的磁碟機格式化時,通常都使用預設值,但是在理論上如果Block Size切的越大時,其實是可以提高傳輸的速度與節省I/O的傳輸次數,所以我利用SQLIO的工具來比較一下其不同Block Size下的效能比較:

執行語法:c:\Program Files\SQLIO> SQLIO -kW -t4 -s120 -o8 -frandom -b64 -Fparam.txt
語法上只要修上列紅色字體的部份即可得到下圖的數據,建議時間的設定上不要太少,以免測試的數據不太穩定。

每秒I/O次數比:

每數傳輸率(MB)比:

        在Windows的架構中Block Size可以設定如下表的部份,從以上的數據看來,的確透過Block Size的改變可以提高每秒的傳輸量與降低傳輸次數提高硬碟的壽命,但是天下沒有白吃的午餐,將Block Size設定到這麼大有什麼缺點呢,最大的缺點就是你設定Block Size成64K,如果你的檔案只有1k時,檔案還是佔64k,這也稱為內部斷裂,類似的檔案越多時,就越浪費空間,但是如果你是大型檔案,如DVD等檔案時,你就會發現檔案的讀寫會變快,我想在現在硬碟越來越大也越來越便宜的情況下,我想這應不是什麼大問題吧。

Windows - Block Size:
FAT32
NTFS
4K
512(Byte)
8K(Default)
1K
16K
2K
32K
4K(Default)
64K
8k
x
16K
x
32K
x
64K

SQLIO - 檔案下載位址:http://www.microsoft.com/downloads/en/details.aspx?familyid=9a8b005b-84e4-4f24-8d65-cb53442d9e19&displaylang=en

當然也可以另外透過微軟提供的效能監視器來觀察,我選出幾個比較重要的重點來說明:
物件類型
子物件
說明
Processor
Processor Time
[% Processor Time] 是處理器用在執行非閒置執行緒的經過時間百分比。這是測量處理器用在執行閒置執行緒的時間百分比,然後以 100% 減去該值所得。(每個處理器都有一個閒置執行緒,當沒有其他執行緒準備執行時,就會耗用週期。) 此計數器是處理器活動的主要指示,並會顯示抽樣間隔期間所觀察之忙碌時間的平均百分比。請注意,處理器是否閒置的帳戶處理計算,是以系統時鐘 (10ms) 的內部抽樣間隔來執行的。因此,在當今的快速處理器上,% Processor Time 可能會低估處理器使用率,因為處理器可能會花很多時間服務系統時鐘抽樣間隔之間的執行緒。以工作量為依據的計時器應用程式,就是其中一種較可能測量不準確的應用程式,因為計時器是在取樣之後收到訊號。
PhyicalDisk
% Disk Read Time
% Disk Write Time
[% Disk Read Time] 是選取的磁碟機進行讀取操作/寫入服務所花費時間的百分比。
Avg. Disk Bytes/Read
Avg. Disk Bytes/Write
[Avg. Disk Bytes/Read] 是磁碟上的位元組在讀取/寫入過程中的平均轉移速率。
Avg. Disk Queue Length
[Avg. Disk Queue Length] 是取樣時間內在所選取的磁碟佇列中的讀寫要求平均數目。

沒有留言:

張貼留言