本篇主要介紹關於磁碟測試與資料庫備份的調校,本篇提到許多的方式與從不同的面向來確認,所以特別整理成此篇,也希望可以提供給大家進行參考。
由於篇幅過長,所以拆成幾個部份進行分享。
另外,許多的磁碟在底層會有合併寫入的動作,比如說每次寫入的 Block Size 為 64K,
而在實際底層則會合併 256K 後,才會進行一次的寫入動作,所以在 IOPS
的部份,也要注意是否有這樣的情況發生。
本篇我已 AWS 的平台介紹當你選擇一個 EBS
Volume 與 EC2 時,該如何進行評估,並且在最後的時候,如果運行 SQL Server
備份時,該如何進行備份效能的提升。
資源資訊: EC2 - Z1D-6xlarge
Instance vCPU
Mem (GiB) Networking Performance (Gbps)*** SSD Storage (GB)
z1d.6xlarge 24 192
10 1 x 900 NVMe SSD
EBS:
Volume Size: 4,096 GB
IOPS: 8,000
我們從文件上來看,當
32,000 IOPS 以下時,吞吐量可以達到 500MB/s
,所以我們需注意相關的EC2類型並沒有相關的限制,在其他的類型,如上述的網路速度,10G
與 10G up 是不同的,10G 是穩定在 10G 的傳輸速度,但 10G
則是可以維持在10G一段時間,我們簡稱信用額度與爆衝值,所以二者在長期的一段時間上來看,是有不同的,詳細的說明,可以參考文件[1]。
另外一個要注意的重點就是每一種 Instance Type
都會有不同的限制,除了上述提到的部份,還有 Baseline IOPS與Maximum IOPS,如
z1d.large 的 Baseline IOPS 只有 3,333, 而 Maximum IOPS 有13,333,
所以如果你建立一顆 IOPS 8000的 Volume 在 z1d.large
上時,你基本只能到3333,但可以最大到13,333,
但這個最大值是在24小時內,最多只能維持30分鐘,超過30分鐘,就只能執行在 Baseline IOPS 左右了,所以還是有限制存在的,也是我選擇一個較大的
Instance Type 類型進行測試的原因[1]。
現在我們進入主題,那我們該如何進行 Volume
的測試,根據 AWS 的官網文件,我們可以透過 DiskSpd 與 CrystalDiskMark
二個軟體,但我二個都測試過後,我其實比較喜歡使用 DiskSpd,
另外在測試前,請記得檢查電源管理中的模式是否設定為高效能,這個在 AWS 的 Windows
中是設定為預設啟用,但如果你設定為省電模式時,效能我有比較過,真的差很多,這又是一個故事了(血淚@@).
Control -> Hardware -> Power Options -> Preferred Plans -> High Performance
首先在測試前,我要提到一個重要的觀念,當在測試前,如果我們希望測試出預期的IOPS與Throughput 時,有二個重要的要素,一個是你的線程 (Thread),而另一個則是你的 BlockSize,所以後續的測試,我們來看這二者間的關係。
首先我們先下載 DiskSpd 的工具,然後再我透過下列的指令進行。
diskspd -b8K -d30 -t1 -h -r -w40 -L -Z1G -c20G D:\iotest.dat
b: BlockSize
d: 測試時間
t: Thread
w: 讀寫入率
c: 預計測試的檔案大小
D:\ 這就是我掛上的 EBS Volume,如上述提到的。
下列是我進行的測試,我主要分成不同的 BlockSize 與 Thread 進行,並將相關的測試結果整理如下。
從上述可以看出當如果 Thread 數太低時,會造成無法拉高整體的 IOPS ,但當 BlockSize 設定夠高時,的確是可以拉高整體的 Throughput,所以可以透過上圖的測試找出實際二者之間的關係,這個對後續在使用或效能調整時是很重要的,後續我再以 SQL Server 為案例分享該如何進行。
參考連結:
============
[1]. Amazon EC2 Instance Types
[2]. Benchmark EBS volumes
沒有留言:
張貼留言