RAM에서 스왑 파일로의 메모리가 어떤 Linux 스왑 프로세스를 기반으로하는 정확한 조건은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2029015

문제

내 서버에는 8gigs of RAM과 SWAP 파일에 대해 구성된 8GIG가 있습니다. 메모리 집중 앱이 실행 중입니다. 이 앱에는 피크로드가있어 스왑 사용량이 증가합니다. 약 1 공간의 스왑이 사용됩니다.

4GIG의 RAM과 8 공연 스왑 및 유사한 메모리 집약적 앱이있는 다른 서버가 있습니다. 그러나 여기서 스왑 사용은 매우 무시할 수 있습니다. 약 100MB.

나는 무엇이 있는지 궁금했다 정확한 조건 또는 a 거친 공식 Linux가 RAM에서 프로세스 메모리를 스왑 파일로 바꾸는 것을 기준으로합니다. 나는 그것의 교환 요인에 근거한 것을 알고 있습니다. 다른 것은 무엇입니까? 파일 크기를 바꾸시겠습니까? Linux 커널 문서/소스 코드에 대한 모든 포인터는 이것이 좋을 것입니다.

도움이 되었습니까?

해결책

나는 많은 사람들이 이것이하는 일에 대한 주관적인 설명을 게시하는 것을 보았습니다. 여기에 더 완전한 대답이 있습니다.

Post 2.6.28의 분할 LRU에서 Linux Swappiness는 두 LRU에 쌓인 압력을 결정하는 계산 된 분획을 임의로 수정하는 데 사용되는 승수입니다.

예를 들어, 무료 메모리가 남은 시스템에서 - 기존 메모리의 값은 '활성'으로 나열된 메모리의 속도와 페이지 후에 활성화되는 페이지의 속도에 따라 측정됩니다. 비활성 목록에 빠지게됩니다.

활성과 비활성 사이에 페이지의 많은 프로모션/강등이있는 LRU는 많은 사용에 있습니다.

일반적으로 파일 백업 스토리지는 메모리가 부족하고 자동으로 200의 수정자가 주어질 때 퇴거하기 위해 저렴하고 안전합니다 (이를 통해 파일 후원 메모리는 스왑 백작 메모리보다 200 배 더 가치가 없습니다. 분수.

Swappiness가하는 일은 메모리를 제출하기 위해 제공 한 Swappiness 번호 (기본 60)를 공제하고 Memory에 승수로 제공 한 Swappiness 값을 추가 하여이 값을 수정하는 것입니다. 따라서 기본 Swappiness는 익명의 메모리가 파일 메모리보다 80 배 더 가치가 있습니다 (파일의 경우 200-60, ANON의 경우 0+60). 따라서 모든 메모리를 사용한 일반적인 Linux 시스템에서 Page Cache는 익명 메모리가 Page Cache를 선호하기 위해 익명 메모리를 교환하기 위해 익명 메모리보다 80 배 더 활성화되어야합니다.

Swappiness를 100으로 설정하면 ANON은 100의 수정 자이고 파일 메모리는 100 (200-100)의 수정자를 제공합니다. 따라서 Page Cache를 제공하는 파일 무거운 시스템에서 ANON 메모리를 제공하는 것은 페이지 캐시만큼 활성화되지 않으면 ANON 메모리가 디스크로 바꾸어 추가 페이지 캐시를위한 공간을 만듭니다.

다른 팁

Linux (또는 다른 OS)는 메모리를 페이지 (일반적으로 4KB)로 나눕니다. 이 페이지 각각은 메모리 덩어리를 나타냅니다. 이 페이지의 사용 정보는 기본적으로 페이지가 무료인지 또는 사용 중인지 (일부 프로세스의 일부), 최근에 액세스했는지 여부, 최근에 포함 된 데이터 (프로세스 데이터, 실행 가능한 코드 등)에 대한 정보를 포함합니다. ), 페이지의 소유자 등.

시스템이 메모리에서 낮게 실행되면 커널은 사용법에 따라 페이지 교체를 시작합니다. 정렬 된 wrt recency of ac

스와핑 중에 Linux 커널은 메모리에서 페이지를 핵무기시킬 때 트레이드 오프 할 내용을 결정하고 스왑으로 보냅니다. 파일 시스템 페이지를 너무 적극적으로 바꾸면 파일 시스템에서 더 많은 읽기가 필요할 때 해당 페이지를 다시 읽으려면 더 많은 읽기가 필요합니다. 그러나 프로세스 페이지를보다 적극적으로 교체하면 사용자가 교체 된 프로세스를 사용하려고 할 때 디스크에서 다시 읽어야하기 때문에 상호 작용이 손상 될 수 있습니다. 좋은 토론을보십시오 여기 이에.

Swappiness = 0을 설정하면 Linux 커널에 프로세스에 속하는 페이지를 교체하지 말라고합니다. 대신 swappiness = 100을 설정할 때 커널에 프로세스에 속하는 페이지를보다 적극적으로 교체하도록 커널에 알려줍니다. 시스템을 조정하려면 10 단계에서 Swappiness 매개 변수를 변경하고 "VMSTAT"명령을 사용하여 각 설정에서 성능 및 페이지를 모니터링하십시오. 최상의 결과를 제공하는 설정을 유지하십시오. 피크 사용 시간 동안이 테스트를 수행해야합니다. :)

데이터베이스 응용 프로그램의 경우 Swappiness = 0이 일반적으로 권장됩니다. (그럼에도 불구하고, 시스템의 다른 설정을 테스트하여 좋은 가치에 도달하십시오).

참조 :
http://www.linuxvox.com/2009/10/what-is-linux-kernel-parameter-vm-swappiness/
http://www.pythian.com/news/1913/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top