zoukankan      html  css  js  c++  java
  • 为什么实际内存使用量已经超过了memory.soft_limit_in_bytes,但是并没有立即触发try_to_free_pages in try_charge

    kswapd发起的回收过程汇总会通过cgroup的excessed树进行回收,但是这个kwap都是啥时候被唤醒呢?为啥不是mem_cgroup_soft_limit_reclaim

    发现在内核在在:page_counter_try_charge中的page_counter_try_charge中已经把page给接受了,除非memcg->memory->limit设置了,只有这个时候内存才被会直接回收,如果没有设置memory.limit_in_bytes,那么这里就不会设置就不会走到下面的直接回收的过程!不过话说回来,这里的memsw又是啥

    1902     if (!do_memsw_account() ||
    1903         page_counter_try_charge(&memcg->memsw, batch, &counter)) { /* 把batch加入到memcg->memsw是干嘛呀 */
    1904         if (page_counter_try_charge(&memcg->memory, batch, &counter)) /* 会讲其charge到父进程中去?*/
    1905             goto done_restock;
    1906         if (do_memsw_account())
    1907             page_counter_uncharge(&memcg->memsw, batch);
    1908         mem_over_limit = mem_cgroup_from_counter(counter, memory);
    1909     } else {
    1910         mem_over_limit = mem_cgroup_from_counter(counter, memsw);
    

     memsw在代码中号称是legacy consumer-oriented counters 【老版本留下的用户导向的计数器】

    这里有空再查吧,不是什么大事情,那么soft_limit到底是在哪里控制的呢?超过了soft_limit,会触发啥

    page_counter_limit

  • 相关阅读:
    Python-TXT文本操作
    Appium-处理系统弹窗
    Appium-服务关键字
    App Inspector-iOS真机功能详解
    Appium+Python3+iOS真机环境搭建
    Appium-超过60s的应用场景如何处理
    python-入门的第一个爬虫例子
    Mysql(五) JDBC
    Mysql(四)正则表达式
    Mysql(三)约束
  • 原文地址:https://www.cnblogs.com/honpey/p/7837246.html
Copyright © 2011-2022 走看看