하나의 프로세스에 대해서만 스왑을 끄고 싶습니다. 다른 프로세스의 경우 교환은 평소대로 작동합니다.
이를 달성하기 위해 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