Linux : 메모리는 사용 가능하지만 스왑이 사용됩니다. 왜?


11

Munin의 다이어그램은 다음과 같습니다.

메모리 사용량 : http://koryagin.com/w/q/memory-day.png

스왑 인 / 아웃 : http://koryagin.com/w/q/swap-day.png

RAM 크기가 프로그램에서 사용하는 메모리보다 훨씬 클 때 Linux가 캐시를 늘리고 스왑을 사용하기로 결정한 이유는 무엇입니까?


2
지난 몇 년 동안 리눅스 VM 서브 시스템은 버퍼 공간과 캐시 공간을 선호하도록 조정되었다. 메모리를 차지하지만 응용 프로그램을 하고 어떤 디스크에 단행 얻을 것이다. 응답 성과 성능이 향상됩니다. 성능 문제가 표시되지 않으면 걱정할 필요가 없습니다.
바트 실버 스트림

답변:


17

서버에 많은 비활성 페이지가있는 메모리를 사용하거나 사용하지 않는 프로세스가있을 수 있습니다. 리눅스 커널은 메모리가 캐시로 더 잘 사용되기 때문에 프로그램의 비활성 부분을 스왑하기를 선호합니다.

이 동작을 변경하려면 vm.swappinesssysctl 튜너 블을 사용 하여 플레이 하되 경고를 받으십시오. 커널 개발자 / 배포 관리자를 능가하는 것은 쉽지 않습니다. :-)

스왑이 급증하는 동안 서버에서 성능 문제가 있거나 호기심을 불러 일으켰습니까?


이 특정 서버에서 성능 문제가 없습니다. 그러나 상황이 명확하지 않은 다른 곳에서는 무엇을 해야할지 생각하고 있습니다. PHP-FPM segfault가 알려진 PHP 문제와 일치하지 않는 경우 일부 Linux 메모리 관리 논리가 PHP-FPM segfault의 원인이 될 수 없습니까? 일반적으로 호기심에 찬성합니다.
Pavel Koryagin

BTW,이 서버는 고정 된 스크립트 세트로 아주 적은 양의 데이터를 집중적으로 처리하므로 집중적 인 I / O가 없어야합니다. 그렇다면 리눅스는 왜 그렇게 큰 캐시를 원합니까?
Pavel Koryagin

Linux는 파일, 파일 메타 데이터, 디렉토리 항목 등을 많이 캐시합니다. 명령을 시도하십시오 slabtop.
Janne Pikkarainen

고마워 slabtop정보로 무엇을해야하는지 이해하려면 시간이 걸립니다 .
Pavel Koryagin

당신의 상사가 칸막이를 지나갈 때 전체 화면을 실행하고 자신을 눈에서 전문가로 만드십시오. :-) 또 다른 멋진 "오, 이해하기 어려운 것 같습니다"명령은 systat -vmstatFreeBSD (아마도 다른 BSD)에도 있습니다.
Janne Pikkarainen

1

swappiness 매개 변수 로 재생을 시도해야합니다 . 파일 캐시 크기를 늘리려 고 할 때 시스템이 스왑을 시작한 것을 볼 수 있듯이 swappines가 0이 아닌 경우 이는 정상입니다.

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