我们正在运行一个具有23个内核的服务器(cpuinfo显示22个作为最高进程号)和66 Gig RAM.这里的开发团队正在运行一些占用内存的应用程序.
我观察到:
1.即使内存运行非常低(可用内存= 167 MB),也没有交换使用.想知道为什么服务器拒绝使用交换.有什么想法吗?
2.系统负载有时会增加到70这样的数字,我可以看到这些应用程序是I / O密集型的……这是否会导致如此高的负载平均值?
这是VMstat的输出
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache 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的输出
MemTotal: 66000044 kB MemFree: 11824808 kB Buffers: 1498068 kB Cached: 48842440 kB SwapCached: 0 kB Active: 5350660 kB Inactive: 46810284 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 66000044 kB LowFree: 11824808 kB SwapTotal: 131074324 kB SwapFree: 131074324 kB Dirty: 2641608 kB Writeback: 96 kB AnonPages: 1819092 kB Mapped: 766660 kB Slab: 1753100 kB PageTables: 131908 kB NFS_Unstable: 0 kB Bounce: 0 kB CommitLimit: 164074344 kB Committed_AS: 9460100 kB VmallocTotal: 34359738367 kB VmallocUsed: 336508 kB VmallocChunk: 34359401823 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 Hugepagesize: 2048 kB
解决方法
你读错了,几乎没有用你的记忆.
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.
从磁盘读取数据时,它会进入内存.如果没有其他任何东西竞争内存,该文件将留在内存中,直到应用程序尝试使用该空间.每当从磁盘读取文件时,首先检查缓存.
您几乎没有将内存用于应用程序,即使使用缓存,您也可以使用大量剩余内存.您的服务器不应该利用内存负载的交换空间.