답변:
8GB의 물리적 RAM 인 큰 시스템에서는 일반적으로 2GB의 스왑을 할당합니다. 이들은 Oracle 또는 PostgreSQL을 실행하는로드 된 데이터베이스 서버입니다. 몇 년 동안, 나는 부하가 큰 상황에서도 스왑 히트를 본 적이 없습니다. 약 100-150 명의 사용자가 약 10,000 번의 SQL 읽기를 수행하고 분당 2,500 개의 쓰기를 수행합니다.
또한 스와핑 수준을 조정하여 스와핑을 방지하고 실행이 필요하지 않은 불필요한 프로세스를 끕니다. (커스텀 리눅스 빌드)
위에서 언급했듯이 Eddie와 마찬가지로 1x 물리적 RAM은 4GB 미만의 모든 경우에 적합한 경험입니다. 저는 Fortune-500 대기업의 대기업을위한 맞춤형 Linux 빌드를 수행하고 있으며 이들은 일반적으로하는 일이며, 지난 5 년 동안이 문제에 대해 상담해 본 적이 없었습니다.
더 큰 시스템 : 32GB 및 64GB RAM이 장착 된 64 비트 Linux는 Oracle 데이터베이스 서버이며, 일반적으로 Eddie와 같은 사항에 대해 2GB의 스왑을 유지합니다. 유휴 프로세스는 스왑 성 설정에 따라 스왑으로 이동됩니다.
영원한 질문입니다. 슬래시 도트 (SlashDot) 의 좋은 사람들 은 이것에 대해 얼마 전에 논의했습니다. 그들이 무엇을 말했는지 확인하십시오.
2 시간 동안 4GB 영화를 보면 많은 메모리 관리자가 모든 데이터를 캐시하려고 시도하는 것이 좋을 것이라고 결정합니다. 영화의 중간 쯤에 다른 모든 실행중인 프로그램은 한 시간 동안 사용되지 않았으며 4GB 이상의 파일을 캐싱하기 위해 안전하게 바꿀 수 있다고 생각합니다. 결과적으로 영화를 본 후 프로그램의 절반이 스왑 아웃되어 시스템이 느려져 스왑 파일 전체가 손상됩니다.
[매일 사용하고자하는 프로그램을 실행할 RAM이 충분한 경우]라면 스왑을 사용할 이유가 없습니다.
답변을 참조하십시오 고 메모리 시스템의 SWAP 공간은 얼마입니까? 귀하의 질문이 더 일반적이지만 몇 가지 지침을 제공합니다. 이것에 대한 의견은 다양하지만 일반적으로 1GiB 이상의 RAM을 가진 사람들은 스왑없이 또는 스왑으로 1x 메모리를 사용하는 것으로 보입니다.
너무 많은 RAM을 사용하여 스와핑을 수행하지 않을 계획이더라도 스왑으로 최소 1x 메모리를 사용하는 데는 가치가 있습니다. 예를 들어 디스크 나 IO 버퍼에 해당 메모리를 대신 사용할 수 있습니다.
내 VPS 공급자는 서버를위한 스왑 공간도 제공하지 않으며 서버 없이도 제대로 실행되고 있습니다.
직장에서 매일 보는 대부분의 서버는 스왑이 없습니다.
그러나 - 당신은 JVM을 실행하는 경우, 확인 하십시오 당신은 적어도 당신이 할만큼 스왑 공간으로 지금까지 설정 -Xmx
때문에의 알려진 문제 는 JVM과 함께.
요컨대, JVM이 현재 사용중인 것보다 더 많은 메모리를 필요로 할 때 (그러나 여전히 적중하지 않은 경우 Xmx
),
이것은 교환이 귀하보다 적 으면 Xmx
실패 할 수 있음을 의미합니다 .
버그 보고서를 인용하려면
가장 좋은 방법은이 오류가 발생한 시스템에서 스왑 크기를 늘리는 것입니다.
JVM으로 작업 할 때 안전하게 재생하려고하고 스왑을 동일한 물리적 메모리로 설정하십시오.
최신 하드 디스크 드라이브의 속도를 감안할 때 큰 스왑은 스 래싱에 대한 초대입니다. SSD는 이러한 추세를 거꾸로 할 수 있지만 디스크의 최대 전송 속도는 300MB / s이므로 2-4GB로 교체하는 데 시간이 오래 걸립니다.
예전에는 (예 : Linux 1.2, i386, SunOS 4.x) 아마도 5 ~ 15MB의 데몬 프로세스와 4-32MB의 RAM 및 I / 실제 성능에 영향을주지 않으면 서 O를 교체 할 수 있습니다. 사용자 프로그램에 2-3MB 정도의 RAM을 사용할 수 있기 때문에 더 좋습니다. 스와핑은 많은 의미가있었습니다.
이제 내 환경에서 대부분의 서버에는 단일 메모리가 많은 워크로드가 있고 RAM을 상당히 정확하게 추정 할 수 있습니다. 긴급 상황, 런 어웨이 프로세스 등을 위해 스왑이 있습니다.
예외는 노트북과 잘 수있는 워크 스테이션을위한 것입니다. 많은 OS에서 스왑 영역을 사용하여 일시 중단 이미지를 저장하며이 경우 스왑은 실제 메모리보다 커야합니다. suspend2 / tuxonice가있는 Linux에서는 디스크 일시 중단을 지원하기 위해 스왑 크기가 2xRAM이어야합니다.
요즘 32GB 또는 64GB 서버를 실행하는 경우 기본적으로 4GB의 스왑이 안전한 금액입니다. 이보다 큰 것은 사용 가능한 물리적 RAM이 너무 많기 때문입니다.
필요한 스왑 양을 알려주는 단일 알고리즘이 없습니다. 실제로 시스템을 지원하려는 최대 부하로 설정하고 실제로 사용하는 리소스의 양을 찾아야합니다. 스왑 파일을 적절히 설정하십시오.
물리적 RAM의 경우 시스템을 처리 할 실제 "크루즈"로드에 배치하고 그에 따라 구매해야합니다. 지연 시간이 짧은 시스템의 경우 크루즈로드 내부에서 전혀 스와핑하지 않아야합니다 (스왑이 할당되지 않았거나 사용 중일 때와 동일하지 않음). 하우스 키핑을 수행하는 시스템 유틸리티가 거의 사용되지 않아 스왑이 약간 발생할 수 있습니다. 하지만 대체로 가능한 한 스와핑이 적어야합니다.
물론 저렴한 가격으로 성능을 교환 할 수 있습니다.