Linux 操作系统 内存管理.pdfVIP

  1. 1、本文档共124页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux 操作系统 内存管理 目录 Linux 操作系统 内存管理 1 Docker 容器内存:我的容器为什么被杀了? 2 Linux buffer/cache解读 Linux page cache与buffer cache优化 Linux 一文详解缓冲区buffer和缓存cache Linux 为什么系统的Swap变高了(上) Linux 为什么系统的Swap变高了?(下) Linux 内存是如何工作的 43 Linux 内存机制以及手动释放 swap 和 buffer 和 cache Linux 内存泄漏了,我该如何定位和处理? Linux 内存管理 页回收和swap机制 Linux 内存页表管理 浅析 Linux 物理内存、虚拟内存 Linux 理解系统缓存提高程序运行效率 Linux 运维 内存监控与设置 Page Cache:为什么我的容器内存使用量总是在临界点? Redis 优化之内存分配控制 vm.overcommit_memory Swap:容器可以使用Swap空间吗? linux 内存性能评估工具 free/smem 内存一些小笔记 116 Docker 容器内存:我的容器为什么被杀了? Docker 容器内存:我的容器为什么被杀了? 不知道你在使用容器时,有没有过这样的经历?一个容器在系统中运行一段时间后,突然消失 了,看看自己程序的 log 文件,也没发现什么错误,不像是自己程序 Crash,但是容器就是消失 了。 那么这是怎么回事呢?接下来我们就一起来“破案”。 问题再现 容器在系统中被杀掉,其实只有一种情况,那就是容器中的进程使用了太多的内存。具体来说, 就是容器里所有进程使用的内存量,超过了容器所在 Memory Cgroup 里的内存限制。这时 Linux 系统就会主动杀死容器中的一个进程,往往这会导致整个容器的退出。 我们可以做个简单的容器,模拟一下这种容器被杀死的场景。做容器的 Dockerfile 和代码,你 可以从这里获得。 第 1 页 /共 122 页 Docker 容器内存:我的容器为什么被杀了? 接下来,我们用下面的这个脚本来启动容器,我们先把这个容器的 Cgroup 内存上限设置为 512MB(536870912 bytes)。 #!/bin/bash docker stop mem_alloc;docker rm mem_alloc docker run -d --name mem_alloc registry/mem_alloc:v1 sleep 2 CONTAINER_ID=$(sudo docker ps --format {{.ID}}\t{{.Names}} | grep -i mem_alloc | awk {print $1}) echo $CONTAINER_ID CGROUP_CONTAINER_PATH=$(find /sys/fs/cgroup/memory/ -name *$CONTAINER_ID*) echo $CGROUP_CONTAINER_PATH echo 536870912 $CGROUP_CONTAINER_PATH/memory.limit_in_bytes cat $CGROUP_CONTAINER_PATH/memory.limit_in_bytes 好了,容器启动后,里面有一个小程序 mem_alloc 会不断地申请内存。当它申请的内存超过 512MB 的时候,你就会发现,我们启动的这个容器消失了。 这时候,如果我们运行docker inspect 命令查看容器退出的原因,就会看到容器处于exited状 态,并且OOMKilled是 true。 第 2 页 /共

文档评论(0)

IT文档大师 + 关注
实名认证
文档贡献者

IT架构师、码农、自由职业者

1亿VIP精品文档

相关文档