由於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/O的Block 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] 是取樣時間內在所選取的磁碟佇列中的讀寫要求平均數目。
|
沒有留言:
張貼留言