我们有 CentOS 5.11(64 位),它有 64G 物理内存和 4G 交换区,我看到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 脚本可以工作,但在这台服务器上则不然,那么会出现什么问题呢?
top
swap
命令在列中显示以下数据,并且我们有总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=48G
是 tmpfs 显示的内容?我对吗?
[root@db ~]# df -h -t tmpfs
Filesystem Size Used Avail Use% Mounted on
tmpfs 48G 12K 48G 1% /dev/shm