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

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

boolzone_watermark_ok_safe(struct zone *z, unsigned int order,

                     unsigned long mark, intclasszone_idx)

{

       long free_pages = zone_page_state(z,NR_FREE_PAGES);

 

       if (z->percpu_drift_mark &&free_pages < z->percpu_drift_mark)

              free_pages = zone_page_state_snapshot(z,NR_FREE_PAGES);

 

       return__zone_watermark_ok(z, order, mark, classzone_idx, 0,

                                                        free_pages);

}

 

 

boolzone_watermark_ok(struct zone *z, unsigned int order, unsigned long mark,     int classzone_idx, unsigned intalloc_flags)

{

       return __zone_watermark_ok(z, order,mark, classzone_idx, alloc_flags,

                                   zone_page_state(z,NR_FREE_PAGES));

}

 

 

static inlinebool zone_watermark_fast(struct zone *z, unsigned int order,

              unsigned long mark, intclasszone_idx, unsigned int alloc_flags)

{

       long free_pages = zone_page_state(z,NR_FREE_PAGES);

       long cma_pages = 0;

 

#ifdef CONFIG_CMA

       /* If allocation can't use CMA areasdon't use free CMA pages */

       if (!(alloc_flags & ALLOC_CMA))

              cma_pages = zone_page_state(z,NR_FREE_CMA_PAGES);

#endif

 

       if (!order && (free_pages -cma_pages) > mark + z->lowmem_reserve[classzone_idx])

              return true;

 

       return__zone_watermark_ok(z, order, mark, classzone_idx, alloc_flags,

                                   free_pages);

}

 

 

bool __zone_watermark_ok(struct zone *z, unsigned intorder, unsigned long mark,

                      int classzone_idx, unsigned int alloc_flags,

                      long free_pages)

{

       long min = mark;

       int o;

       const bool alloc_harder = (alloc_flags& ALLOC_HARDER);

 

       /* free_pages may go negative - that's OK*/

       free_pages -= (1 << order) - 1;

 

       if (alloc_flags & ALLOC_HIGH)

              min -= min / 2;

 

       if (likely(!alloc_harder))

              free_pages -=z->nr_reserved_highatomic;

       else

              min -= min / 4;

 

#ifdef CONFIG_CMA

       /* If allocation can't use CMA areasdon't use free CMA pages */

       if (!(alloc_flags & ALLOC_CMA))

              free_pages -= zone_page_state(z,NR_FREE_CMA_PAGES);

#endif

 

       if (free_pages <= min +z->lowmem_reserve[classzone_idx])

              return false;

 

       /* If this is an order-0 request then thewatermark is fine */

       if (!order)

              return true;

 

       /* For a high-order request, check atleast one suitable page is free */

       for (o = order; o <MAX_ORDER; o++) {

              struct free_area *area = &z->free_area[o];

              int mt;

 

              if (!area->nr_free)

                     continue;

 

              if (alloc_harder)

                     return true;

 

              for (mt = 0; mt < MIGRATE_PCPTYPES; mt++) {

                     if(!list_empty(&area->free_list[mt]))

                            returntrue;

              }

 

#ifdef CONFIG_CMA

if((alloc_flags&ALLOC_CMA)&&

!list_empty(&area->free_list[MIGRATE_CMA])){

                     return true;

              }

#endif

       }

       return false;

}

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

你可能感兴趣的文章
Keras 提示找不到该层ValueError: No such layer: conv2d_589
查看>>
tensorflow models安装记录
查看>>
python glob.glob()函数
查看>>
jetson nano apt install 问题解决Could not handshake: An unexpected TLS packet was received. [xxx]
查看>>
jetson nano 安装python机器学习三方库问题
查看>>
Ubuntu安装jupyter后,使用时显示找不到命令(command not found)
查看>>
Ubuntu18解决容器内连网代理设置问题
查看>>
解决_tkinter.TclError: no display name and no $DISPLAY environment variable问题
查看>>
区别numpy.random.uniform和np.random.randn和np.random.binomial
查看>>
tf.expand_dims()用法
查看>>
jetson nano安装vscode及添加环境变量
查看>>
tf.reduce_sum()用法介绍
查看>>
tf.tile() 用法介绍及示例
查看>>
tf.transpose()转置函数介绍
查看>>
修改numpy array的数据类型
查看>>
解决TypeError: No conversion path for dtype: dtype(‘<U39‘)错误
查看>>
np.r_和np.c_用法解析
查看>>
pandas学习笔记----日期时间类型数据运算
查看>>
求两个列表的交集、并集和补集
查看>>
数据分析中判断数据类型常用方法汇总(pandas)
查看>>