无论有多少可用内存,服务器都会进行交换

无论有多少可用内存,服务器都会进行交换

以下是一些vmstat输出

x@x-server:~$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 223104 123116  67944 521656    0    1     3     4   16   32  1  0 99  0  0
 0  0 223104 123116  67944 521656    0    0     0     0   38   74  0  0 100  0  0
 0  0 223104 123116  67944 521656    0    0     0     0   31   64  0  0 100  0  0
 0  0 223104 122944  67944 521560    0    0     0     0  126  145  1  0 99  0  0
 0  0 223052 122820  67944 521560   64    0    72     0   83  145  0  1 98  0  0
 0  0 223000 122820  67944 521560   64    0    64     0   60  114  1  0 99  1  0
 0  0 223000 122820  67944 521560    0    0     0     0   44   78  0  1 100  0  0
 0  0 223000 122820  67944 521560    0    0     0     0   27   56  0  0 100  0  0
 0  0 223000 122820  67952 521552    0    0     0    24   82  145  0  0 100  0  0
 0  0 223000 122820  67952 521560    0    0     0     0   42   86  0  1 100  0  0
 0  0 222952 122696  67952 521560   32    0    32     0   75  127  1  0 100  0  0
 0  0 222952 122696  67952 521560    0    0     0     0   28   58  0  0 100  0  0
 0  0 222896 122448  67952 521560   48    0    48     0   90  127  1  0 99  0  0
 0  0 222896 122448  67952 521560    0    0     0     0   31   63  0  1 100  0  0
 0  0 222896 122448  67952 521560    0    0     0     0   31   62  0  0 100  0  0

这是free

x@x-server:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1430         734         119          25         575         636
Swap:          1467         217        1250

如您所见,尽管我有大量内存(约 50%)可用,但仍有一些交换操作正在进行。为什么会这样?我该如何让它使用这些内存?

答案1

为了确定哪个进程正在使用交换内存,请使用以下命令进行检查。如果您不想要该进程,请将其终止并继续

对于 /proc/*/status 中的文件;执行 awk'/VmSwap|Name/{printf $2" " $3}END{print""}'$file;完成 |sort -k 2 -n -r |less

相关内容