服务器拒绝使用交换分区

Moh*_*yaz 4 linux swap

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

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

这是 VMstat 的输出

procs -----------内存----------- ---swap--- -----io---- --system--- -----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
MemFree:11824808 KB
缓冲区:1498068 kB
缓存:48842440 kB
交换缓存:0 kB
活跃:5350660 kB
非活动:46810284 kB
高总计:0 kB
高自由:0 KB
低总:66000044 kB
低免费:11824808 KB
交换总计:131074324 kB
SwapFree:131074324 kB
脏:2641608 KB
回写:96 kB
AnonPages:1819092 kB
映射:766660 kB
板块:1753100 KB
页表:131908 kB
NFS_不稳定:0 kB
弹跳:0 kB
提交限制:164074344 KB
Committed_AS:9460100 KB
Vmalloc 总计:34359738367 kB
Vmalloc 使用:336508 KB
VmallocChunk:34359401823 KB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
超大页面大小:2048 kB

Jef*_*and 9

你读错了,几乎没有使用你的记忆。

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.
Run Code Online (Sandbox Code Playgroud)

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

您几乎没有将内存用于应用程序,即使使用缓存,您也有很多剩余内存可以使用。您的服务器不应该在内存负载这么轻的情况下使用交换空间。