簡體   English   中英

Linux:內存使用情況和釋放交換內存

[英]Linux: memory usage and releasing swap memory

我在其中一台服務器上觀察到以下統計信息。

  1. 從最高命令開始,只有一個進程正在使用15%的RAM,沒有其他進程
  2. vmstat輸出的換入和換出列下均為0

但是我仍然看到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為零。 任何進程都不想將其讀回內存。

現在的問題是:

  • 16 GB總RAM
  • 所有進程使用的負3 GB左右(我猜您對頂部輸出進行了正確排序)
  • 負644 MB用於高速緩存/緩沖區/空閑
  • 剩下超過12 GB的空間被什么使用? 內核,某些平板或共享內存或其他一些匿名頁面。 奇怪的。 我會仔細檢查/proc/meminfo以找出原因。

也不要看注釋中建議的不活動內存統計信息。 這沒用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM