스왑 파일이 작동 할 수있는 최대 크기가 있습니까?


8

내가 아는 한, 스왑 파일의 이론적 한계는 32 비트 또는 64 비트 시스템의 사용 여부에 따라 미친 것입니다.

내 1TB 내장 HDD에 충분한 공간이 있기 때문에 평균이 낮은 4GB RAM 64 비트 시스템에서 16GB 스왑 파일을 만들었습니다.

그러나 큰 스왑 파일은 실제로 속도 / 성능에 차이가 있습니까?



2
스왑을 사용하는 경우 IMO 더 큰 스왑 파일이 아닌 더 많은 RAM이 필요합니다
Panther

1
HDD를 사용하는 경우 대신 zram을 사용하고 HDD 스왑의 우선 순위를 낮추어야합니다. 종류에 따라 당신이 4기가바이트처럼 사용하기 때문에 그렇게 큰 스왑 파티션은 시스템 크롤링에 느린 있었다하지 도움 교환합니다
phuclv


스왑 파일을 리콜하는 한 어느 정도의 실제 RAM이 소비됩니다 (스왑 파일 크기의 1 % 미만이라고 생각합니다). 따라서 스왑 파일이 너무 크면 메모리 소비로 인해 성능이 저하 될 수 있습니다. 그러나 합리적인 크기의 스왑 파일의 경우 문제가되지 않습니다.
kasperd

답변:


7

각각 최대 40 억 (2 ^ 32) 페이지로 최대 32 개의 스왑 영역 (파일 또는 파티션)을 가질 수 있습니다. 여기서 "페이지"는 기존 (예 : x86 또는 x86_64) 시스템에서 4kB이지만 다른 시스템에서는 더 클 수 있습니다. 아키텍처 또는 큰 페이지를 특별히 구성한 경우.

이는 스왑 영역 당 이론적으로 최대 16TB 및 최대 32 개의 스왑 영역을 제공합니다. 이에 도달하기 전에 적용되는 다른 제한 사항이있을 수 있지만 이는 사용자를 위해 mkswap만들 수 있는 교환 영역만큼 큽니다 .

원하는만큼, 실제로 사용하는 최대 값을 초과하는 스왑 영역은 시스템 성능이나 안정성에 영향을주지 않습니다. 트릭은 정상 또는 비정상 상황에서 발생할 수있는 최대 사용량을 추정하고이를 스왑 파일 크기로 사용하는 것입니다.

작성 시점에서 시스템이 매우 비정상적이지 않으면 실제 메모리 크기보다 약 4GB보다 큰 스왑 공간을 사용하지 않을 것입니다. 한 번에 한 사람이 사용하는 데스크탑 시스템과 같은 일반적인 시스템에서는 실제 메모리가 더 큰 경우에도 최대 6GB에서 8GB까지 중지 할 수 있습니다.


6

속도 나 성능면에서 차이가 없습니다. OOM 킬러가 프로세스 회수를 시작하여 메모리를 회수하기 전에 최대 20GB의 가상 메모리를 사용할 수 있습니다.

더 나은 성능을 원한다면 :

  • swappiness자주 4GB 이상을 사용하지 않으면 감소
  • RAM 추가
  • SSD로 전환하고 스왑 파일을 넣습니다.

메모리 블록을 교체해야하는 경우가 많으면 SSD의 쓰기주기가 매우 빠르기 때문에 SSD의 아키텍처와 쓰기주기가 제한되어 있으므로 SSD를 사용하는 것이 좋습니다. 스왑 메모리가 필요할 때만 SSD를 사용하는 것이 좋습니다.
Videonauth

11
@Videonauth : "SSD의 쓰기주기를 매우 빠르게 사용하십시오": 모든 종류의 반 정도의 최신 SSD는 SSD의 전체 용량을 수년 동안 계속 쓸 수 있습니다 . 귀하의 조언 2010 년에 정확했지만, 구식입니다. 소비자 급 256GiB Samsung SSD 840도 2 년 이상 하루100GiB의 쓰기를 유지할 수 있습니다 .
AlexP

RAM이 많은 경우 스왑 피스를 줄이면 RAM이 제한되어있는 것보다 차이가 훨씬 줄어 듭니다. 실제로 많은 양의 RAM을 설치하면 스왑을 피할 수있을만큼 충분한 경우 여분의 스왑을 조정할 수 있습니다. 스왑 파티션은 안정성을 위해 "경우에 따라"사용하지 않는 시간의 99.9 %를 유지하며 뛰어난 성능을 유지합니다.
thomasrutter

1
또한 제한된 SSD 쓰기주기에 관한 문제는 10 년 이상 사실이 아니기 때문에 실제로이 FUD를 불러야 할 때입니다. AlexP가 이미이 문제를 해결 했으므로이 설명이 너무 중복되어 죄송하지만 밑줄을 긋습니다. SSD는 있습니다 좋은 쓰기 무거운 응용 프로그램.
thomasrutter

1
SSD의웨어 레벨링은 2008 년경에 문제가되었습니다 ( 2008 용지 | 2009 Anandtech 기사 ). "정상적인 소비자 가격대의 노트북은 2008 년에도 SSD와 함께 제공되었습니다"SSD는 너무 비싸고 실제로 표준이 아니 었습니다.
thomasrutter

3

Gilles답변에 따르면

... 이전에는 2GB 스왑 크기 제한이 있었지만 (대부분의 32 비트 플랫폼에서) 몇 년 동안은 그렇지 않았습니다. 2.2 커널 시리즈의 어느 시점에서 제한이 제거되었습니다.

또한 그는 다음에 대한 매뉴얼 페이지를 인용합니다 mkswap.

스왑 영역의 최대 유용한 크기는 아키텍처와 커널 버전에 따라 다릅니다.

에서 리눅스 / swap.h 라이브러리MAX_SWAPFILES너무 분명히 명확한 영역 중 하나없는 그러나 것을, 커널 수준에서 스왑 파일의 수에 제한이 진입. 링크 된 문서에 따르면 :

"type"의 6 비트는 MAX_SWAPFILES 제한 32 대신 32 비트 아키텍처에 최대 64 개의 스왑 영역이 존재할 수 있어야합니다.

내가 이해하는 것은 32 비트 아키텍처에서 최대 64 개의 스왑 파일을 가지고 있다는 것입니다. 그러나 문서에서 64 비트 아키텍처에서 발생하는 사항에 대해서는 언급하지 않았습니다. 또한 이 경우 스왑 파일을 만들려는 OP의 노력은 30 번째 항목에서 실패했습니다.

스왑 파티션의 경우 이전에 언급 한 통계 외에 커널에 제한이없는 것으로 보이지만 파티션 수는 여전히 기본 BIOS 및 디스크 레이아웃에 의해 제한됩니다 .


2

이 답변은 Ubuntu 18.04에 적합하지 않을 수 있습니다 (댓글에서 지적한 @Chai T. Rex 덕분에).

어쨌든 이전 버전의 경우 여기에 있습니다 (아직 제안 된 업데이트 LTS> LTS가 없으므로 여전히 관련이 있습니다).

파일이 아니라 파티션이며, 예를 들어 스왑 파이로 인해 수행됩니다.

swappiness 매개 변수는 커널이 프로세스를 실제 메모리에서 스왑 디스크로 옮기는 경향을 제어합니다. 디스크가 RAM보다 훨씬 느리기 때문에 프로세스가 메모리에서 너무 적극적으로 이동하면 시스템 및 응용 프로그램의 응답 시간이 느려질 수 있습니다.

따라서 기본적으로 스왑 파티션이 보유한 RAM보다 훨씬 큰 경우 시스템이 더 많이 스왑하여 일반적인 속도 저하를 초래합니다.


4
스왑 파일이 현재 있으며 18.04를 처음 설치할 때 파티션 대신 기본값입니다.
차이 티 렉스

1
나는 스왑의 동작이 파티션이나 파일에 의해 지원 되더라도 거의 동일하게 유지된다고 가정합니다. 여러 개의 스왑 파일 및 / 또는 파티션을 동시에 가질 수도 있습니다. 어쨌든, 여전히 충분한 RAM이 남아있는 동안 더 많은 스왑이 부정적인 영향을 미칠 것이라고 생각하지 않습니다.
바이트 사령관

나는
똑같다고

스왑 파티션과 스왑 파일이 있습니다. 스왑 파티션은 동일한 PC (듀얼 부팅 또는 트리플 부팅)에 둘 이상의 Linux 설치에서 사용할 수 있습니다. 스왑 파일을 조각화 할 수있는 전체 디스크의 경우 스왑 파티션이 더 좋습니다. ... 스왑 파일은 조각화를 피하기 위해 전체 디스크가 아닌 디스크에 만들어지면 스왑 파티션만큼 잘 작동합니다. – Devon van Schoor j
Devon van Schoor

2

스왑 파티션을 임의로 늘리면 속도 나 성능에 큰 차이가 없습니다.

스왑과 관련하여 swappiness하드 드라이브 유형 (SDD 또는 HDD)과 같은 성능에 영향을 줄 수있는 몇 가지 요소가 있습니다 .

스왑은 상당히 느리고 스왑이 증가하면 성능이 저하됩니다. 그러나 RAM이 충분하지 않은 경우에만 영향을 미칩니다. 그러나 스왑이없는 것이 좋습니다. 스왑 파티션 크기를 RAM보다 두 배 크게 만드는 것이 좋습니다.


5
그 추천은 구식입니다. 32GB 또는 64GB RAM이 장착 된 최신 시스템에는 64GB 또는 128GB 스왑이 필요하지 않습니다.
phuclv

3
LưuVĩnhPhúc 나는 요즘 2GB의 스왑보다 더 많은 사용하지 않을 @ ...
el.pescado

2GB는 매우 낮은 것 같습니다 ... 가상 머신이나 게임은 실제로 2GB 이상의 스왑을 매우 빠르게 채울 수 있습니다. 4 ~ 8GB의 스왑은 모든 양의 램에서 잘 작동한다고 생각합니다. 8GB 이상이 필요한 경우 더 많은 램을 추가해야합니다.
Germain

0

스왑 파일 또는 스왑 파티션에는 실제로 제한이 없다는 사실에 도달했습니다. 또한 16GB 스왑 파일은 상당히 크지 만 크기는 속도에 영향을 미치지 않습니다.

그러나 내가 수집하는 것은 속도에 영향을 미치는 것은 실제 하드웨어와 달리 스왑 공간을 실제로 사용하는 시스템입니다.

이에 대한 나의 해결책은 스왑이 더 빠른 하드웨어가 아닌 과도하게 사용되지 않도록 높은 스왑 피스 값을 만드는 것입니다. 그래서 나는했다 :

sudo -s
nano /etc/sysctl.conf

파일에 추가 :

#vm.swappiness = 50

저장

sudo sysctl -p

새로 고침 (또는 방금 재부팅했을 수 있음)


#vm.swappiness = 50을 추가 /etc/sysctl.conf해도 아무런 효과가 없습니다 . 행 을 추가 #하면이 행이 주석이되어 제거합니다. 으로 교환을 확인할 수 있습니다 cat /proc/sys/vm/swappiness.
mook765

그러나 내가 설명한 방법이 효과가있었습니다. [cat / proc / sys / vm / swappiness]를 입력하면 50으로 출력됩니다.
Devon van Schoor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.