매주 토요일마다 알 수 없는 이유로 내 서버 중 하나에서 스왑 활용도가 급증하는 현상이 발생합니다. 사용 가능한 메모리가 충분하므로 이것이 반드시 문제가 되는 것은 아니지만 여전히 무슨 일이 일어나고 있는지 이해하고 싶습니다.
특히 스왑이 어떻게 20분만에 2% 사용량에서 100% 사용량으로 바뀌는지 헷갈립니다. 그러나 이런 일이 발생하더라도 스왑율은 증가하지 않는 것으로 보입니다. 서버에는 8GB 스왑 파티션이 있으므로 사용 가능한 공간을 채우려면 초당 수천 페이지의 페이지 출력 속도가 필요합니다.
또한 당시 서버 스왑을 유발할 수 있는 메모리 사용률 급증이 나타나지 않았습니다.
관찰된 행동에 대해 설명을 제공할 수 있는 사람이 있나요? 서버는 RHEL 4.8(내가 아는 이전 버전)이고 커널은 2.6.9입니다. 아래 sar의 일부 출력을 포함했습니다.
스왑 활용도는 약 20분 만에 2%에서 100%로 증가했습니다.
$ sar -r -f sa12
....
06:00:01 PM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
06:10:01 PM 4583856 11847032 72.10 79676 319804 8178056 207864 2.48 19816
06:20:01 PM 4720904 11709984 71.27 38840 225108 8178400 207520 2.47 19124
06:30:02 PM 4839160 11591728 70.55 1404 144948 1968152 6417768 76.53 6227068
06:40:02 PM 4827016 11603872 70.62 1640 145484 10232 8375688 99.88 8182968
06:50:02 PM 4836376 11594512 70.57 844 123304 60 8385860 100.00 8193044
07:00:01 PM 4825764 11605124 70.63 920 128108 4516 8381404 99.95 8188680
....
아래는 같은 기간의 거래소 통계입니다.
$ sar -W -f sa12
....
06:00:01 PM pswpin/s pswpout/s
06:10:01 PM 0.00 0.00
06:20:01 PM 0.00 0.00
06:30:02 PM 0.68 0.00
06:40:02 PM 1.85 0.00
06:50:02 PM 5.07 0.00
07:00:01 PM 8.62 0.00
....
답변1
재미있는 사실: 스왑 사용량이 0에서 8GB로 증가했습니다. 동시에 디스크에 단일 바이트도 기록되지 않았습니다(sar pswpout/s
는 0을 표시했습니다). 따라서 내 가정은 스왑이 할당/예약되었지만 소비/사용되지는 않는다는 것입니다.
내 추측으로는 귀하의 서버가 vm.overcommit_memory=2
(읽기vm.overcommit_memory 문서,VM 오버커밋 회계). 이 경우 할당된 모든 바이트는 사용된 것으로 간주됩니다. [확인하지 않았습니다.]
이 주제를 읽고 싶을 수도 있습니다.Linux: 사용된 총 스왑 공간 = 프로세스에서 사용된 스왑 공간 + ??.
답변2
이는 귀하의 질문에 직접적으로 대답하지는 않지만 다음 스크립트는 조사에 유용할 수 있습니다. 각 프로세스가 사용하는 스왑 공간의 양을 알 수 있습니다.
스왑이 언제 시작될지 대략적으로 알고 있다면 해당 시간에 맞춰 이 스크립트를 실행하도록 cron을 설정할 수 있습니다.