cgroup을 사용하여 하나의 프로세스에 대해서만 스왑을 끄시겠습니까?

cgroup을 사용하여 하나의 프로세스에 대해서만 스왑을 끄시겠습니까?

하나의 프로세스에 대해서만 스왑을 끄고 싶습니다. 다른 프로세스의 경우 교환은 평소대로 작동합니다.

이를 달성하기 위해 cgroup을 어떻게 사용할 수 있습니까?

답변1

~에서커널 문서메모리 및 교환 가능성 정보:

5.3 swappiness

/proc/sys/vm/swappiness와 비슷하지만 그룹 계층에만 영향을 미칩니다.

cgroup을 따르는 Swappiness는 변경할 수 없습니다.
- 루트 cgroup(/proc/sys/vm/swappiness 사용).
- 아래의 다른 cgroup과 함께 계층적 cgroup을 사용합니다.
- 계층의 루트에서 cgroup 대신 계층을 사용하십시오.

Red Hat 고객 포털에서:

memory.swappiness

페이지 캐시에서 페이지를 회수하는 대신 이 cgroup의 작업에서 사용하는 프로세스 메모리를 교체하기 위한 커널 기본 설정을 설정합니다. 이는 전체 시스템에 대해 /proc/sys/vm/swappiness에 설정된 것과 동일한 방식으로 계산된 동일한 추세입니다. 기본값은 60입니다. 60보다 작은 값은 프로세스 메모리를 교체하려는 커널의 경향을 감소시키고, 60보다 큰 값은 프로세스 메모리를 교체하려는 커널의 경향을 증가시키며, 100보다 큰 값은 커널이 프로세스 메모리의 일부인 페이지를 교체하도록 허용합니다. . 이 cgroup에 있는 프로세스의 주소 공간입니다.

값이 0이라고 해서 프로세스 메모리가 스왑 아웃되는 것을 방지할 수는 없습니다. 시스템 메모리가 부족할 때 글로벌 가상 메모리 관리 로직이 cgroup 값을 읽지 않기 때문에 스왑 아웃이 계속 발생할 수 있습니다. 페이지를 완전히 잠그려면 cgroup 대신 mlock()을 사용하십시오.

:: 다음 그룹의 스왑 가능성은 변경할 수 없습니다.
* /proc/sys/vm/swappiness에 설정된 스왑 가능성을 사용하는 루트 cgroup.
* 아래에는 하위 그룹이 있는 cgroup이 있습니다.

편집하다: 설정 방법을 정확히 알고 싶다면 대부분의 다른 cgroup 속성처럼 설정할 수 있습니다.

 # cd /mnt/cgroup/<cgroupName>
 # cat memory.swappiness
 60
 # echo "59 " > memory.swappiness
 # cat memory.swappiness
 59

관련 정보