나는 cgroup을 더 잘 이해하고 cgroup을 적용하는 사용 사례를 이해하고 싶습니다.
cgroup은 다양한 애플리케이션의 우선 순위를 지정하는 좋은 방법입니까(즉, 특정 유형의 애플리케이션(예: 웹 서버)에 더 높은 우선 순위를 부여하는 것)?
답변1
용도가 많다cgroup. 시스템 관리 관점에서 가장 중요한 것은 리소스를 제한하는 것입니다. 전형적인 예는 CPU 액세스입니다. 예를 들어 그룹을 생성하고 sshd
무시할 수 없는 CPU 시간 공유를 제공하면(다른 그룹 또는 모든 정렬되지 않은 프로세스가 속한 기본값과 비교하여) CPU를 많이 사용하는 작업에 로그인할 수 있습니다. 기계가 작동 중입니다.
더 흥미로운 점은 이 "원격 액세스" 프로세스에 다른 프로세스보다 더 높은 CPU 공유를 제공하면 거의 즉시 로그인할 수 있다는 것입니다(ssh 데몬이 실행 중인 나머지 프로세스보다 우선하기 때문입니다). 상처 리소스는 필요한 경우에만 할당되므로 시스템의 전체 계산 강도입니다. 일반적으로 I/O(네트워크 포함) 우선순위와 함께 이 작업을 수행하려고 합니다. 그러나 John이 아래 설명에서 올바르게 지적한 것처럼 이러한 작업을 부주의하게 수행하는 것은 바람직하지 않습니다(예기치 않은 방식으로 다시 발생할 수 있음). 기억해야 할 중요한 점은 이러한 그룹이 기본적으로 상속된다는 것입니다. 즉, 이러한 SSH 세션에서 메모리/CPU 사용을 시작하고 싶지 않습니다. 그러나 이를 위해 프로세스가 시작될 때 cgroup에 프로세스를 할당하는 메커니즘이 있습니다.
또 다른 용도는 프로세스를 서로 격리하는 것입니다. 최신 Linux 커널의 다른 기능(네임스페이스 격리)과 결합하여 운영 체제 수준 가상화를 만드는 데 사용됩니다.LXC(리눅스 컨테이너).
이 외에도 다양한 통계 및 제어 작업(특정 프로세스 그룹 동결, 특정 CPU 코어에 할당 등)을 수행할 수 있습니다.
더 많은 정보를 찾고 있다면 여기에 있는 두 링크가 합리적인 출발점이 될 것입니다. Documentation/cgroups
Linux 커널 소스 트리에서 디렉터리를 확인할 수도 있습니다 .