在Linux上,内存已用但未报告

分享于 

6分钟阅读

互联网

  繁體

问题:

我比较了两台服务器之间的/proc/meminfotop的输出,它们报告的内存使用量非常相似(流程智能),但是有一个内存不足400.


# Server with missing memory


 total used free shared buff/cache available


Mem: 957 707 85 0 164 107


Swap: 0 0 0



# Other server, looking good


 total used free shared buff/cache available


Mem: 953 224 210 0 518 553


Swap: 0 0 0



下面是/proc/meminfo的输出


$ cat /proc/meminfo


MemTotal: 980756 kB


MemFree: 89020 kB


MemAvailable: 108824 kB


Buffers: 32440 kB


Cached: 96944 kB


SwapCached: 0 kB


Active: 196416 kB


Inactive: 61448 kB


Active(anon): 128888 kB


Inactive(anon): 124 kB


Active(file): 67528 kB


Inactive(file): 61324 kB


Unevictable: 0 kB


Mlocked: 0 kB


SwapTotal: 0 kB


SwapFree: 0 kB


Dirty: 656 kB


Writeback: 0 kB


AnonPages: 128488 kB


Mapped: 57032 kB


Shmem: 524 kB


Slab: 78228 kB


SReclaimable: 37016 kB


SUnreclaim: 41212 kB


KernelStack: 2896 kB


PageTables: 7956 kB


NFS_Unstable: 0 kB


Bounce: 0 kB


WritebackTmp: 0 kB


CommitLimit: 490376 kB


Committed_AS: 1099792 kB


VmallocTotal: 34359738367 kB


VmallocUsed: 0 kB


VmallocChunk: 0 kB


HardwareCorrupted: 0 kB


AnonHugePages: 0 kB


ShmemHugePages: 0 kB


ShmemPmdMapped: 0 kB


CmaTotal: 0 kB


CmaFree: 0 kB


HugePages_Total: 0


HugePages_Free: 0


HugePages_Rsvd: 0


HugePages_Surp: 0


Hugepagesize: 2048 kB


DirectMap4k: 444392 kB


DirectMap2M: 575488 kB


DirectMap1G: 0 kB



top的输出(按内存使用量排序)


top - 09:35:16 up 706 days, 11:49, 1 user, load average: 0.15, 0.03, 0.01


Tasks: 124 total, 1 running, 82 sleeping, 0 stopped, 0 zombie


%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st


KiB Mem : 980756 total, 87896 free, 726108 used, 166752 buff/cache


KiB Swap: 0 total, 0 free, 0 used. 108060 avail Mem



 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND


 6348 ubuntu 20 0 582484 35120 13156 S 0.0 4.1 0:07.42 node


14394 root 20 0 439088 19760 2692 S 0.3 3.0 695:53.01 python


 2557 root 19 -1 124824 19424 7956 S 0.0 2.0 75:05.85 systemd-journal


24174 ubuntu 20 0 25932 7904 3384 S 0.0 0.8 0:00.08 bash


 724 root 20 0 170944 7844 12 S 0.0 0.8 0:00.15 networkd-dispat


24089 root 20 0 107988 6820 5820 S 0.0 0.7 0:00.01 sshd


14402 root 20 0 35268 5960 1952 S 0.0 0.6 7:38.52 python


14404 root 20 0 34748 5520 2060 S 0.0 0.6 6:34.19 python


14403 root 20 0 33512 5000 1684 S 0.0 0.5 0:57.69 python


24173 ubuntu 20 0 108344 4672 3548 S 0.3 0.5 0:00.04 sshd


14407 root 20 0 33508 4408 1104 S 0.0 0.4 0:35.97 python


14408 nobody 20 0 35616 4388 1000 S 0.0 0.4 1:54.36 python


 1 root 20 0 225416 4348 1876 S 0.0 0.4 3:45.45 systemd


 704 root 20 0 71304 4032 2500 S 0.0 0.4 0:56.31 systemd-logind


24594 ubuntu 20 0 42240 3656 2984 R 0.0 0.4 0:00.02 top



以及mount | grep tmp 显示这些文件系统使用的内存。主要的文件系统是ext (因此没有XFS )


udev on /dev type devtmpfs (rw,nosuid,relatime,size=478348k,nr_inodes=119587,mode=755)


tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=98076k,mode=755)


tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,noexec)


tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)


tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)


tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=98072k,mode=700,uid=1000,gid=1000)



服务器已经运行了大约2年了,它需要重新启动(我认为这个问题会消失),但是,我想找出丢失的~400mb,

编辑

下面是两个服务器中systemd-cgtop -m的减少输出,健康的那个看起来像是使用了更多的内存,但这不是这种情况!


# unhealthy server


Control Group Tasks %CPU Memory Input/s Output/s


/ 181 2.0 250.1M - -


/system.slice 91 1.3 188.3M - -


/user.slice 26 0.7 104.1M - -


/system.slice/logging-agent.service 11 1.1 40.5M - -


/system.slice/mycustom.service 7 - 34.6M - -



# healthy server


Control Group Tasks %CPU Memory Input/s Output/s


/ 187 2.6 655.7M - -


/system.slice 95 1.4 446.6M - -


/user.slice 24 1.1 287.5M - -


/system.slice/cron.service 1 - 238.3M - -


/system.slice/mycustom.service 7 - 43.7M - -


/system.slice/logging-agent.service 11 1.3 40.0M - -




答案1:

只需60 MB即可获得圆形1024 MB的压力将减少一点,

大量的程序使用python或node,你会想把它们分开。

在Linux上,使用cgroups度量,在systemd系统上,启用内存记帐并查看systemd-cgtop -m。

服务器已经运行了大约2年了,它需要重新启动

记录/proc/meminfosystemd-cgtop指标,更新和重新引导。



rep  REPO  Report  MEMO  内存  
相关文章