Linux内存使用:当交换未被使用时,我们能考虑内存满吗?
部署应用程序后,我正在检查可用的可用内存。我正在使用下面的命令,发现可用内存不足20%:Linux内存使用:当交换未被使用时,我们能考虑内存满吗?,linux,performance,memory,Linux,Performance,Memory,部署应用程序后,我正在检查可用的可用内存。我正在使用下面的命令,发现可用内存不足20%: free | grep Mem | awk '{print "Free Memory :"100*($4+$6+$7)/$2"%"}' 但当我检查top命令时,我发现根本没有使用交换内存。上面的命令也不包括交换内存空间。现在我脑子里有几个问题 快照1: top - 10:01:07 up 305 days, 11:23, 1 user, load average: 0.35, 0.22, 0.12
free | grep Mem | awk '{print "Free Memory :"100*($4+$6+$7)/$2"%"}'
但当我检查top命令时,我发现根本没有使用交换内存。上面的命令也不包括交换内存空间。现在我脑子里有几个问题
快照1:
top - 10:01:07 up 305 days, 11:23, 1 user, load average: 0.35, 0.22, 0.12
Tasks: 244 total, 1 running, 242 sleeping, 0 stopped, 1 zombie
Cpu(s): 13.4%us, 14.5%sy, 0.0%ni, 69.3%id, 0.8%wa, 0.4%hi, 1.6%si, 0.0%st
Mem: 15952M total, 15817M used, 135M free, 531M buffers
Swap: 16378M total, 0M used, 16378M free, 2567M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19983 user1 20 0 3410m 2.9g 4420 S 23 18.9 56733:33 x1
28390 user2 20 0 621m 216m 1300 S 12 1.4 40201:39 p2
24781 user1 20 0 1393m 868m 1760 S 9 5.4 27795:12 p3
13936 user1 20 0 740m 432m 2692 S 6 2.7 15726:39 p4
30545 user1 20 0 391m 77m 2232 S 6 0.5 2805:05 p5
5696 user1 20 0 914m 680m 2180 S 4 4.3 2209:03 p6
28801 user2 20 0 282m 148m 1432 S 4 0.9 12408:20 p7
29559 user2 20 0 504m 357m 2028 S 3 2.2 9152:52 p8
29129 user2 20 0 245m 172m 2004 S 2 1.1 6935:50 p9
29130 user2 20 0 245m 172m 1996 S 2 1.1 6879:25 p9
29131 user2 20 0 245m 172m 1996 S 2 1.1 6913:15 p9
29135 user2 20 0 245m 172m 1996 S 2 1.1 6897:49 p9
29140 user2 20 0 245m 172m 1996 S 2 1.1 6886:52 p9
top - 10:06:18 up 312 days, 11:29, 1 user, load average: 0.26, 0.42, 0.31
Tasks: 240 total, 1 running, 238 sleeping, 0 stopped, 1 zombie
Cpu(s): 13.1%us, 11.8%sy, 0.0%ni, 71.8%id, 1.7%wa, 0.5%hi, 1.1%si, 0.0%st
Mem: 15952M total, 15832M used, 119M free, 480M buffers
Swap: 16378M total, 0M used, 16378M free, 2622M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19983 user1 20 0 3410m 2.9g 5292 S 18 18.9 58711:30 x1
28390 user2 20 0 621m 216m 1300 S 12 1.4 41451:12 p2
24781 user1 20 0 1393m 868m 1760 S 8 5.4 28615:15 p3
13936 user1 20 0 740m 432m 2692 S 6 2.7 16247:35 p4
12453 user1 20 0 387m 74m 3056 S 5 0.5 178:45.72 p5
28801 user2 20 0 282m 148m 1448 S 4 0.9 12794:23 p6
13252 user1 20 0 850m 665m 2556 S 4 4.2 138:43.83 p7
29559 user2 20 0 504m 357m 1992 S 3 2.2 9450:05 p8
29154 user2 20 0 245m 172m 1972 S 3 1.1 7127:40 p9
29130 user2 20 0 245m 172m 1972 S 2 1.1 7104:03 p9
29140 user2 20 0 245m 172m 1972 S 2 1.1 7111:48 p9
29171 user2 20 0 244m 172m 1972 S 2 1.1 7137:48 p9
29129 user2 20 0 245m 172m 1980 S 2 1.1 7162:12 p9
>free
total used free shared buffers cached
Mem: 8183648 7148324 1035324 0 150568 2352956
-/+ buffers/cache: 4644800 3538848
Swap: 17149376 24588 17124788
快照2:
top - 10:01:07 up 305 days, 11:23, 1 user, load average: 0.35, 0.22, 0.12
Tasks: 244 total, 1 running, 242 sleeping, 0 stopped, 1 zombie
Cpu(s): 13.4%us, 14.5%sy, 0.0%ni, 69.3%id, 0.8%wa, 0.4%hi, 1.6%si, 0.0%st
Mem: 15952M total, 15817M used, 135M free, 531M buffers
Swap: 16378M total, 0M used, 16378M free, 2567M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19983 user1 20 0 3410m 2.9g 4420 S 23 18.9 56733:33 x1
28390 user2 20 0 621m 216m 1300 S 12 1.4 40201:39 p2
24781 user1 20 0 1393m 868m 1760 S 9 5.4 27795:12 p3
13936 user1 20 0 740m 432m 2692 S 6 2.7 15726:39 p4
30545 user1 20 0 391m 77m 2232 S 6 0.5 2805:05 p5
5696 user1 20 0 914m 680m 2180 S 4 4.3 2209:03 p6
28801 user2 20 0 282m 148m 1432 S 4 0.9 12408:20 p7
29559 user2 20 0 504m 357m 2028 S 3 2.2 9152:52 p8
29129 user2 20 0 245m 172m 2004 S 2 1.1 6935:50 p9
29130 user2 20 0 245m 172m 1996 S 2 1.1 6879:25 p9
29131 user2 20 0 245m 172m 1996 S 2 1.1 6913:15 p9
29135 user2 20 0 245m 172m 1996 S 2 1.1 6897:49 p9
29140 user2 20 0 245m 172m 1996 S 2 1.1 6886:52 p9
top - 10:06:18 up 312 days, 11:29, 1 user, load average: 0.26, 0.42, 0.31
Tasks: 240 total, 1 running, 238 sleeping, 0 stopped, 1 zombie
Cpu(s): 13.1%us, 11.8%sy, 0.0%ni, 71.8%id, 1.7%wa, 0.5%hi, 1.1%si, 0.0%st
Mem: 15952M total, 15832M used, 119M free, 480M buffers
Swap: 16378M total, 0M used, 16378M free, 2622M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19983 user1 20 0 3410m 2.9g 5292 S 18 18.9 58711:30 x1
28390 user2 20 0 621m 216m 1300 S 12 1.4 41451:12 p2
24781 user1 20 0 1393m 868m 1760 S 8 5.4 28615:15 p3
13936 user1 20 0 740m 432m 2692 S 6 2.7 16247:35 p4
12453 user1 20 0 387m 74m 3056 S 5 0.5 178:45.72 p5
28801 user2 20 0 282m 148m 1448 S 4 0.9 12794:23 p6
13252 user1 20 0 850m 665m 2556 S 4 4.2 138:43.83 p7
29559 user2 20 0 504m 357m 1992 S 3 2.2 9450:05 p8
29154 user2 20 0 245m 172m 1972 S 3 1.1 7127:40 p9
29130 user2 20 0 245m 172m 1972 S 2 1.1 7104:03 p9
29140 user2 20 0 245m 172m 1972 S 2 1.1 7111:48 p9
29171 user2 20 0 244m 172m 1972 S 2 1.1 7137:48 p9
29129 user2 20 0 245m 172m 1980 S 2 1.1 7162:12 p9
>free
total used free shared buffers cached
Mem: 8183648 7148324 1035324 0 150568 2352956
-/+ buffers/cache: 4644800 3538848
Swap: 17149376 24588 17124788
我是否使用正确的方法检查可用空间?(当内存使用率过高时,我需要发出警报)
2.从下面的2个快照中,我看到可用内存从“135M free”减少到“119M free”(请检查mem:row of top命令)。但我发现与进程(甚至其他进程)相关的内存没有改变,只是缓冲区和缓存减少了。正如我前面读到的,如果没有足够的内存用于进程,操作系统将释放这些内存。所以我真的应该担心这个变化吗?有没有办法澄清这一点
top - 10:01:07 up 305 days, 11:23, 1 user, load average: 0.35, 0.22, 0.12
Tasks: 244 total, 1 running, 242 sleeping, 0 stopped, 1 zombie
Cpu(s): 13.4%us, 14.5%sy, 0.0%ni, 69.3%id, 0.8%wa, 0.4%hi, 1.6%si, 0.0%st
Mem: 15952M total, 15817M used, 135M free, 531M buffers
Swap: 16378M total, 0M used, 16378M free, 2567M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19983 user1 20 0 3410m 2.9g 4420 S 23 18.9 56733:33 x1
28390 user2 20 0 621m 216m 1300 S 12 1.4 40201:39 p2
24781 user1 20 0 1393m 868m 1760 S 9 5.4 27795:12 p3
13936 user1 20 0 740m 432m 2692 S 6 2.7 15726:39 p4
30545 user1 20 0 391m 77m 2232 S 6 0.5 2805:05 p5
5696 user1 20 0 914m 680m 2180 S 4 4.3 2209:03 p6
28801 user2 20 0 282m 148m 1432 S 4 0.9 12408:20 p7
29559 user2 20 0 504m 357m 2028 S 3 2.2 9152:52 p8
29129 user2 20 0 245m 172m 2004 S 2 1.1 6935:50 p9
29130 user2 20 0 245m 172m 1996 S 2 1.1 6879:25 p9
29131 user2 20 0 245m 172m 1996 S 2 1.1 6913:15 p9
29135 user2 20 0 245m 172m 1996 S 2 1.1 6897:49 p9
29140 user2 20 0 245m 172m 1996 S 2 1.1 6886:52 p9
top - 10:06:18 up 312 days, 11:29, 1 user, load average: 0.26, 0.42, 0.31
Tasks: 240 total, 1 running, 238 sleeping, 0 stopped, 1 zombie
Cpu(s): 13.1%us, 11.8%sy, 0.0%ni, 71.8%id, 1.7%wa, 0.5%hi, 1.1%si, 0.0%st
Mem: 15952M total, 15832M used, 119M free, 480M buffers
Swap: 16378M total, 0M used, 16378M free, 2622M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19983 user1 20 0 3410m 2.9g 5292 S 18 18.9 58711:30 x1
28390 user2 20 0 621m 216m 1300 S 12 1.4 41451:12 p2
24781 user1 20 0 1393m 868m 1760 S 8 5.4 28615:15 p3
13936 user1 20 0 740m 432m 2692 S 6 2.7 16247:35 p4
12453 user1 20 0 387m 74m 3056 S 5 0.5 178:45.72 p5
28801 user2 20 0 282m 148m 1448 S 4 0.9 12794:23 p6
13252 user1 20 0 850m 665m 2556 S 4 4.2 138:43.83 p7
29559 user2 20 0 504m 357m 1992 S 3 2.2 9450:05 p8
29154 user2 20 0 245m 172m 1972 S 3 1.1 7127:40 p9
29130 user2 20 0 245m 172m 1972 S 2 1.1 7104:03 p9
29140 user2 20 0 245m 172m 1972 S 2 1.1 7111:48 p9
29171 user2 20 0 244m 172m 1972 S 2 1.1 7137:48 p9
29129 user2 20 0 245m 172m 1980 S 2 1.1 7162:12 p9
>free
total used free shared buffers cached
Mem: 8183648 7148324 1035324 0 150568 2352956
-/+ buffers/cache: 4644800 3538848
Swap: 17149376 24588 17124788
您不必担心缓冲区,它们用于磁盘缓存的缓存始终可供应用程序使用。读取:总可用内存为虚拟内存=RAM+交换。当然,与物理内存访问相比,分页/交换速度要慢得多。与其依赖所有这些内部细节,难道不应该有任何api来获取这些信息吗?像get availablemem()或freemem()之类的东西?您不必担心用于磁盘缓存的缓冲区和缓存始终可供应用程序使用。读取:总可用内存为虚拟内存=RAM+交换。当然,与物理内存访问相比,分页/交换速度要慢得多。与其依赖所有这些内部细节,难道不应该有任何api来获取这些信息吗?比如get availablemem()或freemem()之类的东西?