iT邦幫忙

0

該如何了解效能瓶頸是來自硬碟IO,還是來自CPU?

marywu 2009-06-19 12:34:3825024 瀏覽

是這樣的,現在CPU越來越快,但是硬碟似乎沒有像CPU那樣一直有新的版本.

我有看到文章提到,目前很多主機的瓶頸是來自於SATA硬碟的IO,CPU太高只是浪費.

所以我想請教一下各位前輩們,我需要一台跑購物車的主機,

我該如何評估之後的效能瓶頸會是來自於硬碟的IO?還是CPU的問題?

因為預算有限,想問一下,

"四核心+7200轉sata做raid1" vs "雙核心+15k轉sas做raid1",

這兩種哪種的效能表現會比較好呢?

謝謝大家

看更多先前的討論...收起先前的討論...
tom6507 iT邦大師 1 級 ‧ 2009-06-19 12:55:18 檢舉
後者的效能好的多
四核心+15k轉sas會比較快,最好是雙cpu的,既然要做電子商務,硬體跟安全的投資就不能省
cooch iT邦研究生 3 級 ‧ 2009-06-19 19:24:14 檢舉
也要看使用者有沒有很多吧!

如果一天下來沒幾隻小貓在下單,
給台個人電腦去當主機還綽綽有餘,

只要記憶體夠大,
並且同一時間進行之交易不大,

通常效能瓶頸不會是在 DISK IO 上!
tom6507 iT邦大師 1 級 ‧ 2009-06-20 07:55:30 檢舉
現在的電腦只要換個轉速快的硬碟馬上就有變快的感覺,所以絕對是在DISK IO上,跟是不是網路主機或是多少人下單無關。
cooch iT邦研究生 3 級 ‧ 2009-06-20 08:37:43 檢舉
最好還是進行效能的監控與量測,
最快的方式還是用 alexc 將的方式去做,
才能正確的判斷瓶頸所在!

不過我還是要強調一點:
執行不同任務其所需的電腦硬體資源亦有所差異,
DISK IO 不是唯一會產生瓶頸的地方!
marywu iT邦新手 5 級 ‧ 2009-06-20 14:59:30 檢舉
哈,這我我知道,CPU/硬碟用最好,RAM加大,速度一定會比較好,
而我現在的問題是,到底這兩個規格的配置方式哪個會比較OK,
是配置1的硬碟?還是配置2的CPU?會先遇到瓶頸,謝謝大家
marywu iT邦新手 5 級 ‧ 2009-06-20 15:01:06 檢舉
cooch,可以問一下您覺得是在記憶體部分的原因嗎?謝謝大家。
marywu iT邦新手 5 級 ‧ 2009-06-20 15:03:04 檢舉
另外,你是說alexc?還是alexa?這是要看流量?還是?謝謝大家。
marywu iT邦新手 5 級 ‧ 2009-06-20 15:26:36 檢舉
哈,不好意思,我剛剛再看一次,您應該是指alexc的方法嗎?謝謝大家
cooch iT邦研究生 3 級 ‧ 2009-06-20 15:27:52 檢舉
說實話,那只是我個人很不可靠的猜測,

是的,
請用 alexc 講的方式去做,
不過那是在現有硬體上去測出該硬體的瓶頸,
進而作為新硬體的採購,

基本上您的組合已經很清楚區別2種不同的特性:
一個適合執行運算密集需求的任務,
另外一個適合執行磁碟讀寫密集需求的任務!
cooch iT邦研究生 3 級 ‧ 2009-06-20 15:29:02 檢舉
....
進而作為新硬體的採購,
...

-> 進而作為新硬體採購的參考依據,
cooch iT邦研究生 3 級 ‧ 2010-04-17 14:36:22 檢舉
有個小工具可以參考一下:
Moo0 SystemMonitor
http://www.moo0.com/?top=http://www.moo0.com/software/SystemMonitor/
28
pantc328
iT邦研究生 1 級 ‧ 2009-06-19 14:19:50
最佳解答

以你的需求不用去考量此問題,反而要比較考量頻寬的問題.
如果CPU或IO持續過高.恭喜你不是程式寫錯就是中標了

marywu iT邦新手 5 級 ‧ 2009-06-19 14:27:42 檢舉

我知道程式寫的好壞,確實會對主機耗用資源程度有不同的影響,

只是在想說,針對這樣的使用需求,哪個會是比較合適的,

或是從哪知道當正常使用下(也就是沒有程式問題考量),

我該怎麼去了解是IO問題造成,還是CPU資源不夠使用...

謝謝大家

ehawk iT邦研究生 1 級 ‧ 2009-06-20 12:38:59 檢舉

假如你的網站有如PChome般中大型的規模;可以稍微提高CPU的地位。
其他一般小型網站要注意的依次為:頻寬 儲存裝置 記憶體 最後是CPU....

目前的儲存裝置效能永遠跟不上 CPU & RAM!因此強化儲存裝置才是問題重心。
一般至少也要 3顆企業級的 SATA 作 RAID5 吧。萬五轉的SAS?你是說萬五轉的SCSI硬碟?有這個當然最好,不過要多花萬把塊買片SCSI控制卡來配用。

SCSI硬碟所費不貲,似乎你的預算還蠻多的:)那麼:
伺服器主機板+Xeon處理器+大量的RAM+萬五轉的SCSI或萬轉SATA硬碟為RAID5。。。這樣的伺服器穩定度及效能都很OK的。
PC級主機板目前 P5Q-EM 這片還蠻合你需求的,它是 ICH10R + 16G RAM。

說到穩定度,去年10月到今年6月,高雄皇家俱樂部有個傢伙手上一片P5Q Deluxe因為故障維修換良品現在手上那片良品已是第三片!很不幸的那傢伙就是我。
P5Q的評價不錯,我也喜歡這系列但不幸就是不幸怎也躲不掉。

"網頁伺服器"在硬體選擇上要更加謹慎。除穩定性的要求外,貨車跟跑車不宜混用;好比拿跑車載貨,貨車參加 F1。解決儲存裝置瓶頸為先,CPU根本不是問題。

ehawk iT邦研究生 1 級 ‧ 2009-06-20 12:57:49 檢舉

汗|||
Seagate Cheetah 15K.5 硬碟。。。太久沒逛各大論壇了,知識有脫節很大!

26
alexc
iT邦高手 1 級 ‧ 2009-06-19 13:16:23

如果是要跑 Windows
效能可以透過效能監視器去觀察是來自哪裡

Windows 效能監視器

marywu iT邦新手 5 級 ‧ 2009-06-20 15:14:23 檢舉

謝謝alexc,不曉得如果我用linux的系統跟windows的系統,在硬體的配置和需求上,是否會有恨大的差異呢?謝謝大家

20
smalllun
iT邦研究生 5 級 ‧ 2009-06-19 15:02:09

我覺得應該考慮的是CPU和記憶體和頻寬....
至於硬碟的IO效能應該是還好,購物車系統不是像需要讀取大量的硬碟資料的系統(影音才需要)。

購物車資料量大時,就牽扯到資料庫的效能。資料庫效能依照硬體來取決的話,是在cpu速度及記憶體大小。

所以"四核心+7200轉sata做raid1",依照你的需求來說應該是這cp值比較高。
ps:記憶體要多,資料庫吃很大的記憶體(MSSQL至少是這樣)。

如果照"四核心+7200轉sata做raid1" vs "雙核心+15k轉sas做raid1",去分的話,
後者效能比較好。尤其是當FileServer最明顯。

以上有誤請指教

marywu iT邦新手 5 級 ‧ 2009-06-20 15:13:19 檢舉

smalllun,可以請下一下嗎?您提到 資料庫效能依照硬體來取決的話,是在cpu速度及記憶體大小,但是資料庫不是都在撈取資料嗎?這樣是硬碟io會比較重要?還是他是cpu運算比較多呢?謝謝大家

smalllun iT邦研究生 5 級 ‧ 2009-06-20 19:08:38 檢舉

以MS-SQL來說,他會把所查詢或運算的資料都載進去記憶體內,所以讀取硬碟的效率不高....如下圖:(姑且不論以下程式或資料庫正規劃的好不好。ps:資料庫檔案1G。)
http://smalllun.blog.ithome.com.tw/gallery/1734/previews-med/1734-13122.jpg
工作管理員實體記憶體使用率,如下圖:
http://smalllun.blog.ithome.com.tw/gallery/1734/previews-med/1734-13121.jpg
我還是認為依照你的需求,在cpu及記憶體需求量比較大....

18
roujuu
iT邦新手 4 級 ‧ 2009-06-19 19:13:53

好像可以用 SCSI 的硬碟,硬碟的讀取速度和傳輸速度會比較快,

不過現在的 SCSI 硬碟和 SATA 或是 SAS 的硬碟的傳輸速度誰比較快小弟就不知道了。

以前在 MS-Dos 5.0 和 MS-Dos 6.22 的時代,
SCSI 的硬碟是比 ISA的硬碟要快很多,不過也貴很多就是了。

以下是 google 的資料庫,您可以參考看看。

http://www.google.com.tw/search?hl=zh-TW&q=scsi+%E7%A1%AC%E7%A2%9F&meta=&aq=1&oq=SCS
http://0rz.tw/KLdCb

http://www.google.com.tw/search?hl=zh-TW&q=sata%E7%A1%AC%E7%A2%9F&meta=&aq=0&oq=SATA
http://0rz.tw/gcb5R

http://www.google.com.tw/search?hl=zh-TW&q=sas%E7%A1%AC%E7%A2%9F&meta=&aq=1&oq=SAS
http://0rz.tw/YVPri

18
cyks
iT邦新手 3 級 ‧ 2009-06-20 13:00:29

SAS 卡基本上有 SCSI 指令,效能會比較高,之前有跟立志的工程師聊過,簡單來說,大量I/O存取時,SAS會讓妳用起來的感覺是稍微lag但是還是感覺出有在動,但SATA是感覺像當機一樣,我自己是很注重I/O效能其次才是CPU,目前我用 SCSI 320 就感覺差很多了〈因為沒錢換SAS卡 ~"~〉,SCSI 平均傳輸約90MB ~ 100MB,但 Sata 只有60MB ~ 80MB左右而已,給妳些經驗參考

14
tw617
iT邦新手 4 級 ‧ 2009-06-21 07:48:34

我是認為硬碟應該不需要那麼好。
因為前面就有大大說了,
“目前的儲存裝置效能永遠跟不上 CPU & RAM!因此強化儲存裝置才是問題重心。”

我是建議強化CPU+RAM, 使用 RamDisk ,這樣不但大大降低硬碟的耗電與熱,還能超級提升資料讀取的效能。
建議把該資料庫的資料檔案存放在 RamDisk 上。
網路上有很多關於 Ram Disk 的相關資料,
RamDisk 的速度是神級的快阿!

只是不知道您的作業系統能否使用,
另外, 使用 RamDisk 的話,
記憶體需求則是建議“另外”再加上2G的容量,
如果說您想要連網頁或其他資料也置入的話,相對的要提高容量....

不過這邊提醒您一下:
RamDisk 在您關機的時候, 資料會不見,
所以建議您的所有資料還是建置在硬碟上,
再伺服器上線之前再將資料複製到 RamDisk,
離線後先將資料備份回應碟再行重開機。

我個人在家架伺服器的方法是這樣,但是不知道業界的狀況能否套用呢...

tw617 iT邦新手 4 級 ‧ 2009-06-21 07:53:36 檢舉

補註:
RamDisk 是把您的記憶體某一部份(可指定容量)暫作一顆磁碟機,該磁碟機所有的存取都是針對記憶體去跑,就不會受到磁碟機的“速限”了!!

22
lghkking
iT邦新手 5 級 ‧ 2009-06-21 12:47:50

想要知道效能瓶頸最簡單的作法就是 跑效能統計數據(前面有人提過了,各大作業系統都有類似的功能)
這是最直接,最正確的

不過依照您這個case,可能是新建置的購物車,所以沒有什麼數據可以參考
但建議可以找一些類似系統來參考,一定有不小幫助

RAM DISK的方案我不是很建議,因為風險很大
購物車會有訂單資料,複雜的還會包含庫存、客戶等等非常重要的資料
只要資料遺失個一兩筆,就準備被客戶罵吧
若甚至資料庫損毀,我想你在這間公司也不用繼續玩了
除非你有很完整的配套措施。

資料庫方面,到底是對哪項硬體需求量較大,我覺得很重要的幾點

  1. 資料量
    當你這個資料庫size很小時(100MB以內都算小吧。但100MB就已經可容納幾十萬筆資料不是問題),對硬碟的要求鐵定不會太多
    甚至大多數的資料在第一次執行後,就全部都存放在RAM中了
    所以RAM的容量很重要,一定要夠用,否則就會有大量的pagefile交換,
    這樣一來,即使原先的瓶頸不在HD,也會因為大量的Pagefile交換,使得瓶頸發生在HD

  2. HD I/O量,I/O量又跟系統功能需求、程式寫法好壞、瀏覽者的使用頻率有關
    以上這些都要去評估,才能知道夠不夠用

DB在運作時,依照操作可分為 select 跟 其他寫入動作insert update delete
簡單說明一下DB的運作流程吧
以上四種DML指令,幾乎都會跟select有關 ,只要有select就會有讀取
但資料庫在接收DML指令後,並不會都有HD I/O,怎麼說呢? 請看下去

通常只有第一次執行時,才會對硬碟的DB資料檔讀取資料,之後都會載入RAM中。
對於常用的JOIN等等,都一定是把需要用的table資料(不一定是全部)存入RAM,才會開始JOIN。幾乎所有的JOIN、select等資料庫運作,全部都是在RAM中完成。
而後續大多數的HD I/O是發生在 DB交易記錄檔的地方,也就是在做insert、delete、update時的I/O,而不是DB資料檔本身,此時寫入的不是HD中的DB資料,而是在RAM中的DB資料。
那什麼時候會把insert、delete、update的資料寫入存在HD的DB資料檔?
是在每隔一段時間的DB check point發生時,或DB服務關閉時,才會真正寫入HD。
checkpoint是很多分鐘才發生一次,每種DB都不太一樣。
在checkPoint還沒發生之前,所有insert、update、delete後的資料,都會存放在RAM中。另外在交易記錄檔中也會有相關動作的紀錄,作為意外狀況時的比對。
所以在HD中與DB相關的東西,一共是有兩個。
而這兩個發生HD I/O的時間點跟頻率都不太相同
若要有最佳的DB效能,請將這兩個分別置於不同的儲存體上。

3.CPU的能力,通常不是DB所care的,因為DB是負責儲存資料的地方
他的主要任務並不是執行運算。
主要用CPU能力的地方,應該是你的Web應用程式
當然目前有不少DB是允許寫T-SQL程式的,不過我不建議這樣做,因為DB的執行程式的引擎不可能很好,若真的有這狀況,應該是程式開發者的問題,或DB使用者的問題。

**依照您寫的主機規格
似乎計畫將Web應用程式 及DB存放在一起
那應該是屬於小型的購物車系統網站
我認為呢,CPU雙核已經很夠用了,若有分析報表系統,再考慮升等四核心吧
記憶體,尤其你是Web應用程式、DB存放在一起,所以絕對要非常夠,這其實才是這個系統效能的要角,建議要有4GB
儲存體,您提的硬體規格有點兩極化,且您說預算有限....
那我建議一組中間的吧,陣列卡不要選中價位及更低的品牌,因為效能鐵定有不小的差異
此時無論你HD選多好,也會因為陣列卡的演算法不好,導致效能低落。
硬碟應該還是SATA就夠了,備品多留一點,找企業版、cache大的

用SCSI SAS真的太傷了,而且需考量未來的維修替換,除非預算非常充足。
且若要用SCSI SAS,那該主機應該要有相對等的環境,比方空調等等。不然號稱高等的SCSI硬碟會壞的比SATA還要快很多,保證(親身經驗)

另外如果計畫只有一組儲存體的話,陣列建議升等成RAID-5 或 6。
至少能把多工性給提升。一張好的陣列卡,也能夠降低CPU對於資料存取的工作。**

資料庫裡面的運算,跟SCSI、SAS的運算沒有關係
資料庫是軟體,SCSI、SAS是硬體
資料庫的運算一定是請CPU幫它做的
SCSI、SAS是幾乎本身晶片做的
SATA是部分請CPU做的

無論是 網站、資料庫、應用程式
全部都很要求記憶體的量,所以記憶體絕對不要省

php、html
php是有運算的程式,cpu跟ram都會比較重要
html只要在意ram就夠了

marywu iT邦新手 5 級 ‧ 2009-06-21 14:40:44 檢舉

lghkking,可以請教您幾個問題嗎?

是在每隔一段時間的DB check point發生時,或DB服務關閉時,才會真正寫入HD。
checkpoint是很多分鐘才發生一次,每種DB都不太一樣。
在checkPoint還沒發生之前,所有insert、update、delete後的資料,都會存放在RAM中。

===>> 如果資料是很久才寫入HD,那麼突然當機,是否資料也很容易遺失?這樣跟RAM DISK道理似乎有像不是?

所以在HD中與DB相關的東西,一共是有兩個。
而這兩個發生HD I/O的時間點跟頻率都不太相同
若要有最佳的DB效能,請將這兩個分別置於不同的儲存體上。

===>> 不好意思!!不太了解您指的"兩個",分別是指?

謝謝大家

20
kaoc
iT邦新手 1 級 ‧ 2009-06-22 08:55:27

CPU的部份, 現在伺服器已經買不到 Dual Core
HDD的部份, 建議使用 SAS, 不只效能好, 也比較耐用!! 現在硬碟容量都很大, 資料量沒有很大的話(<300GB), 其實價格不會貴多少(300GB SAS跟1TB SATA相比)

其它部份:
RAM不要太少, 至少先裝 4GB, 但是要確認保留空的插槽, 方便以後擴充!

補充: 市場行情可能跟作者Mary的常識有一些落差, 不妨跳開這些迷思, 建議直接詢價-->比價, 最後結果可能會發現硬體採購反而是單純的!!

tom6507 iT邦大師 1 級 ‧ 2009-06-22 09:10:46 檢舉

逸凡的高手...

cooch iT邦研究生 3 級 ‧ 2009-06-23 05:14:39 檢舉

逸凡的高手... + 1

10
ccc778811
iT邦新手 5 級 ‧ 2009-06-23 09:40:36

恕晚輩說一句
其實可以使用SSD硬碟
寫入速度稍慢一些
但讀取速度非常快
(缺點就是價錢高)

html、php 應該是記憶體吃比較重

(還有就是SERVER的平台也很重要)
如果能用建議用2008 或 LINUX去架

選對平台差很多....

yking7065 iT邦新手 2 級 ‧ 2009-06-26 11:42:16 檢舉

是呀!
選對平台差很多!!
去架個FreeBSD吧!
記憶體掛個8G。
現行的PC及Server隨意一台都很夠用。
就不用考慮CPU及硬碟之間的瓶頸...

若單以硬體來說,
在架構上都是週邊設備配不上CPU速度,
若要選購,個人比較偏向需求導向。

頻寬是王道! 做購物車就是要做電子商務,
程式寫的好,漏洞及Bug少,系統及硬體穩,反而比較重要。

linyumo iT邦新手 4 級 ‧ 2009-07-04 15:28:27 檢舉

其實,也可以不用考慮那麼多,如果你的資料庫是叢集系統(目前比較OK的是MS SQL及Oracle,MYSQL的Cluster評價不好)及Web也是叢集系統,那對系統就不用怕CPU及IO的問題,網路部分可以針對線路購買頻寬管理器及透過DNS來分配網路負載,我想應該就差不多了,用Cluster有幾個好處,其中之一,也是你目前的需求,主機附載不夠,再添加主機就好,希望這樣回答對你有幫助

linyumo iT邦新手 4 級 ‧ 2009-07-04 15:33:45 檢舉

補充一下,如果用mysql,建議使用讀寫分離的方式,網路上有許多方案,關於讀寫分離的可以查詢一下,不建議用mysql上的cluster.

我要發表回答

立即登入回答