首页 > 网站 > 建站经验 > 正文

Docker 容器内存监控原理及应用

2019-11-02 16:15:08
字体:
来源:转载
供稿:网友

Docker 容器内存监控

linux内存监控

要明白docker容器内存是如何计算的,首先要明白linux中内存的相关概念。

使用free命令可以查看当前内存使用情况。

[root@localhost ~]$ free        total    used    free   shared  buffers   cachedMem:   264420684 213853512  50567172  71822688  2095364 175733516-/+ buffers/cache:  36024632 228396052Swap:   16777212  1277964  15499248

这里有几个概念:

mem: 物理内存 swap: 虚拟内存。即可以把数据存放在硬盘上的数据 shared: 共享内存。存在在物理内存中。 buffers: 用于存放要输出到disk(块设备)的数据的 cached: 存放从disk上读出的数据

可以参考这里。

为方便说明,我对free的结果做了一个对应。

[root@localhost ~]$ free        total    used    free    shared  buffers  cachedMem:   total_mem  used_mem  free_mem  shared_mem  buffer   cache-/+ buffers/cache: real_used  real_freeSwap:  total_swap used_swap  free_swap

名称 说明 total_mem 物理内存总量 used_mem 已使用的物理内存量 free_mem 空闲的物理内存量 shared_mem 共享内存量 buffer buffer所占内存量 cache cache所占内存量 real_used 实际使用的内存量 real_free 实际空闲的内存量 total_swap swap总量 used_swap 已使用的swap free_swap 空闲的swap

一般认为,buffer和cache是还可以再进行利用的内存,所以在计算空闲内存时,会将其剔除。

因此这里有几个等式:

real_used = used_mem - buffer - cachereal_free = free_mem + buffer + cachetotal_mem = used_mem + free_mem

了解了这些,我们再来看free的数据源。其实其数据源是来自于/proc/memeinfo文件。

[root@localhost ~]$ cat /proc/meminfo MemTotal:    264420684 kBMemFree:    50566436 kBBuffers:     2095356 kBCached:     175732644 kBSwapCached:    123688 kBActive:     165515340 kBInactive:    37004224 kBActive(anon):  92066880 kBInactive(anon): 4455076 kBActive(file):  73448460 kBInactive(file): 32549148 kBUnevictable:   362900 kBMlocked:      74696 kBSwapTotal:   16777212 kBSwapFree:    15499248 kBDirty:       2860 kBWriteback:       0 kBAnonPages:   24932928 kBMapped:     58165040 kBShmem:     71822688 kBSlab:      8374496 kBSReclaimable:  8163096 kBSUnreclaim:    211400 kBKernelStack:    45824 kBPageTables:    606296 kBNFS_Unstable:     0 kBBounce:        0 kBWritebackTmp:     0 kBCommitLimit:  148987552 kBCommitted_AS:  114755628 kBVmallocTotal:  34359738367 kBVmallocUsed:   772092 kBVmallocChunk:  34225428328 kBHardwareCorrupted:   0 kBAnonHugePages: 22083584 kBHugePages_Total:    0HugePages_Free:    0HugePages_Rsvd:    0HugePages_Surp:    0Hugepagesize:    2048 kBDirectMap4k:    7168 kBDirectMap2M:   2015232 kBDirectMap1G:  266338304 kB

docker

说完linux的内存,我们再来看下docker的内存监控。docker自身提供了一种内存监控的方式,即可以通过docker stats对容器内存进行监控。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表