Linux-内存管理

初始化-参数设置

kernel_init
  do_one_initcall
    hugepage_init
      start_stop_khugepaged
        set_recommended_min_free_kbytes
           setup_per_zone_wmarks
              _setup_per_zone_wmarks
                  watermark_scale_factor = mult_frac ( k*watermark_scale_factor);
		           zone->_watermark[WMARK_LOW]  = min_wmark_pages(zone) + tmp;
		           zone->_watermark[WMARK_HIGH]  = min_wmark_pages(zone) + tmp * 2;

kswapd任务

kswapd_init
   kswapd_run
      kswapd
         kswapd_try_to_sleep
             prepare_kswapd_sleep   (1) 更新统计,计算谁该被淘汰
               pgdat_balanced
                 zone_watermark_ok_safe
         balance_pgdat            
             kswapd_shrink_node    (2)按统计结果,执行淘汰
                shrink_node
             allow_direct_reclaim     

内存分配

alloc_page
alloc_pages
  alloc_pages_node
     _alloc_pages_nodemask 
        get_page_from_freelist          
            zone_watermark_fast          (1)直接从Free内存中快速分配
            zone_watermark_ok  
            
        _alloc_pages_slowpath 
            wake_all_kswapds               (2.1) 唤醒kswapd 回收进程
            __alloc_pages_direct_reclaim   (2.2)强行直接回收
            __alloc_pages_may_oom          (2.3)不得不OOM-Kill,杀死某问题进程
               out_of_memory  
                  select_bad_process
                  oom_kill_process
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值