프로세스별 스왑 사용량

프로세스별 스왑 사용량

우리는 64G 물리적 메모리와 4G 스왑을 갖춘 CentOS 5.11(64비트)을 가지고 있습니다. 스왑이 사용되는 것을 볼 수 있지만 900MB누가 그것을 사용하고 있는지 알아내려고 합니다. 다음을 시도했지만 zero사용법이 표시됩니다.

      smem -t -p
      ...
      ...
     4758 root     /usr/bin/python2.6 /usr/bin    0.00%    0.03%    0.03%    0.03%
    21846 root     /usr/bin/ruby /usr/bin/pupp    0.00%    0.06%    0.06%    0.06%
    -------------------------------------------------------------------------------
      920 12                                      0.00%    7.30%   10.04%  161.37%

명령을 시도했지만 top잘못된 데이터가 표시되어 쓸모가 없습니다.

나는 또한 다음 스크립트를 시도했지만 또한 보여줍니다zero

#!/bin/bash
for i in `ls /proc`
do
        if [ -f /proc/$i/smaps ]
                then
                grep -H Swap /proc/$i/smaps | awk '( $2 != "0" ) { print }'
        fi
done

누가 그것을 사용하고 있는지 알아낼 수 있는 도구가 없으므로 SWAP여기서 문제가 무엇인지 알 수 없습니다. 그러나 다른 조건이 동일하다면 위의 bash 스크립트는 작동하지만 이 서버에서는 작동하지 않습니다. 그러면 무엇이 잘못될 수 있습니까?

topswap이 명령은 다음 데이터를 열에 표시하며 전체 4G교환이 있으므로 이는 완전히 잘못된 것입니다.

top - 09:38:55 up 111 days, 14:23,  1 user,  load average: 2.09, 2.34, 2.20
Tasks: 994 total,   4 running, 990 sleeping,   0 stopped,   0 zombie
Cpu(s): 12.3%us,  0.9%sy,  0.0%ni, 86.0%id,  0.0%wa,  0.0%hi,  0.7%si,  0.0%st
Mem:  98820240k total, 75660440k used, 23159800k free,  1056112k buffers
Swap:  4192924k total,  4192496k used,      428k free, 59936024k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP COMMAND
 6292 postgres  15   0 50.0g 109m 100m S  1.5  0.1   0:02.95  49g postmaster
 6797 postgres  15   0 50.0g  10m 8228 S  1.5  0.0  33:35.32  49g postmaster
10300 postgres  15   0 50.0g  60m  53m S  1.5  0.1   0:01.18  49g postmaster
12280 root      15   0 13428 1836  844 R  1.5  0.0   0:00.25  11m top
   26 root      10  -5     0    0    0 S  0.7  0.0 215:11.17    0 events/0
 1969 postgres  15   0 50.0g 141m 132m S  0.7  0.1   0:04.42  49g postmaster
 2549 postgres  15   0 50.0g 141m 132m S  0.7  0.1   0:04.24  49g postmaster
 2550 postgres  15   0 50.0g 141m 132m S  0.7  0.1   0:04.37  49g postmaster
 2699 postgres  15   0 50.0g 141m 132m S  0.7  0.1   0:04.45  49g postmaster
 3128 postgres  15   0 50.0g 131m 123m S  0.7  0.1   0:03.91  49g postmaster
 4556 postgres  15   0 50.0g 115m 107m S  0.7  0.1   0:03.20  49g postmaster
 4560 postgres  15   0 50.0g 116m 108m S  0.7  0.1   0:03.23  49g postmaster
 4669 postgres  15   0 50.0g 113m 105m S  0.7  0.1   0:03.28  49g postmaster
 4671 postgres  15   0 50.0g 114m 106m S  0.7  0.1   0:03.27  49g postmaster

이것은 내 tmpfs출력입니다. 이제 문제는 48G그것이 어디서 왔는지입니다. postgresql.conf에서 shared_buffer=48Gtmpfs가 표시하는 내용을 지정했습니다. 내가 맞나요?

[root@db ~]# df -h -t tmpfs
Filesystem            Size  Used Avail Use% Mounted on
tmpfs                  48G   12K   48G   1% /dev/shm

관련 정보