AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1116756
Accepted
James
James
Asked: 2022-11-28 14:51:45 +0800 CST2022-11-28 14:51:45 +0800 CST 2022-11-28 14:51:45 +0800 CST

在 AWS/GCP 上隔离 CPU:安装 cpuset 时出错

  • 772

我在 AWS/GCP 上有两个 32 vCPU 实例。我正在尝试设置 cpu 屏蔽,以便系统使用 CPU 0、1,而 cpus 2-31 被屏蔽并且仅由用户空间线程显式使用。

系统信息:

Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:    22.04
Codename:   jammy
$ cat /proc/filesystems | grep cpuset
nodev   cpuset

但是,当我尝试运行时cset shield,出现与安装有关的错误:

mount: /cpusets: none already mounted on /run/credentials/systemd-sysusers.service.
cset: **> mount of cpuset filesystem failed, do you have permission?

我深入研究了 cset 代码,失败的调用似乎是一个

$ sudo mount -t cpuset cpuset /cpusets
mount: /cpusets: cpuset already mounted or mount point busy.

/cpusets是一个新创建的文件夹,并且$ cat /proc/mounts | grep cpuset是空的——所以 cpuset 似乎没有安装在其他地方。

也许相关:

$ cat /proc/mounts | grep cgroup
cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot 0 0

我的猜测是 AWS/GCP 将 cpuset 用于管理程序或类似的东西。是否可以在 AWS/GCP 上隔离 cpus?我该怎么办?

amazon-web-services
  • 2 2 个回答
  • 140 Views

2 个回答

  • Voted
  1. Best Answer
    anx
    2022-12-04T19:00:40+08:002022-12-04T19:00:40+08:00

    您正在使用已经安装了 v2(“统一”)cgroups 的 systemd,所以它不是您管理控制组 - 它是 systemd。通过文件部分中的CPUAffinity= 和相关选项[Manager]/etc/systemd/system.conf.d/50-my-cpuset-options.conf告诉它这样做。然后,您可以CPUAffinity=为那些希望从全局默认值中免除的特定 unit.service 文件使用(空以重置,非空以添加)。

    您甚至可以使用 systemd API 通过systemctl --runtime set-property example.service ExampleOption=Value命令暂时(直到重新启动)修改已在运行的服务上的资源选项。使用它来确认生成的 cgroup 设置并衡量它如何影响您的系统性能。我想,如果不是破坏调度程序利用 100% CPU 的能力,而是提高其全部能力,那么在拥塞情况下,您会看到明显更好的系统可靠性,而不是全局默认值。更紧密地匹配您的优先级使用Nice=和IOSchedulingClass=那些您确实想要运行但不想影响系统其余部分的特定低优先级异步后台任务 - 但不要使用亲和力大锤。


    理论上,像cset这样的实用程序可以更新为与这样的 cgroup2 系统管理器交互,并提供与以前有效相同的抽象,同时在后台修改 systemdssystem.slice和单元默认值,但这个讨论听起来到目前为止还没有人这样做过。而且由于包罗万象的巨型 C 代码块提供了更丰富、有据可查且可以说更通用的控制内核已经学会的所有整洁的东西,因此可能不再需要这样做。

    • 2
  2. Kash
    2022-12-06T09:36:52+08:002022-12-06T09:36:52+08:00

    如前所述,systemd 创建了自己的 cgroup2 层次结构,根据我的需要,它不能很好地与 cset 配合使用。

    我将以下内容添加到 /etc/default/grub 中的 GRUB_CMDLINE_LINUX_DEFAULT 值中,以在 Ubuntu 22.10 上禁用此行为。

    完成后,该行看起来像这样:

    GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=false <your_other_params>"
    

    完成后,您需要以 root 身份运行:

    update-grub
    grub-install
    

    然后重启。重新启动后,我能够使用 CSET 成功屏蔽我的 Ryzen CPU 上的 CCX,并迁移所有用户空间和系统任务

    如果您需要更多背景知识,这里有我遇到的这个问题的更多参考资料: https ://github.com/systemd/systemd/issues/13477#issuecomment-528113009 https://github.com/lxc/lxd/issues/ 10441

    • 1

相关问题

  • 网络定价如何在云平台中准确运作?我应该如何避免专门的定价攻击?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve