我有一个开发服务器,sshd
有时会因为机器内存不足而停止工作。是的,我们的内存不足,升级目前不是一个可行的选择。我想做的是告诉机器:“做你想做的事,但留出 20MB 和一些 CPU sshd
!”。
那怎么办呢?
答案1
答案2
哦,但是 cgroup 很简单:) 安装 libcgroup 软件包。创建/etc/cgconfig.conf:
mount {
cpu = /cgroup/cpu_and_mem;
cpuacct = /cgroup/cpu_and_mem;
memory = /cgroup/cpu_and_mem;
}
group sshd {
cpu {
cpu.shares="500";
}
cpuacct {
cpuacct.usage="0";
}
memory {
memory.limit_in_bytes="1G";
}
}
group nosshd {
cpu {
cpu.shares="500";
}
cpuacct {
cpuacct.usage="0";
}
memory {
memory.limit_in_bytes="1G";
}
}
启动cgconfig
将创建层次结构、cgroup 并设置限制的进程。如果成功,您将拥有两个 cgroup,它们都分配了 50% 的 CPU 和 1G 可用内存(不知道您的实际可用内存量是多少;假设本例中为 2G)。现在您只需将所有任务(即系统上运行的所有进程)从根组移动到 nosshd cgroup 中:
cgroup]# cat tasks >> nosshd/tasks
cgroup]# echo > tasks
然后你只需要获取进程的 PIDsshd
并将其移至 sshd 任务文件中:
cgroup]# echo $PID >> sshd/tasks
达达,你完成了。现在您可以放心,sshd 将始终拥有 50% 的 CPU 和 1G 内存。
答案3
用于renice
获得 的更高优先级sshd
,或检查会计。 (acct) -> 通过这个你可以为用户设置资源,所以用 s 运行 sshd