mud_sanc 板


LINE

出處 http://blog.csdn.net/mu_gong/archive/2005/02/19/293246.aspx 節錄其中幾段.. 第一次嘗試這種類型的Mud,並沒有想到會如此受歡迎。在不到一年的時間, 甚至許多功能都尚未完成的時候,不停的有新人加入這個遊戲空間。原來是 不希望設上限人數的,我們希望 :「想玩就可以來玩。」。但是人數一再增 加,整個系統慢了下來,於是我們不停的嘗試各種方法來提高人數上限,包 括改寫Mud library、更換硬體、更新MudOS版本、修改linux kernel以突破 file descriptor上限256的限制等等。 聖殿以前人數常卡在 24x(不含 logon) 的原因應該是最後一個,其它該做 的大概都做了,大抵上人數不斷提高時,會遇到的問題以及初步會採取的做 法都大同小異。 改寫 mud library: Int、Satin 時期改寫過一次,nobu、myst 時期聽說又 改寫一次,nobu、laechan 時期則以最佳化為主。 更換硬體: 其實可以換成雙核心的 machine,nobu 的意思是雙核心對跑mud 在效能上助益不大,目前的主機是 P4。 更新 MudOS 版本: 目前的版本算蠻新的,將來考慮換成某一版可支援多port 登入的(啊,目前的不曉得可不可以..) Mud OS可以看成是一個virtual machine,執行專屬的中間碼。在virtual machine是single thread的,也就是說一次一定會把一個指令或物件裡的 一個method執行完畢,才輪到下一個。 Mud 需要處理以下三件事情 : 1. 每隔固定的間隔時間必須執行的 : 比如說每個生物的心跳。 2. call_out queue : 有些指令在執行的時候為了要造成延遲的效果, 會以call_out函數指定過了幾秒後要跳到哪個函數執行,有點像 sleep()。Mud OS會將call_out發出的請求依時間掛在一個queue, 每隔一陣子就去檢查是否到了執行的時間。 3. 使用者下的指令。 為啥要盡量減少 call_out 的使用, 上面有大致的說明. 但實際上目前大 量以其它方式替代 call_out 也會產生問題就是了. 目前的 mudos 不曉得有沒有非 single thread 的處理方式. 整個過程大概可以寫成 : While (1) { process_heart_beat(); // 心跳,每兩秒一次 process_call_out(); // call out queue process_user_command(); // user command } response time = 網路傳輸時間(來回) + 執行指令的時間 而 執行指令的時間 = f ( 硬體的速度,virtual machine的效能, 指令本身的複雜度,物件數目,使用者數目) 其中物件的數目受直接受使用者數目的影響,而小心設計可以降低指令的複雜度。 一般情況下 loading 是平穩的, 而人數越多, 經過 process_heart_beat() 時要處理的量就越大. 其它是能省則省了, 像聖殿這樣在戰鬥中要狂按一些指令的情況其實是可以 再更省一點. 另外指令的最佳化也是未來的重點, 特別是常用指令如 heart、go、特攻指 令等. 如何提高人數上限 1. 提升硬體設備 : a. 使用更快速的CPU b. 使用高速記憶體與硬碟 這是最簡單的方法了,然而硬體升級的速度比不上進入網路世界的人口成長 ,而且如果每次人數飽和就更新機器,將需要一筆可觀的費用。 以目前來說,P4 3.2G / 4G DDR2 800 / SCSI HDD,跑 mud 應該很嗆了,上 述花費大概 20000 以內就搞定, 在 onyx 寫上面文章的時代則是無法想像的 (如果拿 DDR3 的 ram 來插應該會更嗆) 像以聖殿目前主機的等級來看, 跑 3xx 人其實已經不太困難. 2. 加強virtual machine的效能,小心設計library ‥ 現在TAnet上的Mud多半是拿國外的virtual machine(Mud OS, driver) 來使用,使用新版本的virtual machine可以大幅提高執行速度。 ‥ 小心設計library,盡量不要設計的太複雜,將最花時間的一些動作與 指令最佳化。 ‥ 最佳化library能夠收到的效果有限,往往最多只能增加10~20個使用者。 最佳化的效果其實是很高的, 它的好處就在於更新機器時效果會更顯著, 以及當某一部份的系統檔案出問題時, 整個 mud 即使速度整體被拖慢, 也還能再撐一段時間(例如之前聖殿出現的大 lag 情況, lag 成那樣了, 還可以不 crash 繼續撐) 而且最佳化的過程也可以學習怎麼寫程式來盡量減輕系統的負擔. onyx 之後的文章就提到了如何架構分散式系統, 簡單的說就是當一部 pentium 200 的主機最多只能跑 250 個玩家, 而 kk 想跑 1000 個玩 家同時在線時, 依 onyx 及 ruby 的說法就是, 只要把四部 pentium 主機「串接」在一起就行了。 (這種想法據說是 onyx 論文的基礎) 但科技真的是日新月異的, 而 mud 則逐漸凋零, 兩條線約在 kk 人數 還有 5xx 的時候交叉, 而以現況來說, kk 經常在線人數 3xx~4xx,一 般家用主機則已經進步到四核心時代... 目前的聖殿不需要搞分散式架構大概可以跑 400 人(我的預估),超過 時有幾個備用方案.. 一、把 user.c 的 heart_beat 最簡化 二、把常用指令最簡化 三、取消一些常用指令的週期性使用方式,改成上線後使用一次即可 四、減少 1 ip 可 login 的角色數 Laechan --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.65.137.33
1F:推 bahatest :夢想是RAM插到24G,拿來玩虛擬硬碟 01/30 09:54
2F:推 AresMars :樓上可以跟我說什麼主機板支援到24G嗎@@" 01/30 15:36
3F:推 Yanten :4G*6輕鬆達成... 01/30 15:38
4F:推 Layase1 :$不輕鬆.. 01/30 15:52
5F:推 AresMars :剛剛查了一下,現在居然有8槽DIMM了...Orz 01/30 16:00
6F:推 bahatest :笨heart情報太慢了 01/30 18:24
7F:推 AresMars :脫離硬體資訊太久了,頂多是看nb epc這樣 01/30 18:29







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP