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가 할당된 두 개의 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를 실행하세요.