[爆卦]minecraft伺服器核心是什麼?優點缺點精華區懶人包

為什麼這篇minecraft伺服器核心鄉民發文收入到精華區:因為在minecraft伺服器核心這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者softpak (喔喔喔)看板Minecraft標題Re: [討論] 請問如何建立大型伺服器(1...


硬體篇


這篇多少會提到一些軟體的東西

像是作業系統

不過本篇還是以硬體為主

測試環境:Linux+SPIGOT(#1472)

先說一下Minecraft的軟體設計機制

他是SMP(Symmetric multiprocessing)架構

(其他架構如MPP、NUMA、CCS,在此就不贅述,有興趣請自行GOOGLE)

例如AI一個執行緒、水流一個執行緒

並非硬體上的平行處理的架構

由於執行緒並無跨處理器的特性

因此只要單一物件讓處理器達到100%負載

就會產生LAG(系統會切換CPU沒錯,但是完全無法解決問題)

因此硬體的選購是很重要的

以下我就電腦的每個零組件作重點說明:

1.中央處理器:

運算能力比核心數量重要

需選購浮點運算較強的電腦

我以INTEL官方提供的數據來作列舉

這是實體核心數量的總運算能力(線上人數極限是訪問了部分開服者所得到的結果)

可以除以核心數之後獲得單核心的計算能力

(1)I7-3770:108.8GFlops(27.2),線上人數極限是30~100人。
(2)I7-3930:153.6GFlops(25.6),線上人數極限是40~150人。
(3)I3-2120:52.8GFlops(26.4),線上人數極限是10~50人。
(4)I5-3470:102.4GFlops(25.6),線上人數極限是20~90人。
(5)E3-1230V2:105.6GFlops(26.4),線上人數極限是20~90人。
(6)E5-2620:96.0GFlops(16.0),線上人數極限是30~110人。
(7)E5-2640:120.0GFlops(20.0),線上人數極限是40~200人。
(8)I7-2600:108.8GFlops(27.2),線上人數極限是20~80人。
(9)Q6600:38.4GFlops(9.6),線上人數極限是4~30人。
(10)E5-2670 v2:230.0GFlops(23.0),線上人數預估是150~300人。
(11)E5-2697 v3:319.7GFlops(22.8),線上人數預估是200~350人。

核心數量確實會有幫助

只是幫助有限

也需看系統的配置與設定

這也是為什麼大型伺服器一定是用多伺服器串連或者多重世界串連

單台電腦是無法負荷千人以上的運算需求的

就算是多處理器(多路)的系統也是一樣

因為使用SMP以外的架構需要重寫程式碼才能真正發揮作用

這又是另外一個主題了

在此不詳加討論

簡單的說

SMP因為共用系統記憶體與匯流排

因此會有RACE CONDITION的情形發生(有在寫程式的人應該會知道這個名詞)

2.記憶體:

記憶體的影響較小

16GB以上即可

3.硬碟:

不論是否有作磁碟陣列

一張含有CPU與記憶體的磁碟控制卡是最佳解

不過價錢當然是頗高

為什麼需要另外的IO卡呢

因為這樣能幫CPU分擔運算負擔

另外為了顧及資料安全

建議建置RAID5或以上的磁碟陣列(6、7)

備源硬碟(HS)也需多準備幾顆

這樣一來在其中幾顆硬碟故障時

系統還能繼續運作不至中斷

4.網路卡:

好的網路卡也是非常重要的

同樣的道理

網卡也必須盡量選購有NPU的產品

配置特殊的記憶體與處理器來輔助封包的解析

大幅降低CPU的使用率

建議是INTEL I350等級以上的晶片

若能買INTEL NE等級的晶片更好

配有獨立的記憶體

當然價錢會比較高

5.不斷電系統:

這是非常重要的設備

甚至可以配置穩壓器(AVR)

並注意電池容量

確保硬體安全

6.協同處理器:

這個部分國外已有玩家在進行研究

像是使用NV的CUDA處理器

或是去年INTEL發表的PHI

不過這些硬體的架構屬平行架構

既是像MPP但又不是MPP

不過同樣的是

要讓這些協同處理器發揮效用

一樣要重新編寫程式碼

這個部份我想等出了MOD API之後應該就會比較好開發了

7.網路頻寬:

視野9

每個玩家載入的chunck數為19*19=361

登入時消耗頻寬為160~200kB/s

移動時消耗的頻寬為20~60kB/s

約為官方伺服器的1/3

其他行為的頻寬消耗皆低於移動

因此就不列出了

因為spigot載入地圖的方式是以視野前方為優先

後方較晚載入

因此頻寬需求較少

以移動來當基準

100M/100M的網路頻寬(上下傳皆為12.5MB/s)

理論上可允許64人同時登入而不LAG

同時在線的玩家理論上可容納213個(以移動時最大頻寬消耗60kB/s計算)



以上內容僅供參考

因為架服的因素實在太多

若有些資料與實際不符

也歡迎指正

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.227.96.222
※ 文章網址: http://www.ptt.cc/bbs/Minecraft/M.1400172232.A.9A7.html
lsslss:UPS買Online就不用AVR了 05/16 01:19
jh961202:太專業,只好推了 05/16 02:49
jh961202:原PO該不會是某遊戲公司的硬體工程師...(被拖走 05/16 02:50
panda04056:長知識 推! 05/16 10:49
janice001:大推>////< 就是期待這種專業說明 05/16 11:06
what7910:它的SMP不會自己lock resource嘛?不然怎麼會RaceCond 05/16 13:58

官方就是為了避免RACE

加上普遍硬體架構的限制

才沒有設計出平行運算的伺服端

只用安全執行緒來設計

不過即使這樣

在使用新的網路架構後(NETTY)

依然偶爾會產生RACE導致CPU全部核心100%負載

如果硬體架構"真的安全"

軟體設計也會輕鬆許多
※ 編輯: softpak (218.164.18.48), 05/16/2014 14:16:35
nick5487:無論是官方server還是CraftBukkit都是相同概念嗎? 05/16 15:49

是的

可以這麼說

接下來的軟體篇可能會拖久一點

因為我會先實驗性的使用CUDA(或OPENCL)來輔助運算看看成果

預定使用JNI呼叫CUDA C

為何不直接用JCUDA來寫呢?

因為看了REF之後發現限制太多啦

只好用C來寫

再用外部呼叫
※ 編輯: softpak (218.164.18.48), 05/16/2014 17:05:20
※ 編輯: softpak (61.227.96.222), 05/16/2014 18:29:01
Comebuy:先推不然人家以為我看不懂 05/17 02:44
CP64:我看的懂但是我不知道要接啥 orz 05/17 03:25
Siu:P4伺服器推 05/17 20:16
egguitar:你需要的是Blade Server + SAN Storage 05/22 10:04

你可能也想看看

搜尋相關網站