【问题标题】:GNU parallel: limit CPUs and RAM per JobGNU 并行:限制每个作业的 CPU 和 RAM
【发布时间】:2021-10-15 18:02:26
【问题描述】:

我有一个代码,例如

cat sample_name.list | parallel -j 5 --max-args=1 --progress --keep-order --results logs --joblog logs.txt echo {1}

我找不到帮助我限制每个作业分配的 CPU 数量和 RAM 数量的选项。

lscpu 我有 12 个 CPU 和 16Gb RAM;我想在每个工作中提供 2 个 CPU 和 1G RAM

有什么帮助吗?谢谢!

【问题讨论】:

  • 好的,谢谢!这是关于 RAM ......如果其他人有一些关于 CPU 的信息,我在这里。谢谢
  • 现代操作系统非常擅长动态调度内容。是否有充分的理由如此严格地划分事物而不是“顺其自然”?如果您真的愿意,可以在每个作业中设置处理器亲和性。

标签: parallel-processing cpu ram


【解决方案1】:

我会使用-j 50%

这将在 12 核机器上并行运行 6 个作业。这样每个作业将有 2 个核心。

不清楚如果作业使用超过 1 GB 的空间,您希望发生什么。

也许--memsuspend 1G 是您要找的?

当可用内存低于 2 GB 时,这将开始暂停作业。如果只有 1 GB 可用空间,则只允许运行一个作业。当作业释放更多内存时,暂停的作业将被恢复。

这里的想法是暂停的作业将被换出,从而释放内存。

如果您的程序运行很长时间且内存使用率很低,但在完成时需要大量内存,则它特别有用。在这里,您最好一次只希望一个作业处于完成状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 2018-05-03
    • 2017-05-27
    相关资源
    最近更新 更多