#!/bin/bash # 把 H3 权重的页缓存钉住:告诉内核 user.slice 下的 40 G 不许回收。 # 不钉的话,别的程序一申请大块内存,权重缓存就被丢掉, # 之后每次前向都要回机械盘 /dev/sdb 读 34.4 G,单条耗时会成倍涨。 # # 重跑安全。撤销:sudo rm /etc/systemd/system/user-.slice.d/h3-cache.conf && sudo systemctl daemon-reload set -e echo "需要 admin 密码(sudo 用的是你自己的密码,不是 root 的)" sudo mkdir -p /etc/systemd/system/user-.slice.d printf '[Slice]\nMemoryMin=40G\n' | sudo tee /etc/systemd/system/user-.slice.d/h3-cache.conf > /dev/null sudo systemctl daemon-reload sudo systemctl set-property user.slice MemoryMin=40G sudo systemctl set-property "user-$(id -u).slice" MemoryMin=40G echo echo "=== 生效情况(两行都应该是 42949672960,即 40 G)" grep -H . /sys/fs/cgroup/user.slice/memory.min grep -H . "/sys/fs/cgroup/user.slice/user-$(id -u).slice/memory.min" echo echo "=== 当前被保护的量" grep -H . /sys/fs/cgroup/user.slice/memory.current