陈教授走到一号机前面,打开机柜门,从帆布包里拿出另一个防静电盒,里面是一块只读存储器芯片。
“调度器的微程序,固化在这块芯片里。插到一号机的接口板上。一号机就是主控节点。”
吕辰接过芯片,插到一号机接口板上的预留插槽。
陈教授走到操作台前,按下电源开关,插入引导卡,读卡机“咔嗒”一声。
显示器上的字符开始跳动:
loadgschedulericrode……
icrodeloadedatoxooo
itializgtaskeue……
itializgnodetable……
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!
deteodes……
屏幕上出现了一个表格,duj-oa。第一列是节点编号,第二列是状态,第三列是ip地址(他们用简单的数字编号代替ip)。
nodeostat:onleaddr:o
nodestat:onleaddr:
……
nodestat:onleaddr:
台机器的状态全是“onle”。
陈教授点了点头,又敲了一个命令:
startheartbeat
屏幕上开始每隔十秒跳出一行:
heartbeat:allnodesresponded
heartbeat:allnodesresponded
heartbeat:allnodesresponded
调度器的主控节点开始向其他十五台机器送心跳包,每一台都正常响应。
“调度器跑起来了。”陈教授的声音很平静,但吕辰注意到他扶眼镜框的手指微微顿了一下。
“接下来测试任务分。”陈教授从帆布包里拿出一张二维卡,插进一号机的读卡机,“这是一个简单的测试任务——计算斐波那契数列的前二十项。任务描述写在卡片上,调度器会把它分给负载最低的节点。”
他按下运行键。
显示器上出现了新的输出:
tasksubitted:id=ooo,type=fibonai
sgtonodeload=o
然后,几秒钟后,七号机的显示器上亮起了计算结果,一行一行绿色的数字,从f=到fo=。
同时,一号机的显示器上出现了:
taskooopletedresultstored
陈教授又提交了第二个、第三个、第四个任务,调度器分别把它们分给了节点、节点、节点。所有任务都顺利完成。
他转过身,看着吕辰:“基本功能正常。接下来,你们可以把标准单元库的数据导进去,然后在真机上跑一个真实的设计任务,看看调度器在大负载下的表现。”
吕辰点了点头,心里盘算着下一步的工作。
诸葛彪站在旁边,双臂交叉抱在胸前,盯着屏幕上的输出看了好一会儿,忽然说:“陈教授,这个调度器,能同时跑多少个任务?”
陈教授想了想:“理论上是无限的。任务队列用优先级堆实现,内存里最多缓存一百个,过一百个的会暂存在存储柜的磁盘上。每个任务提交的时候,调度器会估算它的计算量,当然,估算不准,你们用一段时间之后,可以根据实际运行时间反馈调整估算模型。”
钱兰插了一句:“任务的优先级怎么定?”
陈教授翻开资料,找到一页,指着一个表格:“默认是fifo,先来先服务。但你们可以给任务打标签,紧急任务可以设置高优先级。调度器在处理队列的时候,优先级高的先出队。”
他又补充道:“这个机制还在实验阶段。你们先用着,有什么问题随时反馈。”
吕辰从笔记本上撕下一张纸,写了一行字:“调度器双机热备待测试、优先级机制待验证。”
然后把纸贴在管理员桌旁边的墙上。