내가 아는 한, 스왑 파일의 이론적 한계는 32 비트 또는 64 비트 시스템의 사용 여부에 따라 미친 것입니다.
내 1TB 내장 HDD에 충분한 공간이 있기 때문에 평균이 낮은 4GB RAM 64 비트 시스템에서 16GB 스왑 파일을 만들었습니다.
그러나 큰 스왑 파일은 실제로 속도 / 성능에 차이가 있습니까?
내가 아는 한, 스왑 파일의 이론적 한계는 32 비트 또는 64 비트 시스템의 사용 여부에 따라 미친 것입니다.
내 1TB 내장 HDD에 충분한 공간이 있기 때문에 평균이 낮은 4GB RAM 64 비트 시스템에서 16GB 스왑 파일을 만들었습니다.
그러나 큰 스왑 파일은 실제로 속도 / 성능에 차이가 있습니까?
답변:
각각 최대 40 억 (2 ^ 32) 페이지로 최대 32 개의 스왑 영역 (파일 또는 파티션)을 가질 수 있습니다. 여기서 "페이지"는 기존 (예 : x86 또는 x86_64) 시스템에서 4kB이지만 다른 시스템에서는 더 클 수 있습니다. 아키텍처 또는 큰 페이지를 특별히 구성한 경우.
이는 스왑 영역 당 이론적으로 최대 16TB 및 최대 32 개의 스왑 영역을 제공합니다. 이에 도달하기 전에 적용되는 다른 제한 사항이있을 수 있지만 이는 사용자를 위해 mkswap
만들 수 있는 교환 영역만큼 큽니다 .
원하는만큼, 실제로 사용하는 최대 값을 초과하는 스왑 영역은 시스템 성능이나 안정성에 영향을주지 않습니다. 트릭은 정상 또는 비정상 상황에서 발생할 수있는 최대 사용량을 추정하고이를 스왑 파일 크기로 사용하는 것입니다.
작성 시점에서 시스템이 매우 비정상적이지 않으면 실제 메모리 크기보다 약 4GB보다 큰 스왑 공간을 사용하지 않을 것입니다. 한 번에 한 사람이 사용하는 데스크탑 시스템과 같은 일반적인 시스템에서는 실제 메모리가 더 큰 경우에도 최대 6GB에서 8GB까지 중지 할 수 있습니다.
속도 나 성능면에서 차이가 없습니다. OOM 킬러가 프로세스 회수를 시작하여 메모리를 회수하기 전에 최대 20GB의 가상 메모리를 사용할 수 있습니다.
더 나은 성능을 원한다면 :
swappiness
자주 4GB 이상을 사용하지 않으면 감소... 이전에는 2GB 스왑 크기 제한이 있었지만 (대부분의 32 비트 플랫폼에서) 몇 년 동안은 그렇지 않았습니다. 2.2 커널 시리즈의 어느 시점에서 제한이 제거되었습니다.
또한 그는 다음에 대한 매뉴얼 페이지를 인용합니다 mkswap
.
스왑 영역의 최대 유용한 크기는 아키텍처와 커널 버전에 따라 다릅니다.
에서 리눅스 / swap.h 라이브러리 가 MAX_SWAPFILES
너무 분명히 명확한 영역 중 하나없는 그러나 것을, 커널 수준에서 스왑 파일의 수에 제한이 진입. 링크 된 문서에 따르면 :
"type"의 6 비트는 MAX_SWAPFILES 제한 32 대신 32 비트 아키텍처에 최대 64 개의 스왑 영역이 존재할 수 있어야합니다.
내가 이해하는 것은 32 비트 아키텍처에서 최대 64 개의 스왑 파일을 가지고 있다는 것입니다. 그러나 문서에서 64 비트 아키텍처에서 발생하는 사항에 대해서는 언급하지 않았습니다. 또한 이 경우 스왑 파일을 만들려는 OP의 노력은 30 번째 항목에서 실패했습니다.
스왑 파티션의 경우 이전에 언급 한 통계 외에 커널에 제한이없는 것으로 보이지만 파티션 수는 여전히 기본 BIOS 및 디스크 레이아웃에 의해 제한됩니다 .
이 답변은 Ubuntu 18.04에 적합하지 않을 수 있습니다 (댓글에서 지적한 @Chai T. Rex 덕분에).
어쨌든 이전 버전의 경우 여기에 있습니다 (아직 제안 된 업데이트 LTS> LTS가 없으므로 여전히 관련이 있습니다).
파일이 아니라 파티션이며, 예를 들어 스왑 파이로 인해 수행됩니다.
swappiness 매개 변수는 커널이 프로세스를 실제 메모리에서 스왑 디스크로 옮기는 경향을 제어합니다. 디스크가 RAM보다 훨씬 느리기 때문에 프로세스가 메모리에서 너무 적극적으로 이동하면 시스템 및 응용 프로그램의 응답 시간이 느려질 수 있습니다.
따라서 기본적으로 스왑 파티션이 보유한 RAM보다 훨씬 큰 경우 시스템이 더 많이 스왑하여 일반적인 속도 저하를 초래합니다.
스왑 파티션을 임의로 늘리면 속도 나 성능에 큰 차이가 없습니다.
스왑과 관련하여 swappiness
하드 드라이브 유형 (SDD 또는 HDD)과 같은 성능에 영향을 줄 수있는 몇 가지 요소가 있습니다 .
스왑은 상당히 느리고 스왑이 증가하면 성능이 저하됩니다. 그러나 RAM이 충분하지 않은 경우에만 영향을 미칩니다. 그러나 스왑이없는 것이 좋습니다. 스왑 파티션 크기를 RAM보다 두 배 크게 만드는 것이 좋습니다.
스왑 파일 또는 스왑 파티션에는 실제로 제한이 없다는 사실에 도달했습니다. 또한 16GB 스왑 파일은 상당히 크지 만 크기는 속도에 영향을 미치지 않습니다.
그러나 내가 수집하는 것은 속도에 영향을 미치는 것은 실제 하드웨어와 달리 스왑 공간을 실제로 사용하는 시스템입니다.
이에 대한 나의 해결책은 스왑이 더 빠른 하드웨어가 아닌 과도하게 사용되지 않도록 높은 스왑 피스 값을 만드는 것입니다. 그래서 나는했다 :
sudo -s
nano /etc/sysctl.conf
파일에 추가 :
#vm.swappiness = 50
저장
sudo sysctl -p
새로 고침 (또는 방금 재부팅했을 수 있음)
#vm.swappiness = 50
을 추가 /etc/sysctl.conf
해도 아무런 효과가 없습니다 . 행 을 추가 #
하면이 행이 주석이되어 제거합니다. 으로 교환을 확인할 수 있습니다 cat /proc/sys/vm/swappiness
.