Replies: 4 comments 1 reply
-
引入 cgroup 监控和限制时空资源(唯一的缺憾是无法限制时间)本来就是计划内的,只不过我咕了太久(
直接 readonly /usr 即可,这个地方不应该有读了会出问题的地方
我觉得应该把 phase 2 提到 1
|
Beta Was this translation helpful? Give feedback.
-
这里不是很理解,看起来 java 似乎需要读 etc 目录里的东西? |
Beta Was this translation helpful? Give feedback.
-
|
以及我觉得应该要么扔掉 watcher,减少一层,要么干脆不动。反正你不可能统一每个平台的 watcher,总是要对每个平台写一遍的。我不觉得统一一下有什么好处。 |
Beta Was this translation helpful? Give feedback.
-
我觉得之所以用一层 watcher,主要是利好 #250 引入的自定义 watcher 功能,这个功能我觉得还是蛮重要的,wasm judge 以及接入其他解释型语言都可以用上。我觉得还是要给这个自由度的。 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
我考虑重构 LemonLime 的部分测评执行部分,想讨论一下。
目前 Linux 下大致是:
而 Windows 下目前没有 watcher,而是直接在主线程运行用户程序。我想是否应该将“执行相关的一切”全部收归 watcher。也就是主程序本身不再负责卡时和sandbox 处理,只负责启动 watcher,然后等待结果
目前 Unix 有 watcher,而 Windows 没有 watcher,导致不同平台行为不完全一致。统一之后自定义 watcher 功能也可在 windows 下实现。
同时,我觉得 watcher 更适合作为执行后端:
全部由 watcher 负责,主程序不再额外进行监控。
目前 Linux 下主要使用 bubblewrap 作为 sandbox。但我考虑引入 cgroup。现有的 bwarp 可以似乎绕过内存限制。
另一个问题是解释型语言。需要开放部分目录的读权限,像 #300 一样,无法简单处理。这里我不是很清楚怎么处理,有几种方法:
目前考虑的重构路线
Phase 1:实现 Windows watcher
Phase 2:Linux 的 sandbox 收归 watcher
Phase 3:引入 cgroup 等
目前大概是这些想法,欢迎讨论。
Beta Was this translation helpful? Give feedback.
All reactions