我在其中一台服务器上观察到以下统计数据。
但我仍然看到Swap和RAM都被“free -m”输出完全占用
最高输出
Mem: 16413804k total, 16390264k used, 23540k free, 59604k buffers
Swap: 2040244k total, 2040244k used, 0k free, 584688k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10984 mysql 15 0 3100m 2.4g 5472 S 0 15.5 1129:44 mysqld
12773 root 16 0 18440 7916 1064 S 0 0.0 65:46.67 IPremoted
3108 ntp 16 0 18984 5720 4652 S 0 0.0 54:35.78 ntpd
19694 root 16 0 48996 5708 3656 S 0 0.0 0:00.03 sshd
11084 hpsmh 17 0 371m 3892 2532 S 0 0.0 0:00.00 hpsmhd
free -m output
total used free shared buffers cached
Mem:16029 15983 46 0 52 546
-/+ buffers/cache:
15384 644
Swap:1992 1992 0
vmstat输出
swap usage
si so
0 0
0 0
0 0
0 0
0 0
0 0
0 0
有人可以解释这个案子吗?
先谢谢。
答案 0 :(得分:3)
首先,在使用下面的脚本时,您会发现哪个进程正在使用交换空间。
#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0
done
echo "Overall swap used: $OVERALL"
然后执行以下操作 swapoff -a 一旦交换清除了 swapon -a
由于 -Arun
答案 1 :(得分:1)
交换在这里不是问题。但使用超过一半RAM的东西是。
交换完全没有完全无用的数据,所以你有2 GB以上的RAM来做重要的事情。对你有益!我怎么知道交换内容没用?嗯,si
为零。没有任何进程想要将其读回内存。
现在的问题是:
/proc/meminfo
以找出原因。也不要按照评论中的建议查看非活动内存统计信息。 It's useless