[英]Linux: memory usage and releasing swap memory
我在其中一台服務器上觀察到以下統計信息。
但是我仍然看到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
自由-m輸出
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
有人可以解釋這種情況嗎?
非常感謝。
首先,您會發現使用以下腳本時哪個進程正在使用交換空間。
#!/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
謝謝-阿倫
交換在這里不是問題。 但是使用一半以上RAM的東西卻是。
交換中充滿了完全無用的數據,因此您還有2 GB的RAM可以用來做重要的事情。 對你有好處! 我怎么知道交換內容沒用? 好吧, si
為零。 任何進程都不想將其讀回內存。
現在的問題是:
/proc/meminfo
以找出原因。 也不要看注釋中建議的不活動內存統計信息。 這沒用 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.