5.5. 가상 메모리 튜닝

가상 메모리는 프로세스, 파일 시스템 캐시, 커널에 의해 소모됩니다. 가상 메모리 사용률은 다음과 같은 매개 변수에 의해 영향을 받을 수 있는 여러 요소에 따라 달라집니다:
swappiness
0에서 100의 값으로 시스템이 스왑하는 정도를 제어합니다. 값이 높으면 시스템 성능에 우선 순위를 두고 물리적 메모리가 활성화되지 않은 경우 메모리에서 프로세스를 적극적으로 스왑합니다. 값이 낮으면 상호 작용에 우선 순위를 두고 가능한 오래동안 물리적 메모리에서 프로세스 스왑을 피하기 때문에 응답 지연을 감소시킵니다. 기본값은 60입니다.
min_free_kbytes
시스템 전체에 걸쳐 빈 공간으로 두는 최소 크기 (KB)입니다. 이 값은 각각의 낮은 메모리 영역에서 워터마크 값을 계산하는데 사용되며 그 후 그 크기에 비례하여 저장된 빈 페이지 수를 할당합니다.

시스템을 손상시킬 수 있는 극단적인 값

이 매개 변수를 설정할 때 주의하십시오. 값이 너무 낮거나 너무 높으면 시스템을 손상시킬 수 있습니다.
min_free_kbytes를 너무 낮게 설정하면 시스템이 메모리 회수를 실행하지 못할 수 있습니다. 이로 인해 시스템이 중단되고 메모리 부족으로 인해 여러 프로세스가 종료될 수 있습니다.
하지만 이러한 매개 변수를 너무 높은 값 (총 시스템 메모리의 5-10%)으로 설정하면 바로 시스템 메모리 부족을 초래하게 됩니다. Linux는 캐시 파일 시스템 데이터에 사용 가능한 모든 RAM을 사용하도록 설계되어 있습니다. min_free_kbytes 값을 높게 설정하면 시스템이 메모리를 회수하는데 너무 많은 시간을 소모하게 됩니다.

dirty_ratio
백분율 값을 정의합니다. 더티 데이터의 Writeout은 (pdflush를 통해) 더티 데이터가 총 시스템 메모리의 이러한 퍼센트를 차지하는 때에 시작됩니다. 기본값은 20입니다.
dirty_background_ratio
백분율 값을 정의합니다. 더티 데이터의 Writeout은 (pdflush를 통해) 더티 데이터가 총 메모리의 이러한 퍼센트를 차지하는 때에 백그라운드에서 시작됩니다. 기본값은 10입니다.
drop_caches
이 값을 1, 2, 3 중 하나로 설정하면 커널은 페이지 캐시와 슬랩 캐시의 다양한 조합을 드롭하게 됩니다.
1
시스템은 모든 페이지 캐시 메모리를 비활성화하여 해제합니다.
2
시스템은 사용되지 않는 모든 슬랩 캐시 메모리를 해제합니다.
3
시스템은 모든 페이지 캐시 및 스랩 캐시 메모리를 해제합니다.
이는 비파괴적인 작업입니다. 더티 개체가 해제될 수 없으므로 이 매개 변수의 값을 설정하기 전 sync를 실행하는 것이 좋습니다.

중요

프로덕션 환경에서 drop_caches를 사용한 메모리 해제는 권장되지 않습니다.
튜닝하는 도중 이러한 값을 일시적으로 설정하려면 proc 파일 시스템에서 해당 파일에 원하는 값을 echo 명령으로 실행합니다. 예를 들어, swappiness를 일시적으로 50으로 설정하려면 다음을 실행합니다:
# echo 50 > /proc/sys/vm/swappiness
이 값을 영구적으로 설정하려면 sysctl 명령을 사용해야 합니다. 보다 자세한 내용은http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/ 운용 가이드에서 참조하십시오.


+ Recent posts