\(\texttt{OIEROJv2.0}评测\)更新
1.前言
由于Hydro提供的沙箱评测机制无法满足OIER试炼场所提供的超大常数、超长时间,时而出现TLE
等问题。
由于诸如此类的问题频繁发生,更高效、安全的评测机制的开发被提上日程。
2.新的调度和新的架构
当用户提交评测任务时,任务首先由网页端通过内部通信,发送到评测后端的处理程序上。在简单检查评测任务的合法性[1]后,便被放入评测队列等待程序编译。
完成编译后,程序的二进制文件被读取放入一个在所有评测机间共享的存储中。所有输入、输出文件,均放置在虚拟内存盘[2]中,因此不存在磁盘速度带来的输入输出速度瓶颈。
同时,评测任务被按照该题的所有测试点打散[3],安排进入队列,有空余线程的评测机便读取任务,并行进行评测。在评测结束后,评测机将结果发送回网页端,由网页端进行下一步处理。
3.新的沙箱机制
我们在Hydro提供的沙箱技术进行创新。致使沙箱技术不再限制系统调用,对用户程序进行全方位的限制。
程序运行时可申请的内存、磁盘空间等资源受到严格的限制,如有超出则会自动被系统停止运行。
4.新的评测数据管理
所有题目的评测数据被放置在一个统一的中央离线仓库中,评测机通过内网根据需要自行获取。
同时,评测机维护每道题目的评测数据被最后一次使用的时间,当磁盘空间不足时,自动从本地删除最近没有被使用过的缓存评测数据。
当评测机需要使用某个测试点时,系统将对应的测试点从磁盘复制到虚拟内存盘中,同时将输入绑定到用户评测程序的 stdin 上。因此,在评测系统中你是找不到输入文件的————因为它存在于外部的文件系统。
5.总结
这估计也是2025年OIER试炼场唯一一次大更新了(虽然才1月1)。
我们 [OI杯]2025豪华全家桶 见!