博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shrink_zones
阅读量:4153 次
发布时间:2019-05-25

本文共 1344 字,大约阅读时间需要 4 分钟。

static void shrink_zones(struct zonelist *zonelist,struct scan_control *sc)

{

       struct zoneref *z;

       struct zone *zone;

       unsigned long nr_soft_reclaimed;

       unsigned long nr_soft_scanned;

       gfp_t orig_mask;

       enumzone_type requested_highidx = gfp_zone(sc->gfp_mask);

 

       orig_mask = sc->gfp_mask;

       if(buffer_heads_over_limit)

              sc->gfp_mask |= __GFP_HIGHMEM;

 

       for_each_zone_zonelist_nodemask(zone,z,zonelist,gfp_zone(sc->gfp_mask),sc->nodemask){

              enum zone_type classzone_idx;

 

              if (!populated_zone(zone))

                     continue;

 

              classzone_idx = requested_highidx;

              while (!populated_zone(zone->zone_pgdat->node_zones +classzone_idx))

                     classzone_idx--;

 

              if (global_reclaim(sc)) {

                     if(!cpuset_zone_allowed(zone, GFP_KERNEL |

                                                        __GFP_HARDWALL))

                            continue;

 

                     if (sc->priority !=DEF_PRIORITY &&

                         !zone_reclaimable(zone))

                            continue;      /* Let kswapd poll it */

 

                     if (IS_ENABLED(CONFIG_COMPACTION)&&

                         sc->order > PAGE_ALLOC_COSTLY_ORDER&&

                         zonelist_zone_idx(z) <=requested_highidx &&

                         compaction_ready(zone, sc->order,requested_highidx)) {

                            sc->compaction_ready= true;

                            continue;

                     }

 

                     nr_soft_scanned = 0;

                     nr_soft_reclaimed =mem_cgroup_soft_limit_reclaim(zone,

                                          sc->order,sc->gfp_mask,&nr_soft_scanned);

                     sc->nr_reclaimed +=nr_soft_reclaimed;

                     sc->nr_scanned +=nr_soft_scanned;

                     /* need some check foravoid more shrink_zone() */

              }

 

              shrink_zone(zone, sc,zone_idx(zone) == classzone_idx);

       }

 

       sc->gfp_mask = orig_mask;

}

转载地址:http://mxqti.baihongyu.com/

你可能感兴趣的文章
第三方开源库:imageLoader的使用
查看>>
Android studio_迁移Eclipse项目到Android studio
查看>>
JavaScript setTimeout() clearTimeout() 方法
查看>>
CSS border 属性及用border画各种图形
查看>>
转载知乎-前端汇总资源
查看>>
JavaScript substr() 方法
查看>>
JavaScript slice() 方法
查看>>
JavaScript substring() 方法
查看>>
HTML 5 新的表单元素 datalist keygen output
查看>>
(转载)正确理解cookie和session机制原理
查看>>
jQuery ajax - ajax() 方法
查看>>
将有序数组转换为平衡二叉搜索树
查看>>
最长递增子序列
查看>>
从一列数中筛除尽可能少的数,使得从左往右看这些数是从小到大再从大到小...
查看>>
判断一个整数是否是回文数
查看>>
腾讯的一道面试题—不用除法求数字乘积
查看>>
素数算法
查看>>
java多线程环境单例模式实现详解
查看>>
将一个数插入到有序的数列中,插入后的数列仍然有序
查看>>
在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found
查看>>