上電那天,機房裡的氣氛緊張得像手術室。
陳工站在中央儲存櫃前面,手裡拿著本子,上面密密麻麻寫著上電步驟和檢查項。
諸葛彪蹲在配電櫃旁,手搭在總控開關上。
錢蘭站在管理員桌前,盯著監控終端的螢幕。
“第一步,檢查所有機器電源開關,確認處於‘關’的位置。”陳工念道。
諸葛彪挨個檢查了一遍,16臺KJ-0A的電源開關都撥到了“關”的位置。“確認。”
“第二步,檢查中央儲存櫃電源開關,確認處於‘關’的位置。”
“確認。”
“第三步,合總控配電箱開關。”
諸葛彪把總控開關推上去。
機房裡傳來一聲低沉的“嗡”,那是穩壓電源的變壓器開始工作的聲音。
配電櫃上的電壓表指標跳了一下,穩穩停在二百二十伏。
電流表紋絲不動。
“第四步,閤中央儲存櫃電源。”
諸葛彪走到櫃子後面,推上開關。
櫃子正面的綠色指示燈亮了起來,散熱風扇開始轉動。
陳工盯著指示燈,等了幾秒:“第五步,合一號機電源。”
一號機的指示燈一排一排亮起來,綠色的電源燈、黃色的待機燈,紅色的故障燈沒亮。
散熱風扇的聲音比中央櫃稍大,但還算安靜。
監控終端上,一號機的狀態從“離線”變成了“待機”。
然後是二號、三號……一直到最後16號。
每一臺機器上電的時候,所有人都屏住呼吸盯著指示燈。
綠燈亮,黃燈亮,紅燈不亮。
16臺全部上電之後,機房裡充斥著風扇的嗡嗡聲,像一群蜜蜂在飛舞。
但聲音並不刺耳,反而有一種秩序感,像某種低沉的、持續的背景音,聽久了反而會覺得安靜。
陳工在本子上寫了幾筆,抬起頭:“靜態上電完成。所有機器待機正常,沒有短路、沒有過流、沒有故障指示。”
呂辰點點頭,走到管理員桌前。
監控螢幕上,16個綠色的方塊整整齊齊排列著,每一個方塊代表一臺KJ-0A,顯示著編號和狀態。
全部是綠色:待機狀態。
“開始裝系統。”
“系統”不是後來那種有圖形介面的作業系統,而是一套固化在只讀儲存器裡的微程式和載入程式。
每一臺KJ-0A都要先載入載入程式,初始化暫存器,自檢外設,然後才能載入真正的控制程式。
二維卡插進讀卡機,按下載入按鈕,讀卡機“咔嗒”一聲把卡片吞進去。
顯示器上綠色字元一行一行跳動:
LOADING
MICROCODE
SELF TEST......
MEMORY
CPU
I/O
ALL TESTS PASSED
16臺機器的自檢結果全部是“ALL TESTS PASSED”。
陳工靠在管理員桌旁,點了一根菸,吸了一口慢慢吐出來。
煙霧在空調送風下迅速散開,被迴風口吸走,消失在格柵後面。
“呂工,硬體裝完了,系統裝完了。聯調方案你定,我們執行。”
呂辰從兜裡掏出一個小本子,翻開一頁,上面密密麻麻寫著字。
“聯調方案分五個階段。”他把本子攤在桌上,陳工、諸葛彪、錢蘭都湊過來看。
……
聯調方案被分解為五個階段,層層遞進。
第一階段:單機自檢加環回測試。
每臺機器獨立執行,環網介面板設為環回模式,自己發自己收,不經過環網。
執行固定測試向量(斐波那契數列、矩陣乘法),驗證CPU和記憶體;讀寫本地暫存儲存器,驗證儲存板。
自檢結果寫入本機特定記憶體地址,在顯示器上輸出“節點X自檢透過”或“失敗”。
16臺機器同時上電。
機房裡16臺顯示器的螢幕上,綠色的字元同時跳動,像16面旗子在風中飄揚。
NODE 0 SELF
NODE 1 SELF
...
NODE 15 SELF
陳工在本子上記了一筆:“單機自檢,16臺全部透過。”
第二階段:星型網單點讀寫測試。
連線所有星型網線纜,環網斷開。
每臺機器獨立執行:生成一個唯一的測試資料塊,透過星型網寫入中央儲存櫃的指定區域,等待一段隨機時間(用本機時鐘計數器的低幾位做延時,避免同時寫衝突),然後從儲存櫃同一地址讀回資料,比較讀寫是否一致。
結果寫入儲存櫃的狀態表區域,在顯示器上列印“成功”或“失敗”。
監控終端上,16個綠色方塊的狀態從“待機”變成“執行”。
中央儲存櫃的指示燈開始閃爍,多埠儲存控制器在忙碌地處理著來自16個節點的併發請求。
仲裁、排隊、響應。
不到十分鐘,所有節點的顯示器上全部出現了“PASS”。
陳工又記一筆:“星型網單點讀寫,16臺全部透過。”
第三階段:環狀網令牌傳遞測試。
斷開星型網,僅連線環網同軸電纜。
所有節點初始化為監聽模式。
呂辰走到一號機前,在操作檯上敲了幾個鍵,指定ID=0的節點生成測試令牌。
諸葛彪按下“執行”按鈕。
顯示器上字元開始跳動:
TOKEN GENERATED
TOKEN SENT TO NODE 1
機房裡16臺顯示器的字元開始依次跳動。
令牌從一號機傳到二號、三號……每一臺機器收到令牌時,都會在顯示器上列印一行:“TOKEN RECEIVED FROM NODE X, FORWARD TO NODE Y”。
令牌像一列看不見的火車,在環網上飛馳。
大約一秒鐘後,令牌回到一號機。
最後一行字元出現:
TOKEN RETURNED TO NODE 0
ACCUMULATED SUM: 120
RING TEST: PASS
接力傳信透過,接下來是令牌環基礎測試。
令牌裡帶著目的地址和源地址,在環網上廣播。
每一臺收到令牌的節點把自己的ID新增到資料中,然後轉發給右鄰。
又是一秒鐘,令牌回到一號機:
TOKEN RING TEST: ALL NODES PRESENT (16/16)
RING PROTOCOL TEST: PASS
陳工笑了:“環狀網令牌傳遞,16臺全部透過。”
第四階段:混合拓撲全連通測試。
星型網和環網同時連線。
16臺機器執行“全對全向量求和”演算法,每臺機器透過星型網向儲存櫃寫入自己的初始值,再讀取所有其他節點的值累加;同時透過環網與左右鄰居交換資料計算邊界差。
所有節點最終都計算出全域性和120,邊界差驗證正確。
監控終端上16個方塊全部顯示“執行”,中央儲存櫃指示燈閃爍得比昨天更快。
大約五分鐘後,所有節點的顯示器上同時出現:
LOCAL SUM S=120, PASS
BOUNDARY DIFF PASS
HYBRID TOPOLOGY TEST: PASS
陳工寫道:“混合拓撲全連通測試透過。”
第五階段:容錯與壓力測試。
這是最漫長的階段,也是最暴露問題的階段。
先做節點離線測試。
孫班長走到七號機後面,拔掉電源插頭。
七號機的顯示器瞬間熄滅,風扇停止轉動。
監控終端上七號機的綠色方塊變成紅色,旁邊出現一行字:“NODE 7 OFFLINE DETECTED”。
不到一秒鐘,其他十五臺機器的顯示器上都列印出了“NODE 7 OFFLINE”的警告。
呂辰看了一眼時間:“響應速度合格。”
孫班長把電源插回去,機器重新啟動,自檢透過,自動加入環網。
監控終端上的方塊從紅色變回綠色。
然後是儲存櫃埠故障測試。
孫班長走到中央儲存櫃後面,拔掉五號機的星型網線。
五號機的顯示器上正在執行的程式突然報錯:“STAR NETWORK READ ERROR”。
監控終端上五號機的方塊從綠色變成黃色,旁邊出現“NODE 5 STORAGE ACCESS FAILED”。
呂辰在本子上記:“故障檢測正常。”
接下來是環網斷線測試,這是整個聯調中唯一出現邏輯不直觀的地方。
孫班長走到八號機和九號機之間,拔掉了那段同軸電纜。
這一次,故障不是立即全面顯現的。
環網上的令牌還在跑,但跑到八號機的時候,發不出去了。
八號機的顯示器上出現一行字:“TOKEN TIMEOUT, NO RESPONSE FROM NODE 9”。
與此同時,九號機也檢測不到左鄰的訊號,同樣顯示超時。
而十號機、十一號機等下游節點,則在各自等待了一段時間後陸續報出超時,因為令牌永遠到不了它們那裡。
監控終端上,從八號機到十五號機的方塊全部變成了黃色,分別寫著“TIMEOUT”或“NO TOKEN”。
只有零號到七號機還保持綠色,它們雖然收不到返回的令牌,但尚未判定自己失聯。
陳工盯著螢幕看了一會兒,用手指點了點八號和九號之間的位置:“斷點在這裡。八號發不出,九號收不到,下游全部超時。”
孫班長把電纜接回去。
大約兩秒鐘後,令牌重新開始在環網上流動,所有節點的狀態陸續恢復綠色。
呂辰在本子上寫:“環網斷線測試,故障定位準確,恢復自動完成。”
然後是最關鍵的併發壓力測試。
所有節點同步開始,同時向儲存櫃寫入資料。
每個節點連續寫100次,每次寫一個帶節點ID和序號的資料塊。
寫完之後,再讀取所有寫入的資料,檢查有沒有缺失或錯亂。
第一次壓力測試執行了大約十分鐘。
節點零彙總結果時,顯示器上出現了一行字:
DATA INTEGRITY CHECK: 1 ERROR DETECTED
呂辰皺了一下眉頭。
他走到節點零的顯示器前仔細看錯誤資訊:“NODE 12, WRITE 47, READBACK MISMATCH”
錢蘭走到十二號機前檢查機器狀態,沒有發現異常。
諸葛彪走到中央儲存櫃後面檢查十二號機的星型網線纜,插頭插得很緊,沒有鬆動。
陳工拿著萬用表量了一下線纜兩端之間的電阻,又量了對地絕緣,都在正常範圍內。
“可能是電磁干擾。”呂辰說,“電源線和訊號線雖然分開走了,但交叉的地方遮蔽可能不夠。把十二號機的這根線換成雙層遮蔽的試試。”
孫班長換了一根線。第二次壓力測試開始。
這一次,所有節點都透過了。
節點零的顯示器上出現了“DATA INTEGRITY CHECK: 0 ERROR”。
呂辰在本子上寫:“併發壓力測試透過。發現星型網線纜遮蔽不足,已更換雙層遮蔽線。建議所有節點的星型網線全部換成雙層遮蔽。”
接下來是持續的穩定性測試。
系統連續執行,白天跑測試程式,晚上跑空載待機。
每一臺機器的狀態都被監控終端記錄下來,每小時的溫度、電壓、電流、風扇轉速、晶片溫度,全部記在本子上。
這一個月裡也出過一些小問題。
有一次,某臺機器在環網測試中始終收不到令牌。
換了環網介面板、換了晶片、換了T型接頭,問題依舊。
陳工最後發現是同軸電纜的終端匹配電阻偏大,導致訊號反射,令牌包在傳輸過程中被幹擾了。
換了一個匹配電阻,問題解決。
還有一次,某臺機器的星型網讀寫偶爾出錯,頻率不高,一天也就一兩次。
諸葛彪帶著人查了兩天,發現是電源線的接地沒做好,地電位波動影響了訊號質量。
重新做了接地,問題消失。
第31天,錢蘭把所有的測試記錄彙總在一起,厚厚一沓,放在呂辰面前。
“容錯與壓力測試完成。所有故障場景都驗證了,系統檢測正常。壓力測試連續執行三十天,沒有發現資料丟失或錯亂。星型網、環網、混合拓撲,全部穩定。”
呂辰翻開記錄本,一頁一頁地看。
“所有節點自檢透過,硬體基本正常。”
“星型網讀寫一致,儲存櫃、I/O板、線纜良好。”
“令牌繞環一週累加和等於120,環網物理連通且順序正確。”
“全連通求和一致,混合拓撲協同正常。”
“壓力測試無丟數,儲存控制器仲裁可靠。”
他合上本子,看著機房那16臺墨綠色的機櫃。
“聯調透過了。”
陳工站在他旁邊,也看著那些機櫃。
日光燈的光照在他的眼鏡片上,反射出一片白茫茫的光。
他伸出手,輕輕拍了拍最近一臺機櫃的鐵皮外殼,像拍一個老朋友的肩膀。
“呂工,”他說,“這個系統,可以投入使用了。”
呂辰轉身走到管理員桌前,拿起那部黑色電話機,撥了一個號碼。
電話那頭響了兩聲,被接起來。
“劉教授,機房聯調透過了。16臺KJ-0A,三個中央儲存櫃,星型-環狀混合拓撲,全部穩定執行了一個月。”
電話那頭沉默了幾秒鐘。
然後劉星海的聲音傳過來:“好。分散式輔助電路設計系統,可以啟動了。”
呂辰掛了電話,站在窗前。
窗外的天邊泛起了魚肚白。
遠處,紅星軋鋼廠的煙囪已經開始冒煙,新的一天又開始了。
機房裡,16臺KJ-0A的顯示器上,那行“ALL TESTS PASSED”的綠色字元還在安靜地亮著,一明一暗,像是在呼吸。