다양한 포럼에서 swappiness에 대해 읽었고 비디오를 보았습니다. 많은 사람들은 데스크탑 사용자가 swappiness 값을 60 (기본값) 이하로 낮추는 것이 좋다고 말했습니다. 일부는 60이 서버에 적합하다고 언급했습니다. 정확히 왜 내가 그것을 낮추는 것이 좋을 것이며 왜 60이 서버에 좋습니까? 답을 찾으려고 했지만 (예를 들어 여기 를 보았습니다 ) 이해할 수 없었습니다. ... 간단한 용어를 사용하십시오 : D
다양한 포럼에서 swappiness에 대해 읽었고 비디오를 보았습니다. 많은 사람들은 데스크탑 사용자가 swappiness 값을 60 (기본값) 이하로 낮추는 것이 좋다고 말했습니다. 일부는 60이 서버에 적합하다고 언급했습니다. 정확히 왜 내가 그것을 낮추는 것이 좋을 것이며 왜 60이 서버에 좋습니까? 답을 찾으려고 했지만 (예를 들어 여기 를 보았습니다 ) 이해할 수 없었습니다. ... 간단한 용어를 사용하십시오 : D
답변:
당신의 전제는 잘못되었습니다. '서버에 적합'스왑 성 값은 없습니다.
스 와이프 스는 수행되는 스와핑의 양, 특히 얼마나 적극적으로 스왑 하는가입니다. 내 서버의 경우 swappiness는 0에 가깝습니다. 모든 메모리가 충분하다는 것을 확신합니다. '최고의 서버'가치는 없습니다. 기본값은 60이며 사용 및 사용 가능한 메모리에 따라 "값"이 있습니다.
때때로 LOADS의 메모리를 사용하는 서버가있는 경우 기본값보다 높은 서버를 가질 수 있지만 일부 서버 (데이터베이스 서버?)는 가정용 컴퓨터보다 낮은 수준으로 유지하려고 할 수 있습니다.
교환 가치는 사람들을 혼란스럽게하는 방식으로 조정됩니다. 그들은 0-100의 범위를 가지므로 실제로 유효 최소값이 약 50 일 때 퍼센트를 생각합니다.
대략 60은 메모리 사용량이 약 80 %에 도달 할 때까지 스왑하지 않음을 의미하며 캐시 등에는 20 %가 남아 있습니다. 50은 메모리가 부족할 때까지 기다리는 것을 의미합니다. 값이 낮을수록 동일하지만 다른 방법으로 메모리를 확보하려고하면 공격성이 증가합니다.
http://lwn.net/Articles/83588/ 에서 잘 설명 하십시오.
swappiness 설정은 특정 시나리오에서 Linux가 스왑에 대한 이점 / 단점을 계산하는 방식을 조정 한 것입니다. 스왑이 높을 경우 시스템이 필요하지 않을 때 스왑이 발생하지 않으며 스왑이 적을 경우 스와핑을 완전히 비활성화하지 않으면 시스템이 스왑 할 수 없습니다.
기본 스왑 피스 60 정도는 할당되지 않은 프로그램 메모리가있는 동안 캐시 메모리를 할당하기가 너무 힘들지 않도록하여 시스템의 성능을 보장하는 매우 좋은 타협입니다.
모든 프로세스에 캐시가 많고 캐시가 많은 경우 (일반적으로 실제 RAM이 많은 경우), 스와핑은 문제가되지 않습니다. 스와핑 문제를 해결하는 데 선호되는 방법은 프로세스의 RAM 사용을 줄이거 나 물리적 RAM을 늘리는 것입니다. 실제로 필요한 것이 더 많은 RAM이면 스왑을 줄이면 부정적인 영향을 미칩니다.
매우 비슷한 질문에 쓴 답변을 참조하십시오.
발췌 :
대부분의 사람들이 교체율을 10-20으로 줄 이도록 권장하는 이유는 무엇입니까?
대부분의 경우 교환 = 나쁜 것으로 생각하고 교환을 줄이지 않으면 시스템이 실제로 필요하지 않을 때 교환합니다. 둘 다 사실이 아닙니다. 사람들은 스와핑을 시스템이 다운되는 시간과 연관 시키지만 시스템은 다른 방식이 아닌 스왑 다운 되기 때문에 스와핑 됩니다. 스와핑이 눈에 띄는 성능 패널티를 가질 수있는 특정 시간이 있다는 것은 사실이지만, 시스템은 스왑하기로 결정할 때 이미이를 고려했을 것입니다. 그렇게하지 않으면 시스템 성능이나 안정성이 전반적으로 더 큰 패널티가 될 것이라고 결정했을 것입니다. 나중에 눈에 띄게됩니다. 전반적으로 기본 설정은 최상의 전체 성능과 안정성을 가져야합니다. 기본값을 그대로 두는 것이 좋습니다.
...
원활하게 실행되는 캐시를위한 공간이 충분하지 않은 충분한 메모리를 사용한 후에는 Linux에서 사용되지 않는 일부 응용 프로그램 메모리를 RAM에서 다시 할당 할 수 있습니다.
그러나 명확한 컷오프에 따라이 작업을 수행하지 않습니다. 일정 비율의 할당량에 도달하면 Linux가 교환을 시작하는 것과 다릅니다. 다소 "퍼지"알고리즘이 있습니다. "메모리 할당에 대한 압력이 얼마나 많은지"에 의해 가장 잘 설명 할 수있는 많은 것들이 고려됩니다. 새 메모리를 할당해야하는 "압력"이 많으면 더 많은 공간을 확보하기 위해 일부 메모리를 교체 할 가능성이 높아집니다. "압력"이 적 으면 이러한 기회가 줄어 듭니다.
시스템에는 "스왑"설정이있어이 "압력"계산 방법을 조정할 수 있습니다. 일반적으로 이것을 전혀 변경하지 않는 것이 좋으며, 절대로 변경하지 않는 것이 좋습니다. 스와핑은 전반적으로 매우 좋은 일입니다. 가끔 수행되는 성능 불이익은 광범위한 작업에 대한 전반적인 시스템 응답 성과 안정성의 향상으로 상쇄됩니다. 스왑 성을 줄이면 실제로 유용 할 수있는 경우에도 캐시 메모리의 양이 다른 것보다 약간 줄어 듭니다. 따라서 캐시가 적고 메모리를 사용하지 않는 응용 프로그램이 메모리를 차지하기 때문에 일반적으로 컴퓨터 속도가 느려질 수 있습니다. 이것이 스왑과 관련된 특정 문제에 대한 충분한 트레이드 오프인지 여부는 전적으로 귀하에게 달려 있습니다.
시스템이 다운되거나 크게 스왑되면 어떻게됩니까?
많은 사람들이 디스크를 많이 쓰러 뜨리고 많은 스왑 공간을 사용하고 스왑을 비난하는 시스템을 살펴볼 것입니다. 그것은 잘못된 접근 방식입니다. 스와핑이이 극한에 도달하면 시스템의 메모리가 매우 부족하며 스와핑만으로 프로세스가 무작위로 충돌하거나 종료되는 것을 막을 수 있습니다. 스와핑이 없으면이 상황에서 프로세스가 중단되고 종료됩니다. 스와핑은 더 깊은 문제의 증상입니다. 모든 작업을위한 충분한 메모리가있는 시스템에서 스와핑은 메모리가 효율적인 방식으로 사용되도록 보장하며, 휴면 프로세스를 통해 캐시에 메모리를 할당하여 가치가있는 것으로 간주합니다. 스와핑이 끊임없이 디스크를 스 래싱하는 시스템에서는 스와핑의 결함이 아닙니다.
디스크로 스왑 할 항목을 선택할 때 시스템은 실제로 사용되지 않거나 읽거나 쓰지 않는 메모리를 선택합니다. 그것은 대부분의 시간을 잘 선택하는 이것을 계산하기위한 매우 간단한 알고리즘을 가지고 있습니다.
...
그러나 스왑은 어떻게 시스템 속도를 높일 수 있습니까? 스와핑이 느려지지 않습니까?
RAM에서 스왑으로 데이터를 전송하는 작업은 느리게 진행되지만 커널이 전반적인 이점이 이보다 중요하다고 확신하는 경우에만 수행됩니다. 예를 들어, 응용 프로그램 메모리가 거의 캐시가 남지 않은 지점으로 올라가고 이로 인해 I / O가 매우 비효율적이라면 실제로 일부 메모리를 확보하여 시스템에서 훨씬 더 많은 속도를 얻을 수 있습니다. 데이터를 확보하기 위해 데이터를 교환하는 초기 비용 후.
/ubuntu//a/184221/54256 에서 전체 게시물을 읽으십시오.
스와핑은 이러한 모든 답변과 완전히 모순됩니다.
swappiness의 실제 작업은 https://gokulvasanblog.wordpress.com/2016/11/14/empathising-mammoths-mentality-a-study-on-linux-memory-management/ 기사에 설명되어 있습니다.
모호성은 Andrew Morton의 진술에 의해 확증되었습니다 : https://lwn.net/Articles/83593/
사람들이 "스왑 피스를 0으로 설정했는데 내가 원하는 것을하지 않았다"고 말할 때까지 손가락을 귀에 대고 "la la la"를 부를 것입니다.
그것의 유용한 희망