매우 큰 프로젝트를 빌드하려고 할 때 충분한 메모리(실제로는 14GB)가 있음에도 불구하고 내 컴퓨터가 스왑(수 GB)을 시작하는 문제가 있습니다. 실행하면 free
디스크 캐시가 아닌 것으로 표시됩니다.
$ free -m
total used free shared buffers cached
Mem: 12900 6350 6549 0 7 77
-/+ buffers/cache: 6266 6633
Swap: 9211 233 8978
따라서 실제로는 6.3GB의 메모리가 사용되지만 상단(% 메모리 사용량으로 정렬)을 보면 메모리가 전혀 사용되지 않는 것을 볼 수 있습니다.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
38669 blong 20 0 1282m 378m 42m S 2 2.9 0:50.79 firefox
1327 root 20 0 365m 126m 4056 S 4 1.0 40:23.94 Xorg
2540 blong 20 0 1578m 67m 10m S 2 0.5 21:33.35 gnome-shell
13943 blong 20 0 579m 12m 5604 S 2 0.1 1:07.01 gnome-terminal
30093 blong 20 0 540m 8664 5572 S 0 0.1 0:03.96 icemon
2558 blong 20 0 362m 5964 1808 S 0 0.0 5:17.44 vmtoolsd
2526 blong 20 0 672m 5056 2000 S 0 0.0 0:26.81 gnome-settings-
2546 blong 20 0 354m 3484 2244 S 0 0.0 5:08.96 pulseaudio
내가 뭐 놓친 거 없니?
VM을 다시 시작하면 이 문제가 해결되었지만 실제로 무슨 일이 일어나고 있는지 파악하고 싶습니다.
답변1
스왑은 나쁜 것이 아닙니다. 이 경우 아마도 좋은 일이 될 것입니다. vm.swappiness
비활성 메모리 페이지를 교환하는 커널의 경향을 제어하는 커널 매개변수( )가 있습니다 . 이는 파일 시스템 캐싱과 같은 작업에 RAM을 더 잘 사용할 수 있도록 하기 위한 것입니다.
일반적으로 무슨 일이 일어나고 있는지 알지 못한 채 커널 매개 변수를 조정하는 것을 권장하지 vm.swappiness = 0
않지만 ./etc/sysctl.conf
sysctl -p
무엇이 당신의 기억을 사용하고 있는지에 대한 대답은 간단하지 않습니다. 애플리케이션 전용 메모리, 캐시 외에도 시스템 메모리를 사용하는 것들이 많습니다. 공유 메모리, 매핑된 메모리, 커널 보드 같은 것들도 있습니다.
이를 살펴보면 시스템의 메모리 사용량에 대한 많은 정보를 얻을 수 있습니다 /proc/meminfo
. 그러나 그것은 희미한 마음을 위한 것이 아닙니다. Linux의 VM 시스템은 매우 복잡합니다.