
sshd
コンピュータにメモリが不足し、時々動作を停止する開発サーバーがあります。はい、メモリが不足しているため、現在はアップグレードが実行可能なオプションではありません。私がしたいのは、マシンに「好きなようにしますが、20MBと少しのCPUを別に残してくださいsshd
!」と言うことです。
では、どうすればいいですか?
答え1
以下を使用して同様の結果を得ることができます。cgroupそしてメモリリソースコントローラ。
私はすべてのリソース消費タスクを制限された(CPUとRAM)に配置し、制限されないように「外部」に保存するcgroup
ことを考えています。sshd
(スワップファイルの形式でも、より多くのスワップを追加するのが良い選択かもしれません。)
答え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を作成し、制限を設定するプロセスを開始します。成功すると、CPU の 50% と使用可能メモリーの 1G が割り当てられた 2 つの cgroup が生成されます (実際に使用可能なメモリー量がどれくらいかはわかりません。 この例では 2G と仮定)。これで、ルートグループのすべてのタスク(つまり、システムで実行されているすべてのプロセス)をnosshd cgroupに移動するだけです。
cgroup]# cat tasks >> nosshd/tasks
cgroup]# echo > tasks
その後、プロセスのPIDを取得してsshd
sshd作業ファイルに移動します。
cgroup]# echo $PID >> sshd/tasks
お父さん、もう終わりました。今sshdのCPUは常に50%で、メモリは1Gなので安心してください。
答え3
renice
より高い優先順位を取得したり、sshd
会計を確認したりするために使用されます。 (acct) - >これでユーザーのリソースを設定できるので、sでsshdを実行してください。