服务器拒绝使用交换分区

服务器拒绝使用交换分区

我们正在运行一台拥有 23 个核心(cpuinfo 显示最高进程数为 22)和 66 GB RAM 的服务器。这里的开发团队正在运行一些应用程序,这会占用大量内存。

我观察到:1. 即使内存非常低(可用内存 = 167 MB),也不会使用交换空间。想知道服务器为什么拒绝使用交换空间。对此有什么想法吗?2. 系统负载有时会增加到 70+ 这样的数字,我可以看到这些应用程序是 I/O 密集型的。这会导致如此高的平均负载吗?

以下是 VMstat 的输出

进程 -----------内存---------- ---交换----- -----io---- --系统----- -----cpu------
 rb swpd 免费 buff 缓存 si so bi bo in cs us sy id wa st
 3 0 0 28932 1049 31757 0 0 6 145 6 33 1 0 98 0 0
..
..
12 2 0 167 1876 57749 0 0 932 49604 2306 96856 26 8 58 7 0

meminfo 的输出

内存总量:66000044 kB
可用内存:11824808 kB
缓冲区:1498068 kB
缓存:48842440 kB
交换缓存:0 kB
活动:5350660 kB
不活动:46810284 kB
最高总计:0 kB
高可用:0 kB
低总计:66000044 kB
低免费:11824808 kB
交换总量:131074324 kB
免交换:131074324 kB
脏:2641608 kB
写回:96 kB
匿名页面:1819092 kB
映射:766660 kB
板坯:1753100 kB
页表:131908 kB
NFS_不稳定:0 kB
跳出率:0 kB
提交限制:164074344 kB
已提交的 AS:9460100 kB
Vmalloc总计:34359738367 kB
Vmalloc已用:336508 kB
VmallocChunk:34359401823 kB
大页面总数:0
HugePages_Free:0
HugePages_Rsvd:0
大页面大小:2048 kB

答案1

您读错了,而且几乎没有运用您的记忆。

MemTotal:     66000044 kB = 63GB available to the system
MemFree:      11824808 kB = 11GB with nothing at all used.
Buffers:       1498068 kB = 1.4GB
Cached:       48842440 kB = 46GB of data from the drive that is kept in otherwise unoccupied memory
SwapCached:          0 kB
Active:        5350660 kB = 5.1GB of memory that is actually used by applications.

当您从磁盘读取数据时,它会进入内存。如果没有其他东西争用内存,则该文件将保留在内存中,直到应用程序尝试使用该空间。每当从磁盘读取文件时,都会首先检查缓存。

您几乎不使用内存来运行应用程序,即使使用缓存,您仍有很多剩余内存可供使用。您的服务器不应该在内存负载如此之低的情况下使用交换空间。

相关内容