내 컴퓨터에서 하루 넘게 작업한 결과 스왑 용량은 약 1GB가 되었습니다. 내 패널 플러그인 중 일부는 교체를 수행하므로 속도가 느려집니다. 또한 시스템은 내가 취소할 때까지 스왑을 취소하지 않습니다 swapoff -all;swapon --all
. 부하가 낮거나 유사한 상황에서 스왑을 취소하는 메커니즘이 Linux 커널에 있습니까?
swapoff -all;swapon --all
때때로 RAM 사용량이 90%에 도달하므로 매시간 실행되는 스크립트를 작성하는 것은 좋지 않습니다.
답변1
아마도 기본 스왑 값은 60일 것입니다. 메모리에 대한 스왑의 선호도를 낮추려면 이 값을 10으로 줄이고 이후 동작을 모니터링하세요.
echo 10 > /proc/sys/vm/swappiness
영구적으로 만들려면(예: 재부팅 후에도 유지) /etc/sysctl.conf
이 줄을 편집하고 추가하세요.
vm.swappiness = 10
이 매개변수에 대한 자세한 내용은 다음에서 확인할 수 있습니다.위키피디아: 교환성.
답변2
Linux는 무언가를 저장하기 위해 RAM을 찾아야 할 때 가장 오랫동안 사용되지 않은 RAM의 페이지를 찾습니다. 해당 페이지가 파일에 속해 있으면 해제됩니다. 이러한 페이지가 프로세스 메모리인 경우 스왑으로 이동됩니다.
Linux는 어떤 페이지가 곧 사용될지 모르고 어떤 페이지가 곧 필요할지도 모릅니다(예를 들어 대화형 프로그램은 반응적입니다). RAM에 남아 있는 특정 프로세스에 우선 순위를 부여할 수 있는 방법은 없다고 생각합니다. 페이지를 RAM에 잠글 수 있지만(이 경우 루트 또는 적절한 기능이 필요함) 콘텐츠를 RAM에 잠그면 나머지 공간이 줄어들기 때문에 권장되지 않습니다.
다음과 같은 방법으로 특정 프로세스를 RAM에 강제로 로드할 수 있습니다.기억을 읽어라— 내 것 좀 봐unswap
스크립트.
당신은 할 수교환 경향 감소설정으로vm.swappiness
sysctl 매개변수. 그러나 교환성을 줄인다고 해서 시스템 속도가 빨라지는 것은 아닙니다. 이는 놀라운 일이 아닙니다. 시스템이 덜 교환하면 파일(예: 프로그램 코드)에서 데이터를 로드하는 데 더 많은 시간이 소요됩니다.
상대적으로 많은 양의 메모리가 있는 경우 3.0~3.16+ 커널에서 기본적으로 잘 조정되지 않은 설정 중 하나는 또 다른 설정입니다.VM sysctl 매개변수: vm.vfs_cache_pressure
. 이 매개변수는 swappiness와 다소 유사하지만 커널 개체, 특히 inode 및 dentry 캐시와 관련됩니다. 이 값을 늘리면 이 캐시에 사용되는 메모리 양이 효과적으로 줄어듭니다. slabtop
또는 를 사용하여 inode 및 dentry 캐시에서 사용되는 메모리 양을 확인할 수 있습니다.
</proc/slabinfo awk '{print $1, $3*$4}' |sort -k2n | tail
아침에 시스템이 느리게 실행되는 경우 이는 야간 크론 작업(예: updatedb
inode 캐시 항목으로 메모리 채우기) 때문일 수 있습니다. 비슷한 것을 시도해 보세요 sysctl vm.swappiness=500
. 캐시 새로 고침을 한 번만 수행할 수 있습니다 echo 2 >|/proc/sys/vm/drop_caches
(성능이 저하되므로 정기적으로 수행하지 마십시오).