亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Docker 容器內存監控原理及應用

2024-09-01 13:48:26
字體:
來源:轉載
供稿:網友

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

這里有幾個概念:

  1. mem: 物理內存
  2. swap: 虛擬內存。即可以把數據存放在硬盤上的數據
  3. shared: 共享內存。存在在物理內存中。
  4. buffers: 用于存放要輸出到disk(塊設備)的數據的
  5. 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對容器內存進行監控。

該方式實際是通過對cgroup中相關數據進行取值從而計算得到。

cgroup

cgroup中的memory子系統為hierarchy提供了如下文件。

[root@localhost ~]$ ll /cgroup/memory/docker/53a11f13c08099dd6d21030dd2ddade54d5cdd7ae7e9e68f5ba055ad28498b6f/總用量 0--w--w--w- 1 root root 0 2月 22 12:51 cgroup.event_control-rw-r--r-- 1 root root 0 5月 25 17:07 cgroup.procs-rw-r--r-- 1 root root 0 2月 22 12:51 memory.failcnt--w------- 1 root root 0 2月 22 12:51 memory.force_empty-rw-r--r-- 1 root root 0 3月 30 17:06 memory.limit_in_bytes-rw-r--r-- 1 root root 0 2月 22 12:51 memory.max_usage_in_bytes-rw-r--r-- 1 root root 0 2月 22 12:51 memory.memsw.failcnt-rw-r--r-- 1 root root 0 3月 30 17:06 memory.memsw.limit_in_bytes-rw-r--r-- 1 root root 0 2月 22 12:51 memory.memsw.max_usage_in_bytes-r--r--r-- 1 root root 0 2月 22 12:51 memory.memsw.usage_in_bytes-rw-r--r-- 1 root root 0 2月 22 12:51 memory.move_charge_at_immigrate-rw-r--r-- 1 root root 0 2月 22 12:51 memory.oom_control-rw-r--r-- 1 root root 0 3月 30 17:06 memory.soft_limit_in_bytes-r--r--r-- 1 root root 0 2月 22 12:51 memory.stat-rw-r--r-- 1 root root 0 2月 22 12:51 memory.swappiness-r--r--r-- 1 root root 0 2月 22 12:51 memory.usage_in_bytes-rw-r--r-- 1 root root 0 2月 22 12:51 memory.use_hierarchy-rw-r--r-- 1 root root 0 2月 22 12:51 notify_on_release-rw-r--r-- 1 root root 0 2月 22 12:51 tasks

這些文件的具體含義可以查看相關資料cgroup memory。

這里主要介紹幾個與docker監控相關的。

 

文件名 說明
memory.usage_in_bytes 已使用的內存量(包含cache和buffer)(字節),相當于linux的used_meme
memory.limit_in_bytes 限制的內存總量(字節),相當于linux的total_mem
memory.failcnt 申請內存失敗次數計數
memory.memsw.usage_in_bytes 已使用的內存和swap(字節)
memory.memsw.limit_in_bytes 限制的內存和swap容量(字節)
memory.memsw.failcnt 申請內存和swap失敗次數計數
memory.stat 內存相關狀態

 

以下為一個容器的樣例。

[root@localhost 53a11f13c08099dd6d21030dd2ddade54d5cdd7ae7e9e68f5ba055ad28498b6f]$ cat memory.usage_in_bytes 135021858816[root@localhost 53a11f13c08099dd6d21030dd2ddade54d5cdd7ae7e9e68f5ba055ad28498b6f]$ cat memory.memsw.usage_in_bytes 135679291392[root@localhost 53a11f13c08099dd6d21030dd2ddade54d5cdd7ae7e9e68f5ba055ad28498b6f]$ cat memory.stat cache 134325506048rss 695980032mapped_file 16155119616pgpgin 21654116032pgpgout 21705492352swap 655171584inactive_anon 4218880active_anon 74202603520inactive_file 8365199360active_file 52449439744unevictable 0hierarchical_memory_limit 137438953472hierarchical_memsw_limit 274877906944total_cache 134325506048total_rss 695980032total_mapped_file 16155119616total_pgpgin 21654116032total_pgpgout 21705492352total_swap 655171584total_inactive_anon 4218880total_active_anon 74202603520total_inactive_file 8365199360total_active_file 52449439744total_unevictable 0

memory.stat

memory.stat包含有最豐富的

 

統計 描述
cache 頁緩存,包括 tmpfs(shmem),單位為字節
rss 匿名和 swap 緩存,不包括 tmpfs(shmem),單位為字節
mapped_file memory-mapped 映射的文件大小,包括 tmpfs(shmem),單位為字節
pgpgin 存入內存中的頁數
pgpgout 從內存中讀出的頁數
swap swap 用量,單位為字節
active_anon 在活躍的最近最少使用(least-recently-used,LRU)列表中的匿名和 swap 緩存,包括 tmpfs(shmem),單位為字節
inactive_anon 不活躍的 LRU 列表中的匿名和 swap 緩存,包括 tmpfs(shmem),單位為字節
active_file 活躍 LRU 列表中的 file-backed 內存,以字節為單位
inactive_file 不活躍 LRU 列表中的 file-backed 內存,以字節為單位
unevictable 無法再生的內存,以字節為單位
hierarchical_memory_limit 包含 memory cgroup 的層級的內存限制,單位為字節
hierarchical_memsw_limit 包含 memory cgroup 的層級的內存加 swap 限制,單位為字節

 

active_anon + inactive_anon = anonymous memory + file cache for tmpfs + swap cache

active_file + inactive_file = cache - size of tmpfs

docker原生內存監控

再來說到docker原生的docker stats。其具體實現在libcontainer中可以看到。其將容器的內存監控分為cache,usage,swap usage,kernel usage,kernel tcp usage。

其中cache是從memory.stat中的cache中獲取。

usage是使用memory.usage_in_bytes和memory.limit_in_bytes進行相除來計算使用率。這一方式有一個弊端,就是不夠細化,沒有區分出cache部分,不能真正反映內存使用率。因為一般來說cache是可以復用的內存部分,因此一般將其計入到可使用的部分。

可以考慮的改進計算方式

改進方式在統計內存使用量時將cache計算排除出去。類似于linux中計算real_used時將buffer和cache排除一樣。

cache并不能直接應用memory.stat中的cache,因為其中包括了tmpfs,而tmpfs算是實際使用的內存部分。

tmpfs即share memory,共享內存

因為在memory.stat中存在有

active_file + inactive_file = cache - size of tmpfs

因此可以計算實際使用的內存量為

real_used = memory.usage_in_bytes - (rss + active_file + inactive_file)

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日韩精品| 国产精品久久久久久久久久久久久| 91社影院在线观看| 久久国产精品影视| 国产剧情久久久久久| 91精品久久久久| 国产成人综合精品在线| 精品国产一区久久久| 成人写真视频福利网| 欧美激情在线视频二区| 亚洲一区二区少妇| 久久视频免费观看| 亚洲男人的天堂网站| 亚洲人成免费电影| 久久亚洲综合国产精品99麻豆精品福利| 日韩成人中文字幕在线观看| 91国内精品久久| …久久精品99久久香蕉国产| 亚洲变态欧美另类捆绑| 亚洲片国产一区一级在线观看| 欧美性生交xxxxxdddd| 中文字幕亚洲综合久久筱田步美| 性亚洲最疯狂xxxx高清| 超碰91人人草人人干| 九九精品视频在线| 欧美性受xxx| 国产亚洲精品久久| 成人97在线观看视频| 懂色aⅴ精品一区二区三区蜜月| 成人在线激情视频| 8090理伦午夜在线电影| 久久亚洲欧美日韩精品专区| 欧美精品在线播放| 国语对白做受69| 成人黄色中文字幕| 日韩精品一区二区三区第95| 这里只有精品在线观看| 亚洲综合最新在线| 庆余年2免费日韩剧观看大牛| 日韩免费av片在线观看| 国产激情久久久| 国产精品久久久久久久app| 日韩高清欧美高清| 爽爽爽爽爽爽爽成人免费观看| 亚洲视频一区二区| 色av吧综合网| 久久久999精品免费| 亚洲精品欧美日韩专区| 夜夜躁日日躁狠狠久久88av| 欧美激情综合色综合啪啪五月| 久久91亚洲精品中文字幕奶水| 欧美另类在线播放| 日韩欧美成人免费视频| 亚洲欧美中文字幕在线一区| 欧美激情综合亚洲一二区| 最新国产精品拍自在线播放| 亚洲视频第一页| 亚洲国产精品中文| 久久手机精品视频| 欧美极度另类性三渗透| 国产欧美日韩中文| 国产精欧美一区二区三区| 97视频在线观看播放| 欧洲亚洲免费视频| 992tv成人免费影院| 国产精品成人一区二区三区吃奶| 国产a∨精品一区二区三区不卡| 亚洲网站在线观看| 成人免费高清完整版在线观看| 欧美日韩国产丝袜美女| 成人精品福利视频| 日本不卡免费高清视频| 97涩涩爰在线观看亚洲| 亚洲人成在线播放| 久久精品国产91精品亚洲| 国产国语刺激对白av不卡| 亚洲影院色在线观看免费| 欧美成人三级视频网站| 亚洲人成电影在线观看天堂色| 国产精品www色诱视频| 福利视频第一区| 日韩性xxxx爱| 久久精品久久精品亚洲人| 日本成人在线视频网址| 日韩av在线不卡| 中文欧美日本在线资源| 日韩欧美黄色动漫| 久久人人爽国产| 久久视频在线视频| 午夜精品久久久久久久白皮肤| 亚洲天堂一区二区三区| 92版电视剧仙鹤神针在线观看| 91免费在线视频网站| 国产精品视频久久久| 日韩欧美成人区| 91欧美日韩一区| 国产女人精品视频| 国内精品在线一区| 国产成人av网址| 2019中文字幕免费视频| 97色在线视频观看| 欧美二区在线播放| 亚洲第一二三四五区| 亚洲性av在线| 欧美美女操人视频| 青青久久av北条麻妃黑人| 91精品久久久久| 97碰碰碰免费色视频| 96精品久久久久中文字幕| 日韩不卡中文字幕| 亚洲色图35p| 91成人性视频| 欧美限制级电影在线观看| 97视频在线观看成人| 欧美性极品少妇精品网站| 成人在线一区二区| 国产精品精品久久久| 人人爽久久涩噜噜噜网站| 国产欧美一区二区三区四区| 美女扒开尿口让男人操亚洲视频网站| 一区二区三区久久精品| 久久伊人91精品综合网站| 亚洲精品国精品久久99热一| 欧美精品在线观看| 中文在线资源观看视频网站免费不卡| 国产一区二区三区视频在线观看| 伊人久久男人天堂| 欧美国产激情18| 96精品视频在线| 久久亚洲精品小早川怜子66| 欧美成人精品h版在线观看| 三级精品视频久久久久| 国产97在线播放| 98精品在线视频| 欧美影院在线播放| 久久黄色av网站| 国内精品久久久久久影视8| 日韩精品一二三四区| 国产有码在线一区二区视频| 在线电影av不卡网址| 97国产精品人人爽人人做| 久久国产精品电影| 国产欧美精品va在线观看| 日韩成人在线视频| 97久久伊人激情网| 亚洲欧美在线播放| 国内精品久久久久久中文字幕| 亚洲欧美日韩综合| 亚洲码在线观看| 青青久久av北条麻妃黑人| 亚洲高清免费观看高清完整版| 永久免费看mv网站入口亚洲| 国产成人+综合亚洲+天堂| 国产一区私人高清影院| 久久久久久这里只有精品| 中文字幕精品网| 欧美国产视频一区二区| 国产精品免费久久久久影院| 国产成人午夜视频网址| 午夜精品久久久久久99热软件| 欧美在线视频在线播放完整版免费观看| 国产一区二区三区网站| 成人午夜在线视频一区| 亚洲黄色片网站|