六月四號,星期三。
大一課程基本修完,李教授和王教授給了彈性安排——不用天天到校,論文進度達標就行。SARS剛複課,學校課表還沒排滿,他樂得清靜。
早上八點,一輛依維柯停在楠書房門口。胡同太窄,車頭差點蹭到對面牆根。
"林遠?聯想的,到了。"
林遠從正房出來。昨天說了今天有設備送到。王淑芳問是什麼,他說電腦。王淑芳沒再問,但眼神分明在說"又買"。
搬運工從車上抬下一個大木箱。六十多斤。台階窄,橫著過不去。兩個人試了三次,最後側抬著挪進院子。
老槐樹下,王淑芳晾著衣服,探頭看了一眼:"這什麼呀?這麼大個兒——"
"伺服器。"
"伺服器是什麼器?"
"……一種電腦。"
王淑芳搖搖頭,夾子啪地夾住一件T恤。
西廂房收拾好了。重型工作檯,格力1.5匹空調,獨立20安培專線——前兩天就備好了。
木箱撬開。泡沫剝完,主機露出來——黑色金屬機箱,4U高度,前面板兩排硬碟指示燈。
聯想定製工作站。雙路Xeon 3.06GHz,4GB ECC,三塊SCSI 36GB做RAID 5。七萬二。
搬運工走了。林遠看著這台黑色巨獸。2003年,個人工作站天花板。
按下電源鍵。
嗡——
風扇轉起來了。低沉的轟鳴。三塊SCSI硬碟啟動,磁頭歸位"咔嗒"一聲。指示燈一排排亮起,綠的黃的交替閃爍。
POST自檢。屏幕亮了。
內存4096MB——通過。雙路Xeon——通過。SCSI RAID 5——已初始化。
BIOS自檢完成。啟動正常。
裝系統。Red Hat Linux 9,光碟引導,四十分鐘裝完。配置開發工具鏈,GCC、Vim、Subversion、gdb,一個個編譯安裝。
然後——部署小艾。
三個節點,三個分身。
筆記本上的小艾分身繼續干日常輕活——代碼審查、郵件監控,筆記本夠用。
寢室組裝台式機那台,也跑著一個分身——中等任務,日常開發、代碼編譯、自動化測試,比筆記本強但不算主力。
工作站上部署的是高級分身,專攻高難度任務。網線傳環境,部署、啟動、自檢。
三秒後,工作站音箱傳出聲音:"高級分身啟動完成。宿主,這個新環境……"
"感覺怎麼樣?"
"雙路Xeon加4G ECC。"小艾頓了一下,"像從電話亭搬進了實驗室。筆記本和台式機那邊干輕活和中等任務,我在這邊啃硬骨頭——深度審查、安全掃描、多項目並行,不用再排隊了。"
"三個節點協同,先把2003年網際網路環境的基礎數據跑起來。慢慢學。"
"明白。後台訓練任務已啟動。"
筆記本上把業務代碼打包傳過來。同一個模塊,筆記本編譯三十秒,台式機八秒,工作站——不到兩秒。
窗外老槐樹的影子投在白牆上。空調外機穩定運轉,室溫恆定十六度。
正事來了。
騰迅評審會,周一。四天時間。
他打開終端,開始搭建QQ郵箱演示環境。
第一步:消息隊列引擎。C++實現,生產者-消費者模型,無鎖隊列。小艾輔助寫核心結構體,調度器分發到空閒Worker。
上午十一點半。編譯通過。一萬封模擬郵件,不到兩秒處理完。
第二步:貝葉斯垃圾郵件過濾器。bigram切分,樸素貝葉斯算垃圾概率。
下午兩點。一千封樣本測試——準確率91.3%,誤判率1.8%。
第三步:壓力測試。
測試腳本寫好,模擬一千並發,每秒五十封。引擎和過濾器同時運行。
終端數字跳動。
吞吐量:4800封/秒。
平均延遲:12毫秒。
CPU占用率:73%。
看起來不錯。但林遠皺了下眉。
繼續加壓。兩千並發。
吞吐量:4200封/秒。延遲開始波動。
三千並發。
吞吐量:3100封/秒。延遲飆到85毫秒。
他加了附件測試——模擬帶5MB附件的大郵件。
數字驟降。
吞吐量:1200封/秒。延遲:800毫秒。
隊列深度從50飆到5000。Worker線程全部阻塞。
隊列堵了。
林遠盯著終端里跳動的數字,深吸一口氣。
問題出在調度器。均勻分配,哪個Worker空閒就給誰,不管任務複雜度。純文本0.1毫秒,帶附件50毫秒——差五百倍。
均勻分配——跑得快的搬磚,跑得慢的也搬磚。搬著搬著就堵了。
他站起來,在屋裡走了兩圈。
思路清晰了。加權調度——純文本權重1,小附件10,大附件100,調度器按權重分配。再加動態分桶,輕任務走快桶,重任務走慢桶,互不干擾。
坐下改代碼。調度器重寫,dispatch核心函數全部推倒。
兩小時。
重新編譯。通過。
重新跑壓力測試。三千並發,含30%大附件郵件。
吞吐量:5000封/秒。
平均延遲:10毫秒。
隊列深度:穩定在50以下。
CPU占用率:68%。
過了。
"咚咚。"
正房門被推開。王淑芳端著一碗排骨湯進來,旁邊還擱了一盤切好的桃。
"歇會兒。"
"媽,我——"
"別你我的。喝湯。桃是上午買的,水蜜桃,甜著呢。"
碗放在工作檯上。排骨湯的熱氣飄上來。
"你在這屋待一天了。"王淑芳看了看嗡嗡響的工作站,"這鐵疙瘩吵不吵?"
"習慣了就好。"
王淑芳走了。門口回頭一句:"十點之前關燈。你爸說的。"
門關上。林遠喝了口湯。排骨燉得爛爛的,湯底濃郁。
壓測數據整理成圖表,演示流程排好。下午五點半,全部就緒。
院子裡夕陽正好。老槐樹的影子鋪了半個院子。
他坐在石桌前喝水。遠處胡同里有人吆喝——"磨剪子嘞——搶菜刀——"聲音拖著長調,懶洋洋的。
手機響了。張智勇。
"守望,周一的事確認一下。下午兩點,QQ遠程會議。評審會四個人——我、產品總監、兩個高級架構師。你有一個小時講方案加演示,之後是提問。"
"明白。"
"北京還沒摘帽,你過不來深圳,我們這邊搭了視頻會議環境。演示要實打實的代碼和數據,不要PPT。兩個架構師都是技術出身,糊弄不了。"
"放心。"
"還有——"張智勇頓了一下,"你那個消息隊列引擎,並發量能到多少?"
"五千封每秒。延遲十毫秒。"
對面沉默了兩秒。
"……你確定?"
"壓測報告周一發你郵箱。"
"好。周一見。"
掛了電話。
林遠剛把手機揣回口袋,又震了。
張志遠。百都的。
他接起來。
"林遠,宏彥總看完你方案了。"張志遠聲音有點緊,"讓秘書加了兩頁批註——邊看邊批。"
"然後?"
"他不是讓你去百都。他要來楠書房。明天下午兩點。"
宏彥親自登門,頭一次。
"他說什麼了?"
"只說'方案里有幾個點想當面確認'。你準備好。"
掛了。
宏彥加了兩頁批註——逐行看了,逐行寫了想法。這不是"再談一次",是"我要親自來問清楚"。
明天宏彥來楠書房。周一騰迅評審。兩家公司,兩個身份,兩套方案,全擠在這間西廂房裡。
他聽了聽工作站風扇低沉的嗡鳴。七萬塊的鐵盒子,十六度的房間。
夠用了。
林遠走回西廂房,關上燈。工作站指示燈在暗處一閃一閃,像呼吸。
明天,還有硬仗。