iT邦幫忙

0

請教一個關於虛擬化伺服器效能的問題

想請教大家一個關於虛擬化伺服器效能的問題:

一台 12 核心的伺服器在上線前的規劃考量最佳與最差的狀況, 上面預先規劃同時跑資料庫和檔案分享兩個 guest os, 最好的狀況是兩種guest os都很順, 最差的狀況是 兩種guest os都很慢,如果最差的狀況發現效能瓶頸出在 cpu , 但是要以資料庫的guest os為優先, 如果在不能夠調整cpu資源給優先的服務使用的話,請問是不是要把資料庫和檔案分享這兩個 guest os放在不同的實體主機?

這個問題各有支持方和反對方,支持兩種guest os放在同一台伺服器的想法是 : "這台機器 cpu 運算很強,除非資料量大到不可思議,不然怎麼可能會 over loading? 應當要以伺服器的官方測試數據為準"

支持把兩種服務放在不同的實體主機的想法是 : "如果在無法人工預先調整cpu資源給優先的服務用的話,代表這兩個 guest os 不適合放在同一台主機做虛擬化,所以建議放在兩個實體主機。如果可以預先調整cpu資源給優先權較高的 guest os 的話,可以放在同一台實體主機虛擬化"

因為這一台伺服器擔任的工作非常重要,所以希望是能夠在上線前就先排除可能發生效能瓶頸的原因。

歡迎大家提供意見。

chungyih iT邦新手 4 級 ‧ 2012-01-02 10:17:51 檢舉
Dear Raytracy,

能否請問是用那些工具測試 IOPS/Throughput/Disk Queue 呢?
Ray iT邦大神 1 級 ‧ 2012-01-02 12:04:23 檢舉
Windows 內建的《效能》監視器 (Performance monitor) 就夠了, 或是 Intel 寫的 IOMeter 也可以...以下是幾個效能監視器的案例:


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
24
Ray
iT邦大神 1 級 ‧ 2011-12-23 14:34:28
最佳解答

arthur1977提到:
檔案分享大檔小檔都有,也會有很大的檔案作大量複製。
資料庫服務主要是跑 erp , loading 大多出在報表的資料撈取。
在舊主機上常發生報表很慢的問題。

您所說的這幾件事情, 關鍵瓶頸是磁碟 I/O, 並非 CPU.

您可做的事情是:

  1. 在舊主機上面, 先監測出跑報表所需要的 IOPS 有多少? 並精算你的 VM 硬碟
  2. 如果檔案複製會吃光主機所有的 IOPS, 這種工作不適合跟其他 VM 共享磁碟

所以, 如果要拆開的話, 主因並不是 CPU 不夠用 (跑報表跟檔案複製根本用不到多少 CPU 時脈), 而是磁碟的 I/O 會被檔案複寫給吃光, 造成其他的 VM 排隊等候.

但是, 雖然你將他們放在同一台主機, 但是檔案服務給他一個完全獨立的磁碟子系統, 不跟其他 VM 共用的話, 那這樣就不會有以上的顧慮, 還是可以放在一起.

例如, 你可以買一台 SAN 給檔案服務的 VM 專用, 但另買一台 SAN 給其他的 VM 共用.

最後, 資料庫的問題還是要回到 IOPS 上來. 我遇過 80% 以上想做虛擬化的新手, 都不知道原本舊主機上 DB 的瓶頸是在 Disk I/O. 一般說來, 跑 ERP 報表吃掉 1,000~3,000 IOPS 是很常見的狀況, 這代表你的 RAID 至少要 5~15 顆以上來組合, 才足夠應付這樣的 IOPS.

以下是我幫幾家客戶做過的診斷, 在看到這個數據之前, 他們都一直以為瓶頸是 CPU, 所以要換新主機來提升 CPU, 但看過監測數據之後才知道, 其實瓶頸都在 IOPS:

Ray iT邦大神 1 級 ‧ 2011-12-23 14:42:00 檢舉

補充一下, 一般狀況下, 一顆 SATA 硬碟的 IOPS 只有 70~80 左右, 一顆 15K SAS 硬碟的 IOPS 大約 200~240 左右. 組成 RAID 多顆硬碟時, IOPS 會跟著你的硬碟數量而增加, 例如: 下圖是使用 96 顆硬碟組成 RAID-5 的一台 Dell MD3200i 的實測數據, IOPS 可以高達 40,000:

4
adelin
iT邦新手 1 級 ‧ 2011-12-23 11:14:45

arthur1977提到:
如果才兩個 guest os以規格來看瓶頸應不會在CPU效能上,應會在硬碟IO跟網路速度的效能會比較可能(記憶體數量及使用規劃也小重要),另外如果是無法長期停機的機器需要再評估的是備份or備援規劃,以及備援的系統版權授權規定及費用。
如果短期不會擴充guest os數量,可能還是以兩台實體去跑會比較保險,且變動也小,不要為了虛擬化而虛擬化

6
vino1
iT邦大師 1 級 ‧ 2011-12-23 12:33:34

請問您?! 資料庫是那家公司的產品?! 有時後效能卡在資料庫版本也是有可能的..

看更多先前的回應...收起先前的回應...
charmmih iT邦研究生 5 級 ‧ 2012-01-10 23:41:11 檢舉

資料庫問題和版本關係較少, 倒是和索引及SQL寫法有關, 寫AP人員不會開立索引調校SQL, 往往是"要一毛給10塊, 要1筆給全掃", 而管系統的若往擴充機器方向, IO可快10倍以上嗎? 會開立索引會調校SQL, 往往I/O會減少10倍, 100倍以上; 其實記憶體不用多是實體資料的1/10, 1/20,1/40都可以, 當你家是下精準SQL(I/O,CPU Time 量少), 其實資料庫CPU往往在20%以下~~

charmmih iT邦研究生 5 級 ‧ 2012-01-11 00:09:58 檢舉

SQL調校, IO Reads由120000降至600 少了200倍~~

charmmih iT邦研究生 5 級 ‧ 2012-01-11 00:10:38 檢舉

charmmih iT邦研究生 5 級 ‧ 2012-01-11 00:34:54 檢舉

同樣結果的SQL, 在寫法改變, 就有不一樣的耗用資源, 真神奇~~

4
Kailis
iT邦研究生 1 級 ‧ 2011-12-23 13:47:13

或是可以考慮透過不同 resource pool 存放 guest os 也ok

4
tombo
iT邦高手 1 級 ‧ 2011-12-23 17:46:26

Raytracy大真專業!

我自己的經驗是 99% 都是 I/O 瓶頸,想想看,一個 VM Host 上面有多少 VM Guest 要同時存取 I/O?

而且在 VM Host 可以設定分配給每個 VM Guest 的 CPU、Memory 資源量(Min/Max),以及 VM Host 保留多少自己用(如果VM Host 自己都跑不動,要怎麼去管理VM Guest)

charmmih iT邦研究生 5 級 ‧ 2012-01-11 01:01:59 檢舉

CPU高通常有2個意義, 1. WHERE 搜尋欄位運算代表每一筆資料均要運算, 如 left(sale_key,6)='201201' 通常就比 sale_key like '201201%' CPU耗用得兇, 2. 抓取IO Reads 過高要大量篩選資料, 同樣結果10筆資料, 散佈在 10 data pages 就會比散佈在 1 data page 所耗 CPU高; 結論是IO Reads 降下來, CPU 就降下來~~

tombo iT邦高手 1 級 ‧ 2012-02-22 18:23:21 檢舉

是的,很多時候都是其他問題造成 CPU Loading 過高,例如 Memory 太小,造成系統不斷去 Page,造成 Disk Page I/O 過高.

4
summer05145
iT邦新手 1 級 ‧ 2011-12-23 18:29:06

阿哩
來太慢了
Raytracy大都講完了
我還有啥好講的

發個炫耀文好了

目前以我手上的案子
已經有客戶在使用這種等級的Storage規劃虛擬化了
規劃主規格如下
1.單座3U以下
2.雙控Storage
3.效能要求:360K IOPs & 2000MB/Sec

不知道各位看官有沒有注意到
3U的Storage要撐出360K IOPs & 2000MB/Sec
這一切都是為了打造雲端阿

Ray iT邦大神 1 級 ‧ 2011-12-23 19:36:47 檢舉

3U的Storage要撐出360K IOPs & 2000MB/Sec

挖塞....高檔貨來了....驚

還好啦
國產貨,Q1開放申請測試。
有興趣請洽控八控控

4
jasonlin69
iT邦新手 4 級 ‧ 2011-12-24 15:17:17

請問你是用哪一套虛擬化軟體?
如果是VMware esx(i),
可以透過vSphere client或vCenter新增resource pool來設定guest os的CPU資源.

還有你的硬碟有幾顆? 怎麼切割硬碟分割區的?
硬碟有無做RAID? 其RAID Level是多少?
主機在無人狀況, HD Tune或HD Speed跑出來的IO數據為多少?
(方便的話,請貼圖)
兩個guest os, 其*.vmdk所存放的位置(硬碟分割區)為何?

你的網路設備為何?
Switch是100Mbps的環境?
還是1000M(Gigabit)bps的環境?
或10Gbps環境?

測試一下, 報表跑資料大量撈取的時候,
使用 "Windows工作管理員" -> "處理程序"("檢視"->"選擇欄位")
來檢視CPU與Memory以及IO的狀態.
近版的Windows可以進階使用
"Windows工作管理員" -> "效能"->"資源監視器"來檢視.

我要發表回答

立即登入回答