Linux 스왑 공간 사용량이 해제되지 않았습니다.

Linux 스왑 공간 사용량이 해제되지 않았습니다.

내 시스템(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을 "사용해야 했다"는 의미입니까? 나중에 메모리가 해제되었지만 스왑은 여전히 ​​높습니다.

그렇다면 해당 스왑을 "비울" 수 있는 방법이 있습니까?

실행할 때맨 위머신에서 스왑 사용량을 기준으로 필터링하면 해당 SWAP을 사용하는 일부 프로세스를 볼 수 있습니다(특히 상단의 Java는2.7g)

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의 스왑을 사용하고 예약을 유지해야 한다는 것을 의미합니까? 그렇다면 앞으로 비슷한 상황을 피하기 위해 이 시스템에 추가 메모리가 필요할 수도 있겠죠?

vmstatsi/so를 표시하지 않습니다.

매우 감사합니다

답변1

네, 기억력이 부족한 것 같습니다. 아니요, 스왑에서 해제하려고 시도하지 마세요. 그렇게 하면 RAM에 들어가게 됩니다. 그러나 어떤 프로세스가 메모리를 낭비하고 있는지 확인하고 이러한 프로세스가 꼭 존재해야 하는지 물어보는 것은 가치가 있을 수 있습니다.

관련 정보