我想知道linux丢失的内存,我试图在Linux机器上找不到内存但无法找到它,哪里丢失了?以下是一些细节..
我有Linux(CentOs-6.7)VPS和15GB RAM,运行ruby-on-rails应用程序/ apache,下面是当前内存使用情况。
> [root@myvps ~]# free -m
total used free shared buffers cached
Mem: 14941 11295 3645 0 146 801
-/+ buffers/cache: 10347 4594
Swap: 4095 0 4095
- / + buffers / cache = 10347(目前使用的内存约为10GB)
[root @ myvps~] #cat / proc / meminfo
MemTotal:15299820 kB
MemFree:3733272 kB
缓冲区:150368 kB
缓存:821256 kB
SwapCached:0 kB
有效:1120800 kB
不活跃:293316 kB
活跃(匿名):442520 kB
无效(匿名):180 kB
活动(文件):678280 kB
不活动(文件):293136 kB
不可挽回:0 kB
Mlocked:0 kB
SwapTotal:4194300 kB
SwapFree:4194300 kB
脏:36 kB
回写:0 kB
AnonPages:442508 kB
映射:15008 kB
Shmem:212 kB
平板:77340 kB
SReclaimable:44512 kB
SUnreclaim:32828 kB
KernelStack:4992 kB
PageTables:7328 kB
NFS_Unstable:0 kB
弹跳:0 kB
WritebackTmp:0 kB
CommitLimit:11844208 kB
Committed_AS:736300 kB
VmallocTotal:34359738367 kB
VmallocUsed:183576 kB
VmallocChunk:34351291740 kB
硬件损坏:0 kB
AnonHugePages:186368 kB
HugePages_Total:0
HugePages_Free:0
HugePages_Rsvd:0
HugePages_Surp:0
Hugepagesize:2048 kB
DirectMap4k:10240 kB
DirectMap2M:15718400 kB
现在我想检查/确认哪个进程占用了内存..
我计算所有进程RES(rss)的总和
[root @ myvps~] #ps axo pid,rss,cmd | awk' {sum + = $ 2} END {print sum / 1024}' 的 706.441
现在每个(RES)我们有706MB 目前正在使用哪个小于1GB
现在我检查上面粘贴的/ proc / meminfo中的slab内存..
Slab:77340 kB SReclaimable:44512 kB SUnreclaim:32828 kB
因此我们目前使用的是77MB平板内存,其中44MB可回收。因此总使用内存= 706.411MB + 77.3MB = 783.711MB
所以最终数字是(总使用记忆 - RES(适用于所有流程)+ slabmemory (10347 - 783.711MB = 9563.289)
现在丢失的内存9563,大约9 + GB,不知道丢失的内存在哪里消失了?或哪个进程使用该内存?
只有重启才能恢复丢失的内存,但经过一段时间后,内存丢失率将迅速增加。我也读过下面的帖子,但仍无法找到真正的原因。
https://techtalk.intersec.com/2013/07/memory-part-2-understanding-process-memory/
请帮助&建议进一步排除故障..
由于 麦克