-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于高并发和性能的问题 #14
Comments
|
关于tracing和metrics,配置项collector_url只有一个,url填到tempo之后似乎查不到metrics信息了 |
三个问题的示例,这里用plain提交了,原始代码为:
第一个示例上传文件,编译,运行 共三个子任务
第二、三个示例上传文件,编译,"ls -la"编译结果-运行 共4个子任务
|
你可以尝试一下 seele |
非常感谢建议。 |
其实 Seele 能够支持在 Kubernetes 上使用 runj 创建容器,只需要将文档中提到的 docker 参数修改为对应的 Pod 配置项,同时配置 Seele 所在 Pod 的 CPU 和内存资源分配即可。 除了云原生的路径,其实还有一种比较传统的办法,就是利用虚拟化平台管理多台虚拟机,利用 Ansible 在每台虚拟机上运行 Seele |
评测机只跑seele,但是遇到了很多不合理的问题:
评测机环境
双路EPYC-9654 96核CPU,系统共192核384线程 2.24T内存
Ubuntu22.04系统配合kubernetes
1. WALL_TIME超时但是user和kernel time都很短
问题描述
例如一个简单的hello world C代码,上传文件,编译,运行 共三个子任务
可以看到它已经正确输出hello,world2了,整个cpu_user+kernel不到200ms,但是wall_time有整整12s,即便如此,整个
time_elapsed_ms
却来到了58s,超时被强行结束的复现条件
讨论
在我们评测机上并发200的时候能以30 tasks/s的速度完成这个,但这种简单的helloworld期望应该是200 tasks/s以上的评测速度。其原因都是wall_time太长导致的。
我感觉应该是runj在面对高并发的时候本身成为瓶颈了:启动、退出容器都很慢
2. runj error: cannot start an already running container
问题描述
跟1一样的C helloworld,上传文件-编译-ls编译结果-执行,结果runj报错:
Error initializing the container process: cannot start an already running container
复现条件
600并发的时候约有5%的概率出现
3.compile编译阶段saves的文件无法被run阶段执行
问题描述
跟1一样的C helloworld,共4个子任务:上传文件->编译->ls编译结果->执行
编译
和ls编译结果
子任务的action都是 "seele/run-judge/compile@1":编译: source:
solution.cpp
saves:solution.cpp,solution
command:g++ solusion.cpp -i solution
ls编译结果: source:
solution.cpp,solution
saves:solution.cpp,solution
command:ls -la
特别注意ls编译结果子任务的source和saves都是一样的
复现条件
200并发的时候100%出现
1000并发的时候变成问题1超时和问题2无法执行了
但是,如果
ls编译结果
步骤 saves改为只有solution(之前是solution和solution.cpp)就能不会出现exec format error讨论
上面的问题1、2应该是runj对系统资源依赖导致并发上不去,这个问题我是真的不懂了
以及它在高并发的时候又不会出现,只是变成超时,太迷惑了
The text was updated successfully, but these errors were encountered: