不過, 或許您把 VM 和 Host 的硬體規格分別貼出來, 說不定馬上可以看出問題在哪?
1.感謝神人的回答,使用hyper-v2012並在VM上使用SAP,連接Dell MD3600I 72k*12且有設定MPIO,在拉報表時需要到2個小時
2.另外想跟 raytracy大大請教,Storage如何作壓力測試用哪個軟體來測出他的最高效能?我要如何知道我的應用程式到底需要多少個IOPS?這樣兩者才能做比較
3.如果導入是全新環境根本沒舊數據可以參考時要如何評估導入虛擬化後所需硬體資源
您的 Host CPU 規格是甚麼?
SAP VM 配置多少 vCPU 核心? 報表 AP 和 Oracle 是同一個 VM 嗎? 還是不同 VM?
不一定把問題焦點都放在 IOPS, 有時 CPU 才是關鍵.
拉報表的時候, 在 VM 裡面看到的效能數據是如何? IOPS 多少? CPU 用量多少?
若有舊機, 我的習慣是先收集一個月的數據, 再來規劃硬體; 若無舊機, 要先做 POC, 建一套測試機來測試, 像 SAP 這種大廠, 通常都會有現成的數據可以提供, 要去跟原廠的顧問要.
我在幫客戶規劃前, 會先問清楚他們要的規格(IOPS, Throughtput, CPU, RAM...等等), 如果客戶自己搞不清楚, 會要求它們自己先搞清楚再來下單. 不然我就會在規劃書上面先寫好但書: 「因業主未提供正確效能數據, 本案規格僅供參考, 不代表能夠滿足實際營運. 若日後上線發現不足, 業主須自負增額採購責任」, 免得最後結不了案.
要測效能請參考 IOMeter:
介紹好用工具:IOMeter ( 標準 I/O 效能評測工具 )
至少您可以先在目前的 VM 上(包含 AP 和 DB), 測出跑報表時所需用的:
Read IOPS
Write IOPS
Read Disk Queue
Write Disk Queue
CPU Utilization
這樣才能判斷問題瓶頸在何處?
此外, 跑報表花上數小時, 在大型資料庫中並不算少見, 如果他們經常需要看同樣的報表, 應該是改用 BI 或是 Data warehouse 的解決方案來處理報表慢的問題, 而不是單靠硬體的規格.
不過, 你只配了 12 顆 7.2K disk RAID-5, 我很擔心效能是真的不夠. 假設 IOPS/disk 超級好, 一顆 7.2K 頂多也只能拿到 100 IOPS, 扣掉 Hot-spare 和 Parity 兩顆, 套入公式去算的話:
RAID Performance Calculator
頂多也才 1,000 IOPS 左右, 這樣對 SAP 來說真的太少了些:
我一個客戶在跑報表的時候 (300GB 的 MS-SQL DB, Java AP), 他們會衝到 12,000 IOPS 去:
而這個環境在當初規畫階段, 就知道它們報表用很凶, 但是他們自己也不知道要用多少 (舊機只能跑到 2,000 IOPS 左右), 所以後來我是用 7.2K NL-SAS x16 + 1 200GB SSD 當前端 Cache 來規劃.
這樣下去之後, 據客戶說, 原本跑報表要花 40 分鐘的, 可以縮短到 10 分鐘.
光看到raytracy大大的回文不用看內容看到這麼大一串就覺得很感心。
所以如果要知道需要應用程式需要多少IOPS以我的理解是這樣
1.在所有VM上跑效能監視器並參考以下數值
Read IOPS
Write IOPS
Read Disk Queue
Write Disk Queue
CPU Utilization
2.將所有VM的IOPS加總就是我所需的IOPS總量
3.因為Storage已經在線上所以無法做壓力測試,如果是新導入可以用IOMETER去測出該Storage最大IOPS值並與第一點做比較是否可以支撐
4.如果是大廠程式如果沒舊資料可以比較可跟廠商要通常會有建議值
另外以下是我又有而外的疑問
1.大大您提供RAID Performance Calculator這網站可以算出硬碟總IOPS值,但是如果是Storage控制器上還會有cahce而cache的速度又比較快如果只看硬碟總IOPS就沒考慮到cache的IOPS似乎不準確,畢竟資料寫入事先寫入cache在寫入硬碟,所以是否要考慮cache呢?要如何衡量cache IOPS值呢?
2.用IOMETER測試Storage壓力時是要用哪一個Block大小才是準確要參考的,畢竟不同block大小會有不同的IOPS值?
3.您最後提的案例您加了1個200G的SSD,您如何判斷加了此顆SSD當作cache效能就足夠,還是也是要試試看才知道呢?
4.Storage會有提供他們產品的IOPS參考資料嗎?我問了Dell客服跟我說他們沒有
這邊有一篇 Dell 的白皮書:
High Performance Tier Implementation Guidelines
裡面第 8 頁有提到, 他接了 96 顆 SAS 硬碟, 得到以下的 IOPS 數據:
他們用的設定參數是:
cache block size=4KB, read cache enabled, write cache enabled, cache mirroring enabled, cache pre-fetch enabled, and segment size=128KB, 但 Base mode 和 High performance mode 用的參數有一些不一樣.
報告也提到, 他們測試 Random workload 時是用 6 顆 RAID-5 x16 Group 組成 96 顆 RAID-50 的架構來測試.
您的硬碟數量是 12, 96/12 = 8, 所以 IOPS 只有 1/8, 而報告是用 SAS 硬碟, 你們是 SATA, IOPS 只有 SAS 的 1/3, 從這裡推算, 假設忽略 RAID-5 和 RAID-50 之間的效能差異的話, 你們的 IOPS 應該是圖上的 1/8 x 1/3 = 1/24 左右.
如果報告上 16K Random Read 有 25,000 IOPS 的話, 那你們實際的 16K Read 可能只有 1,000 再多一點而已. 其實也跟上面計算的差不多. 不過, 實際上測試可能會受到 Cache 的影響而有所差異.