在系统级别限制C,Java程序的CPU和内存使用率

1010

我正在为C和Java构建在线代码编辑器。用户可能会编写无限循环。有什么方法可以限制系统级别设置下这些进程的cpu和内存使用率?

我的后端是一个nodejs进程,该进程从用户那里接收代码,对其进行编译并运行。当它超过一些crt和内存限制时,我想终止该进程。

征服了

是的-两种主要方法是setrlimit(2)和(在Linux上)控制组。

它的主要优点setrlimit是它简单且可移植(由POSIX指定)。fork,然后设置限制RLIMIT_ASRLIMIT_CPU,然后exec代码。缺点是它是每个进程的,因此代码仍然可以分叉以超过限制(它分叉的每个进程将获得相同的限制,但不会共享)。您还可以设置RLIMIT_NPROC使fork失败(但当然,那么代码需要叉无法进行测试)。

对照组(cgroups)的主要优势在于,他们可以将过程及其所有子项一起对待-他们得到的总和是极限。缺点是不可移植性(仅Linux),并且复杂性更高。如果它正在管理系统上的控制组,则可能还需要与systemd进行交谈。对cgroups最好的介绍是Neil Brown在LWN上的Control Group系列

另一种方法是在VM中运行代码,这对主机来说(至少在KVM情况下)是最普通的过程。重量级得多,但提供了很多隔离。

此外,作为一个侧面说明,你有很多事要担心不是无限循环,如果你正在运行任意不受信任的代码。例如,您绝对不希望有人上传垃圾邮件机器人。我建议您看一下现有的实现,但是AFAIK并不是开源的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

限制Dask CPU和内存使用率(单节点)

来自分类Dev

检查Haskell程序本身的内存和CPU使用率

来自分类Dev

PHP CPU和内存使用率

来自分类Dev

限制C ++中的CPU使用率

来自分类Dev

Windows 10中“系统和压缩内存”的CPU使用率高的原因是什么?

来自分类Dev

测量C ++和Java进程的CPU使用率

来自分类Dev

如何获得hadoop yarn应用程序的内存和CPU使用率?

来自分类Dev

命令行实用程序以查看任务列表CPU使用率,内存和执行

来自分类Dev

使用PID获取内存和CPU使用率?

来自分类Dev

将Java应用程序的CPU使用率限制为特定数量

来自分类Dev

将Java应用程序的CPU使用率限制为特定数量

来自分类Dev

限制CPU使用率%所有进程和核心

来自分类Dev

系统和压缩内存:高磁盘使用率

来自分类Dev

OS X Dock的内存和CPU使用率很高

来自分类Dev

kill -STOP 时的内存和 CPU 使用率

来自分类Dev

要显示的Shell脚本-内存使用率,磁盘使用率和CPU负载?

来自分类Dev

估计C库的内存占用量和CPU使用率

来自分类Dev

使用Cgroup限制CPU使用率

来自分类Dev

限制CPU使用率的线程数

来自分类Dev

如何限制Skype CPU使用率

来自分类Dev

限制Excel CPU使用率

来自分类Dev

统一限制CPU使用率

来自分类Dev

如何限制Fortify CPU使用率?

来自分类Dev

如何计算Java程序的内存使用率?

来自分类Dev

总CPU使用率-多核系统

来自分类Dev

SLURM会根据GRES自动限制内存/ CPU使用率

来自分类Dev

如何限制侦听文件系统更改的虚线循环的CPU使用率?

来自分类Dev

“系统”和“系统中断”导致的CPU使用率过高(由ACPI.sys引起)

来自分类Dev

Linux和CPU使用率

Related 相关文章

热门标签

归档