請問各位先進,
請問一台伺服器,以資料傳輸來說
資料如果存放在硬碟中,
一個client讀取伺服器上的檔案,就我的了解
這個資料流(只到伺服器出去為止,不包含主機到client這段)
中間所經過,會影響到傳輸速度部分的節點如下:
一開始,資料從hard disk讀取資料,所以第一會影響的是
1.Hard Disk 本身的最大傳輸頻寬
接著,資料由hard disk讀出後,經由系統匯流排傳輸至System Kernel
所以第二個會影響的是
2.系統匯流排 本身的最大傳輸頻寬
接著,資料由System Kernel轉發給Network Card Adapter進行最後的資料傳輸
所以第三個會影響的是
3.網路卡 本身的最大傳輸頻寬
故如果我的理解沒有錯誤,伺服器整體的最大傳輸頻寬
基本上就會是這三個主要節點中所提供的最小頻寬為其理想值?
所以如果網路卡使用10Gbps,但是如果hard disk本身或是匯流排本身根本達不到這樣的傳輸頻寬
使用10Gbps的網卡也是枉然?
如果上述的理解有錯誤,也請各位先進不吝指教
謝謝
10Gbps的網路卡,相當於1250MB/sec
此傳輸量,是單一傳統硬碟的10倍,
如果你的主機,是使用三顆以上的SATA-III SSD硬碟,組成RAID0/RAID5/RAID6/RAID10的儲存空間時,
則10Gbps的網路頻寬,我只能說是,剛剛好互相滿足!
如果主機內部使用磁碟陣列卡,並有256MB以上的Cache RAM,及BBU配件時,則三顆以上的硬碟組成RAID0/RAID5/RAID6/RAID10的儲存空間時,儲存空間的瞬間,可以將10Gbps的網路頻寬,剛剛好互相滿足!
yesongow提到:
如果主機內部使用磁碟陣列卡,並有256MB以上的Cache RAM,及BBU配件時,則三顆以上的硬碟組成RAID0/RAID5/RAID6/RAID10的儲存空間時,儲存空間的瞬間,可以將10Gbps的網路頻寬,剛剛好互相滿足!
喔喔~即使使用RAID來提升整體傳輸頻寬,但是資料如果仍然會經過匯流排的話,是否匯流排依舊會是bottleneck呢?
還是當使用RAID卡時,資料傳輸是不會經過匯流排的?
通常磁碟陣列卡,是使用擴充卡的方式,安裝在主機上!
而主機介面有PCI,PCI-X,PCI-Express
依照介面不同,而能夠傳輸的數量也不同喔!
以下是wiki資料
http://zh.wikipedia.org/wiki/PCI_Express
所以,PCIe 2.x版,在單向單通道時,可以傳輸大約500MB/sec的資料量!
而PCIe 2.x版,在16 lane時,雙向可以傳輸大約16GB/sec的資料量!
像是DELL H700的磁碟陣列卡,它是PCIe 2.x版 x8的卡!可以搭配8顆硬碟使用!
所以,DELL H700對北橋晶片傳輸量,雙向可以高達8GB/sec的傳輸量(等同64Gbps)
這樣的瞬間傳輸量,應該可以滿足10Gbps的網路卡了吧?
枉不枉然要看實際需求
如果你的環境因為網路的100M或1G bps限制才出現問題
你會不會考慮trunking或是走其他高頻寬方案 ?
去做performance tuning就是要全方面的思考
想辦法打開那個最瓶頸的地方
其中當然也包括了各點傳輸端的問題
如果單純單就這三個測量點
那麼終端實際最大輸出的能力就是受限在路徑中的能力最低的點
但是只要在效能最低點之後加入快取的功能,就可以改善
作業系統與資料庫會利用記憶體暫存資料減少硬碟讀寫的次數,就是這樣改善效能