2-4GB 시스템의 SWAP 공간은 얼마입니까?


53

2-4GB의 RAM이있는 새 Linux 시스템 (Debian)에서 스왑 할 크기를 어떻게 결정해야합니까? 스왑 공간이 정말로 필요합니까?


3
2-4GB는 5 년 후에 더 이상 메모리가 부족하지 않습니다.
fifi finance 17시

@KasperSouren 아니오, 그렇지 않습니다. 당시 공정한 금액이었습니다.
C. Ross

답변:


54

머신에서 얼마나 많은 스왑이 사용되는지 알아낼 수있는 방법이 많이 있습니다. 일반적인 제안은 2 x RAM, 1.5 x RAM, 1 x RAM, .75 x RAM 및 .5 x RAM과 같은 RAM을 기반으로하는 공식을 사용합니다. RAM의 양에 따라 여러 가지 수식이 달라집니다 (따라서 1GB의 RAM이있는 상자는 2 x RAM 스왑 (2GB)을 사용할 수 있지만 16GB의 RAM이있는 상자는 .5 x RAM 스왑 (8GB)을 사용할 수 있습니다.

고려해야 할 또 다른 사항은 상자가 사용될 것입니다. 상자에서 수많은 수의 동시 실행 프로세스를 실행하지만 상당수의 프로세스가 일정 시간 동안 유휴 상태가되면 스왑을 추가하는 것이 좋습니다. 적은 수의 중요 프로세스를 실행하려는 경우 스왑을 추가하는 것이 합리적입니다 (직관적으로 보이지만 잠시 후에 설명하겠습니다). 상자를 데스크탑으로 실행하는 경우 추가 스왑을 추가하는 것이 좋습니다.

스왑을 포함해야하는지 여부는 그렇습니다. 자신이하고있는 일 을 실제로 알지 않는 한 항상 스왑 공간을 포함 시켜야하며, 그럴만한 이유가 있습니다.

리눅스 커널이 작동하는 방식을 살펴보면, 스왑은 모든 물리적 메모리를 다 사용한 경우에만 사용되지는 않는다. Linux 커널은 활성화되지 않은 (휴면) 응용 프로그램을 가져오고 일정 시간이 지나면 응용 프로그램을 실제 메모리에서 스왑하도록 이동합니다. 결과적으로 해당 응용 프로그램이 필요할 때 응용 프로그램의 메모리를 스왑에서 RAM으로 다시 읽는 동안 일시적인 지연 (보통 1-2 초)이 발생합니다. 그리고 이것은 일반적으로 좋은 것입니다.

이를 통해 비활성 응용 프로그램을 "절전"상태로 설정하여 활성 응용 프로그램이 추가 RAM에 액세스 할 수 있습니다. 또한 Linux는 머신에서 사용 가능한 (할당되지 않은) RAM을 디스크 캐시로 사용하여 대부분의 (느린) 디스크 작업을보다 빠르고 반응 적으로 만듭니다. 비활성 프로세스를 교체하면 더 많은 디스크 캐시가 제공되고 시스템 전체가 더 빨라집니다.

마지막으로, 디스크 공간이 저렴합니다. 정말 싸다. 스왑을 위해 (상대적으로) 작은 공간 덩어리를 스 와이프하지 않는 이유는 전혀 없습니다. 머신에서 2GB-4GB의 RAM으로 실행 중이라면 아마도 스왑 공간을 적어도 RAM과 동일하게 설정했을 것입니다. 2GB 미만의 RAM이라면 여전히 2GB 이상의 스왑을 사용합니다.

업데이트 : 언급 된 훌륭한 의견으로 포함하고 잊어 버렸습니다. 랩톱이나 데스크탑을 실행하는 경우 '최대 절전 모드'(Suspend to Disk)로 설정 하려는 경우 항상 최소한 많이 원합니다. 메모리가 있으면 교환하십시오. 스왑 공간은 '절전'동안 RAM 내용을 컴퓨터에 저장하는 데 사용됩니다.


22
좋은 대답이지만 한 가지만 잊어 버렸습니다. 데스크톱 또는 랩톱 인 경우 스왑이 RAM 용량보다 큰지 확인하여 컴퓨터를 최대 절전 모드로 전환하십시오. 이렇게하면 스왑 할 RAM이 절약됩니다.
Sander Marechal

4
좋은 포스트. 샌더가 내가 추가 할 유일한 것으로 나를 이겼다. 하나의 추가 항목이지만 여러 드라이브가있는 경우 나머지 활성 파일 시스템이없는 드라이브에 스왑을 배치하면 충돌이 많지 않으므로 성능을 향상시킬 수 있습니다.
GreenKiwi

내가 같이 발견 지난 여름 당신이 자바 실행하는 경우, 당신은 상당한 스왑 공간이 필요합니다
워렌

사용자에게 100 % 가동 시간의 데스크톱 컴퓨터에서 최대 16GB / 32GB의 실제 RAM 용량 (최대 절전 모드)보다 훨씬 많은 RAM 용량이있는 경우에도 여전히 프로세스를 SWAP에 넣도록 요청 하시겠습니까? 용량에 거의 도달하지 않으면 RAM에 모든 것을 남겨두면 이점이있는 것 같습니다.
earthmeLon

1
@earthmeLon-여전히 약간의 스왑을 제안합니다. 요즘 디스크는 크고 저렴하기 때문에 스왑 할 수있는 몇 GB의 디스크 공간 손실은 무시할 수 있습니다. 스왑 공간이 있으면 예상보다 많은 RAM을 소비하는 경우 보험 정책이 적용됩니다.
Christopher Cashell


12

늦게 답변, 이것이 선택한 답변에서 거의 다뤄 졌다고 생각하지만 @ssapkota 에서 제공 한 답변에는 훌륭하고 쉽게 소화 할 수있는 정보가 있습니다 (아래 복사 / 붙여 넣기).

RedHat의 권장 사항은 다음과 같습니다. 권장 시스템 스왑 공간

동일한 링크에서 발췌 한 내용 :

과거 몇 년 동안, 권장 스왑 공간은 시스템의 RAM 용량과 비례하여 증가했습니다. 그러나 최신 시스템의 메모리 양이 수백 기가 바이트로 증가했기 때문에 이제 시스템에 필요한 스왑 공간의 양이 해당 시스템에서 실행되는 메모리 작업량의 함수라는 것을 인식하고 있습니다. 그러나 스왑 공간은 일반적으로 설치시 지정되며 시스템의 메모리 워크로드를 미리 결정하기 어려울 수 있으므로 다음 표를 사용하여 시스템 스왑을 결정하는 것이 좋습니다.

현재 테이블 (2012 년 12 월 기준) :

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

원본 테이블 :

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 

8

그것은 당신이하고있는 일에 꽤 달려 있습니다. 적절한 워크로드를 사용하면 16MB 또는 16384MB의 RAM이 있더라도 실제로 스왑 공간이 필요하지 않습니다. 실제로 대부분의 임베디드 Linux 장치는 어떤 것도없이 실행됩니다 (무엇으로 교체할까요?)

RAM 가격을 고려할 때 활성 계산에 스왑을 사용하지 않을 것입니다. 그래서 무엇이 남았습니까?

  1. 데스크탑에서는 스왑 공간이 디스크 일시 중단에 사용됩니다. 이 스왑 공간은 메모리 내용이 얼마나 잘 압축되는지에 따라 약 1 × RAM이어야합니다.
  2. 디스크 캐시를위한 공간을 확보하기 위해 비활성 작업을 RAM에서 제거
  3. 동일하지만 활성 프로세스가 힙 / 스택 대신이를 사용하도록 허용

(2)와 (3)은 작업량에 크게 의존합니다. 내 데스크탑에서는 다른 데스크탑에서 vims, xterms 등을 남기지 않고 4GB +를 (2) 쉽게 사용할 수 있습니다.

내가 실행하는 대부분의 서버에는 스왑 된 것이 거의 없으며 1-2GB의 스왑 (RAM 크기에 관계없이)이 정상으로 보입니다.


당신이 실행하는 경우 스왑 공간도 사용되는 것을 사라사와 자바를 실행하는 경우 스왑 공간을 할당하는 것을 잊지 마세요 다음 JVM을 활용!
워렌

@ warren : Tomcat 인스턴스가 있으며 각각 3GiB를 초과하지만 스왑은 사용하지 않습니다 (그리고 거대한 페이지를 사용하므로 스왑 할 수 없습니다). 무슨 말을하는지 잘 모르겠습니다.
derobert

지난 여름에 발생한 최소 및 최대 메모리 설정과 관련하여 JVM에 반 애매한 버그가 있습니다 ( antipaucity.com/?p=984 ). TL; DR - JVM에서의 OS의 메모리 요청마다, 메모리가 연속되도록 다시 RAM 자체로 판독하고, 새로운 메모리 청크를 얻는다 스왑 자체를 기록
워렌

@ warren : 좋아, Xmx와 Xms가 동일한 64 비트에서 OpenJDK를 실행하고 있습니다. 그러나 java가 어떻게 강제로 스왑을 할 것인지 잘 모르겠습니다. 유일한 syscall close가 될 madvise것입니다. 스왑을 추가하면 물론이를 방지 할 수 있지만 RAM도 추가됩니다. PAE가있는 32 비트 때문일 수 있습니까?
derobert

너무, 64 비트 JVM으로 발생 : 당신이있는 경우 XmsXmx같은 값으로 설정하지, 그것은 심하게 물린 수 있습니다 : 두 개의 + 주 동안 우리를 위해 주요 문제를 야기 우리는 마침내 그것을 아래로 추적 때까지
워렌

4

글쎄, 그것은 어떤 서비스와 응용 프로그램을 실행할 계획인지에 달려 있습니다. free -m으로 메모리 사용량을보고 시간이 지남에 따라 스왑 파티션을 조정할 수 있습니다.

주제에 대한 흥미로운 토론이 있습니다. 개인적으로 (그리고 그 토론을 읽은 후에) 나는 여전히 스왑을 위해 약 1GB를 남겨 둡니다.


2

데비안과 직접 ​​대화 할 수는 없지만 2GB 이상의 RAM을 사용하면 원래 2xRAM 방정식이 일반적으로 1xRAM으로 변경됩니다. 16GB RAM에 도달하면 제안이 다시 .75xRAM으로 낮아집니다.

물론, 나는 이것이 Solaris에 해당한다는 사실을 발견했으며 실제로 Oracle 설치에 사용되는 메트릭이므로 YMMV는 거기서 실행될 응용 프로그램에 따라 다릅니다.


2

나는 항상 RAM만큼 많은 스왑을 만듭니다. 언젠가 기계를 최대 절전 모드로 전환하려는 경우를 대비하여. 적은 작업으로도 가능하지만 그렇지 않은 경우도 있습니다.

요즘에는 HDD 공간이 저렴하므로 스왑 공간을 주저하지 않습니다.


2

스왑 공간은 즉시 메모리가 부족할 때 "패딩"의 역할을합니다.

프로세스가 사용 가능한 모든 RAM을 소비하면 일부 시스템은 매우 느리게 실행되지만 일반적으로 복구 할 수 있습니다. 또한 어떤 프로세스가 문제를 일으키는 지 쉽게 알 수 있습니다.


2
이것은 양날의 칼입니다. 가정용 PC에서 Firefox 2.x를 사용할 때 스왑을 제거했습니다. Firefox는 모든 메모리를 천천히 먹고 있었기 때문에 스왑을 완전히 사용할 수 없었습니다. 스왑하지 않고, 파이어 폭스 프로세스는 단순히 :) 커널에 의해 폐쇄되었다
wazoox

1

몇 년 동안 나는 Windows 컴퓨터의 경우 RAM만큼 많은 스왑이 있다는 규칙을 따랐습니다 ... Novell에서는 프린터가 더 많으면 스왑을 더 높게 조정합니다 ... 리눅스의 경우 규칙과 실습은 1GB였습니다. 가지고있는 2GB RAM마다 교체하십시오. 디스크의 앞면에 배치하여 더 빨리 액세스 할 수 있습니다.

  • 메일 / 스팸 게이트웨이 인 경우 RAM으로 두 번 교체를 사용합니다.
  • 그것이 * 서버라면 나는 전혀 스왑을 사용하지 않습니다
  • LAMP 서버 인 경우 1/2 규칙이 적용됩니다.

  • 마일리지는 애플리케이션 및 GUI 사용량에 따라 다릅니다.


실제로 디스크 중간 의 스왑 은 가장 빠르게 액세스 될 것이라고 생각합니다.
Eddie

0

1GB 스왑을 만들고 두 번째 사용되는 RAM을 더 구입합니다. 현대 컴퓨터에서는 실제로 스왑이 필요하지 않습니다. RAM이 너무 저렴합니다.


0

무엇을 위해 시스템을 사용하고 있습니까? 개인적으로 나는 스왑을 사용하지 않습니다. 512MB 또는 그 이상의 토큰을 사용하는 것이 있으면 상주하지만 오랫동안 비활성 상태이면 디스크에 넣을 수 있습니다.


0

스왑이 0이 아닌 시스템을 구성하려면 특별한 구성이 필요하기 때문에 작은 토큰 스왑 (일반적으로 256MB이지만 64MB를 수행했습니다)을 사용합니다.

디스크 공간은 저렴하지만 느긋합니다. 시스템이 스와핑을 시작하자마자 성능은 0입니다. 그리고 RAM은 더 이상 그렇게 비싸지 않습니다.

날 믿어 조금 더 느린 프로세서를 구입하고 더 많은 RAM을 구입하십시오. 3.0GHz 대신 2.8GHz를 사용하면 적어도 2GB RAM을 추가로 구매할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.