내 시스템(RHEL6) 중 하나에 대해 스왑 공간 사용량이 높다는 경고가 표시됩니다.
VM을 살펴본 후 실제로 스왑이 완전히 활용되고 사용 가능한 물리적 메모리가 충분하다는 것을 알 수 있습니다. 예를 들면 다음과 같습니다.
[root@xxxxxxxxxx ~]# free -h
total used free shared buffers cached
Mem: 11G 5.3G 6.3G 2.6M 196M 560M
-/+ buffers/cache: 4.6G 7.0G
Swap: 4.0G 4.0G 21M
그래서 내 질문은 다음과 같습니다
이는 어느 시점에서 시스템에 물리적 메모리가 부족하여 4Gb의 추가 SWAP을 "사용해야"했다는 의미입니까? 그 후 메모리는 해제되지만 스왑 공간은 여전히 높습니다.
그렇다면 스왑을 "비울" 수 있는 방법이 있습니까?
실행할 때맨 위머신에서 스왑 사용량을 기준으로 필터링하면 스왑을 사용하는 몇 가지 프로세스를 볼 수 있습니다(특히 상단의 java).2.7그램)
top - 14:57:06 up 72 days, 19:54, 4 users, load average: 0.06, 0.02, 0.00
Tasks: 201 total, 1 running, 200 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.2%us, 0.9%sy, 0.0%ni, 97.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 12197860k total, 5598708k used, 6599152k free, 201704k buffers
Swap: 4193276k total, 4170820k used, 22456k free, 573636k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
9180 pcmc03 20 0 7428m 980m 9208 S 0.3 8.2 797:35.54 2.7g java
9474 pcmc03 20 0 3409m 999m 9.8m S 0.0 8.4 492:09.57 513m pmrepagent
9455 pcmc03 20 0 2702m 1.5g 3712 S 0.0 13.0 29:42.06 297m pmrepagent
9383 pcmc03 20 0 4362m 229m 1568 S 0.3 1.9 159:45.77 213m java
9494 pcmc03 20 0 2705m 108m 10m S 0.3 0.9 183:49.58 61m pmserver
7371 root 20 0 231m 69m 2104 S 0.0 0.6 360:27.50 60m prismd.pl
1730 root 20 0 117m 44m 920 S 0.0 0.4 33:45.09 46m rootmon
이것은 이 Java 프로세스가 어느 시점에서 2.7g의 스왑 공간을 사용하고 이를 예약된 상태로 유지해야 한다는 것을 의미합니까? 그렇다면 앞으로 유사한 상황을 피하기 위해 이 시스템에 추가 메모리가 필요할 수 있다고 생각합니까?
ㅏ가상 머신 상태si/so가 표시되지 않습니다.
매우 감사합니다
답변1
네, 기억이 부족한 것 같습니다. 아니요, 스왑에서 해제하려고 하지 마세요. 이렇게 하면 RAM에 들어가게 됩니다. 그러나 어떤 프로세스가 메모리를 낭비하고 있는지 살펴보고 해당 프로세스가 존재해야 하는지 물어보는 것은 가치가 있을 수 있습니다.