限制 RHEL8 可用的 RAM

限制 RHEL8 可用的 RAM

我们需要在具有 32Gb RAM 的服务器上运行一些测试。

我们可以访问的所有服务器都有 64GB,我们无法物理地改变这一点。

是否有某种方法可以告诉 RHEL 仅使用固定数量的 RAM(少于安装的数量)?

答案1

使用核参数mem=32G

mem=nn[KMG] [KNL,BOOT]强制使用特定数量的内存

当内核无法看到整个系统内存或用于测试时要使用的内存量。[X86] 用作限制最大地址。与 memmap= 一起使用可避免物理地址空间冲突。如果没有 memmap=,PCI 设备可能会被放置在未使用的 RAM 的地址上。

答案2

是的,您可以在物理 RAM 超过所需数量的服务器上分配固定数量的 RAM 用于测试目的。为此,您可以使用 Red Hat Enterprise Linux (RHEL) 中的控制组 (cgroups) 来限制特定进程或进程组可以使用的内存量。

以下是有关如何限制特定进程或进程组的 RAM 使用量的分步指南:

  1. 安装并启用cgroup-tools

    如果还没有,你可能需要安装该cgroup-tools包:

    sudo yum install libcgroup-tools
    
  2. 创建内存 Cgroup:

    为您的测试流程创建一个新的 cgroup:

    sudo cgcreate -g memory:/mytestgroup
    

    替换/mytestgroup为所需的 cgroup 名称。

  3. 限制内存使用量:

    设置 cgroup 的内存限制。例如,将其限制为 16GB RAM:

    sudo cgset -r memory.limit_in_bytes=16G mytestgroup
    

    将限制调整为您要为测试分配的 RAM 数量。

  4. 将您的流程移至 Cgroup:

    您需要将要限制的进程移至 cgroup。您可以通过为进程指定 cgroup 或使用命令来执行此操作cgexec。例如,要在mytestgroupcgroup 中运行命令:

    sudo cgexec -g memory:mytestgroup your_test_command
    

    将其替换your_test_command为您要在测试中运行的实际命令。

  5. 监视内存使用情况:

    您可以使用以下命令监视 cgroup 及其进程的内存使用情况cgget

    sudo cgget -g memory:mytestgroup
    

    这将显示有关内存使用情况的信息,包括内存限制和当前使用情况。

  6. 清理:

    当测试完成后,你可以删除 cgroup:

    sudo cgdelete memory:mytestgroup
    

    这将删除 cgroup 并释放内存限制。

通过执行这些步骤,您可以有效地限制特定进程或进程组在物理 RAM 超过测试所需数量的服务器上可以使用的 RAM 量。这样您就可以隔离和控制分配给测试进程的资源,而无需物理更改服务器的硬件配置。

相关内容