限制进程组的CPU时间

2023-12-19

有没有办法限制进程组中花费的绝对 CPU 时间(以 CPU 秒为单位)?

ulimit -t 10; ./my-process看起来是一个不错的选择,但如果my-processfork 后,进程组中的每个进程都有自己的限制。整个进程组可以通过每 9 秒 fork 一次来使用任意数量的时间。

接受的答案类似的问题 https://superuser.com/questions/262013/linux-make-ulimit-limits-be-cumulative-across-spawned-subprocesses是使用 cgroups 但没有解释如何使用。然而,还有其他答案(使用 cgroup 限制 CPU 总使用量 https://stackoverflow.com/questions/43587767/limit-total-cpu-usage-with-cgroups/43660834)表示这在 cgroup 中是不可能的,只能限制相对 CPU 使用率(例如,每 1 秒使用 0.2 秒)。

Liran Funaro 建议使用较长的时间cpu.cfs_period_us (https://stackoverflow.com/a/43660834/892961 https://stackoverflow.com/a/43660834/892961) 但配额参数最多可以为 1 秒。因此,即使很长一段时间,我也不知道如何将 CPU 时间限制设置为 10 秒或一小时。

If ulimit而 cgroups 无法做到这一点,还有其他方法吗?


你可以用 cgroup 来做到这一点。以 root 身份执行:

# Create cgroup
cgcreate -g cpu:/limited

# set shares (cpu limit)
cgset -r cpu.shares=256 limited

# run your program
cgexec -g cpu:limited /my/hungry/program

或者,您可以使用cpulimit可以定期冻结您的代码的程序。 cgroups 是最先进的方法。

设置固定CPU共享:

cgcreate -g cpu:/fixedlimit
# allow fix 25% cpu usage (1 cpu)
cgset -r cpu.cfs_quota_us=25000,cpu.cfs_period_us=100000 fixedlimit
cgexec -g cpu:fixedlimit /my/hungry/program

事实证明,目标是在测量时将运行时间限制在特定秒内。设置所需的 cgroup 限制(为了获得公平的沙箱)后,您可以通过运行以下命令来实现此目标:

((time -p timeout 20 cgexec -g cpu:fixedlimit /program/to/test ) 2>&1) | grep user

20秒后程序无论如何都会停止,我们可以解析用户时间(或系统时间或实时时间)来评估它的性能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

限制进程组的CPU时间 的相关文章

  • python:numpy 运行脚本两次

    当我将 numpy 导入到 python 脚本中时 该脚本会执行两次 有人可以告诉我如何阻止这种情况 因为我的脚本中的所有内容都需要两倍的时间 这是一个例子 usr bin python2 from numpy import print t
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • 如何查明 Ubuntu 上安装了哪个版本的 GTK+?

    我需要确定 Ubuntu 上安装了哪个版本的 GTK 男人似乎不帮忙 这个建议 https stackoverflow com a 126145 会告诉您安装了哪个 2 0 的次要版本 不同的主要版本将具有不同的包名称 因为它们可以在系统上
  • 将数组传递给函数名称冲突

    Specs GNU bash 版本 3 1 17 无法升级 Premise 我一直在摆弄数组 我想知道是否有任何方法可以让函数的本地变量与所述函数外部的数组同名 Example 在下面的示例中 我将尝试显示该问题 Working bin b
  • 如何获取 linux 实用程序 tail 的源代码?

    这个命令确实非常有用 但是我可以在哪里获取源代码以查看内部发生的情况 thanks tail 实用程序是 Linux 上 coreutils 的一部分 源压缩包 ftp ftp gnu org gnu coreutils coreutils
  • gethostbyname() 或 getnameinfo() 如何在后台工作?

    How gethostbyname or getnameinfo 在后台工作 include
  • Java 8,为什么不是 ZonedTime 类?

    我发现 Java 8 没有等效的分区日期时间 http docs oracle com javase 8 docs api java time ZonedDateTime html但只能与Time a 分区时间类或类似的东西 I know他
  • 停止服务时单元陷入故障状态(状态=143)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是我的问题 我有 CentOS 和 java 进程在上面运行 Java进程是通过启动 停止脚本来操作的 它也创建了 java 实例的 p
  • 无法安装 WWW::Curl::Easy: SZBALINT/WWW-Curl-4.17.tar.gz : make NO

    我正在尝试在我的 Fedora 26 机器上安装 WWW Curl Easy gcc c I usr include D REENTRANT D GNU SOURCE O2 g pipe Wall Werror format securit
  • Linux 中热插拔设备时检测设备是否存在

    我正在运行 SPIcode http lxr free electrons com source drivers spi spi omap2 mcspi c在熊猫板上 我想知道其中的哪个功能code http lxr free electr
  • 将 Python 输入字符串限制为特定字符和长度

    我刚刚开始学习我的第一种真正的编程语言 Python 我想知道如何限制用户输入raw input特定字符和特定长度 例如 如果用户输入包含除字母之外的任何内容的字符串 我想显示一条错误消息a z 我想显示超过 15 个字符的用户输入之一 第
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • sleep 0 有特殊含义吗?

    我看到很多用法sleep 0在我的一个客户项目中 代码看起来像这样 while true sleep 0 end 阅读一些像这样的答案this https stackoverflow com questions 3727420 signif
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 在 python 中使用高精度时间戳

    嘿 我正在使用 python 处理日期时间 我想知道解析这个时间戳的最佳方法是什么 时间戳是ISO标准 这里是一个例子 2010 06 19T08 17 14 078685237Z 现在到目前为止我已经使用过 time datetime d
  • 归档文件系统或格式

    我正在寻找一种文件类型来存储已退役系统的档案 目前 我们主要使用 tar gz 但从 200GB tar gz 存档中查找并提取几个文件是很麻烦的 因为 tar gz 不支持任何类型的随机访问读取规定 在你明白之前 使用 FUSE 安装 t
  • 如何使用 sed 仅删除双空行?

    我找到了这个问题和答案 https stackoverflow com questions 4651591 howto use sed to remove only triple empty lines关于如何删除三重空行 但是 我只需要对
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复

随机推荐

  • Jenkins git 插件自签名证书

    我目前正在尝试让 Jenkins 构建托管在 GitHub 企业存储库中的项目 我们为 GitHub 服务器使用自签名证书 这会导致一些问题 我能够解决的大部分问题 git 命令行 获取 PEM 格式的证书并教 git 使用 config
  • 为什么 Spark 在本地模式下会失败并显示“无法获取广播_0 的广播_0_piece0”?

    我正在运行此代码片段来对点的 RDD 进行排序 对 RDD 进行排序并从给定点获取 K 最近的点 def getKNN sparkContext SparkContext k Int point2 Array Double pointsRD
  • 如何在 Android Studio 中禁用对项目的 C/C++ 支持?

    我时常会犯这样的错误 尝试在 Android Studio 项目中启用 C C 支持 我想我可能喜欢使用 C C 但我忘记了 至少在我的系统上 我从来没有能够让它工作过 即使在下载了 NDK 库之后也是如此 我已经四处寻找如何从项目中删除
  • 多项选择

    您好 我需要获取下拉框中选择的所有值 请参阅示例
  • Java 正则表达式解析任意数量的 Markdown 样式链接

    我正在尝试解析字符串以查找任何出现的 Markdown 样式链接 即 text link 我能够获取字符串中的第一个链接 但如果我有多个链接 我将无法访问其余链接 这是我尝试过的 你可以运行它ideone http ideone com B
  • 将 Javascript 正则表达式转换为 Java 语法

    我知道 regEx 在各种语言中都很常见 但我在编写 Java 语法时遇到了麻烦 我有一个用 JS 编码的正则表达式 if a zA Z test str 0 9 x21 x2F x3A x40 x5B x60 x7B x7E test s
  • “#pragma Once”是否有可能导致错误?

    我所有的头文件都使用包括警卫也杂注一次 pragma once ifndef FILE NAME H define FILE NAME H class foo foo interface endif FILE NAME H 我明白那个杂注一
  • Linq 的 Skip 和 Take 是否针对数组进行了优化? 【4.0版】

    从数组复制范围是一种常见的情况 C 通过多种方式支持此操作 例如使用 Array Copy 也可以通过 Linq 的 Skip 和 Take 组合来支持 从 NET 4 0 开始 Skip 和 Take 操作是否仍然会增加相当大的开销 或者
  • 在单词搜索拼图中将单词放置在表格网格中?

    我正在尝试创建一个由脚本生成的单词搜索谜题 文字应水平 垂直或对角放置 我可能需要设置是否允许它们仅向前或向后读取的选项 我有一系列单词 例如 苹果 香蕉 葡萄 柠檬 梨 需要放置在表中 我已经创建了表格 但我不知道如何将单词放入网格中 我
  • Ansible jinja2 在 selectattr 中转义点键

    我目前正在尝试循环 k8s facts 的子集 我的事实看起来是这样的 resources metadata annotations com foo bar name foo com foo bar foo name baz creatio
  • EF 包含 where 子句

    我有资源和资源详细信息 MemberPoint 带有memberId 和ResourceId 我想获取会员的资源详细信息 In SQL Select d From ResourceDetails d Inner Join Resource
  • 如何将 EXR 转换为 PNG 并同时调整亮度

    我能够使用中概述的技术将 EXR 图像转换为 PNG图像从 IFF 和 EXR 格式转换为 JPEG 格式 https stackoverflow com questions 28110353 image conversion from i
  • 使用 Spring Security 保护 REST 端点

    我正在尝试为 REST 端点提供安全性 我正在遵循以下指示这一页 http www mkyong com spring security spring security hello world annotation example 就我而言
  • SwiftUI 重新排序列表中的 CoreData 对象

    我想更改从核心数据检索对象的列表中的行顺序 移动行可行 但问题是我无法保存更改 我不知道如何保存更改后的 CoreData 对象索引 这是我的代码 核心数据类 public class CoreItem NSManagedObject Id
  • 如何在 C# 中按行对锯齿状数组进行排序?

    我有二维锯齿状数组 我想按任何行对其进行排序 我搜索并找到了按列排序的代码 private static void Sort
  • XSL 排序问题

    我在尝试使用 CLR4 0 中的 XslCompiledTransform 对 XSL 文件进行排序时遇到问题 这是我的示例 XML 文件 注意 第二个后面有一个空格
  • 如何拦截LLVM lli工具输入?

    我想使用 LLVMlli工具作为静态库 重命名main to lli 并将其导出到 libLLi a 为其创建丰富的 UI 我如何修改它 或不加修改地使用 以拦截标准输入 假设我知道如何生成 LLVM 汇编文件 使用clang S emit
  • 从 onSizeChanged() 调用时 requestLayout() 没有效果?

    我有一个在水平滚动窗口中按列显示文本和图像的视图 它会回流 因此 至少可能 随着其内容的变化而调整自身大小 当软键盘来来去去以及视图高度变化时 它还会回流并调整大小 保持大致恒定的区域 我发现调用的是请求布局 http developer
  • 如何强制 iPython 使用旧版本的 Python?

    我正在运行 Ubuntu 8 10 使用开箱即用的 Python 2 5 从系统的角度来看这很好 但我需要 Python2 4 因为我在 Zope Plone 上进行开发 好吧 安装 python2 4 不是什么挑战 但我找不到一种 干净的
  • 限制进程组的CPU时间

    有没有办法限制进程组中花费的绝对 CPU 时间 以 CPU 秒为单位 ulimit t 10 my process看起来是一个不错的选择 但如果my processfork 后 进程组中的每个进程都有自己的限制 整个进程组可以通过每 9 秒