Systemd Slice 配置与管理

1. /etc/systemd/system/user-.slice 的参数和选项

/etc/systemd/system/user-.slice 文件用于配置每个用户的资源限制。下面是一个示例配置文件,并对每个参数进行中文注释。

示例配置文件与注释

[Slice]
# 设置 CPU 使用配额,每个用户最多使用 75% 的 CPU,相当于最多 60 个线程
CPUQuota=7500%

# 设置 CPU 权重,控制用户进程的 CPU 分配优先级,数值越高优先级越高
CPUWeight=200

# 限制进程只能运行在指定的 CPU 上,范围是 0 到 39
AllowedCPUs=0-39

# 限制用户最多使用 32GB 内存
MemoryLimit=32G

# 设置内存的软限制,如果超过此限制,系统会进行清理
MemoryHigh=16G

# 限制用户使用的最大交换空间
MemorySwapMax=4G

# 设置 IO 操作的优先级,数值越高优先级越高
IOWeight=500

# 限制每个设备的最大读带宽
IOReadBandwidthMax=/dev/sda 100M

# 限制每个设备的最大写带宽
IOWriteBandwidthMax=/dev/sda 50M

# 限制用户最多创建 1000 个任务(进程和线程)
TasksMax=1000

# 控制对设备的访问权限
DeviceAllow=/dev/sda rw

# 设置设备访问策略,可选值为 strict 或 closed
DevicePolicy=closed

# 设置停止进程的最大等待时间
TimeoutStopSec=30s

# 限制进程的最大运行时间
RuntimeMaxSec=1h

# 限制打开的文件描述符数量
LimitNOFILE=1024

# 限制进程的最大数量
LimitNPROC=512

# 限制可以锁定的最大内存量
LimitMEMLOCK=64M

2. 配置和管理 user-.slice

a) 创建或编辑 /etc/systemd/system/user-.slice 配置文件

  1. 创建或编辑 user-.slice 配置文件:
    sudo nano /etc/systemd/system/user-.slice
  2. 根据示例配置文件添加或修改参数。例如:
    [Slice]
    CPUQuota=7500%
    MemoryLimit=32G
    TasksMax=1000
    IOWeight=500
  3. 保存并退出编辑器。

b) 重新加载和启动/重启 Slice

  1. 重新加载 systemd 配置:
    sudo systemctl daemon-reload
  2. 启动或重启 user.slice
    sudo systemctl start user.slice
    sudo systemctl restart user.slice
  3. 如有需要,可以设置开机时自动启动:
    sudo systemctl enable user.slice

c) 监控和管理 Slice

使用 systemctl 命令来管理和监控 slice:

  • 查看 slice 状态:
    systemctl status user.slice
  • 停止 slice:
    sudo systemctl stop user.slice
  • 重启 slice:
    sudo systemctl restart user.slice

d) 查看详细的 Slice 信息

要查看特定用户 slice 的详细信息,可以使用:

systemctl show user-1000.slice

发表评论

匿名网友