区zone的水位检查__zone_watermark_ok

2024-02-17 14:58
文章标签 检查 水位 ok watermark zone

本文主要是介绍区zone的水位检查__zone_watermark_ok,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 
在Linux内核的内存管理中,整个内存以zone为单位进行维护,函数__zone_watermark_ok()
用于对zone的水位进行检查,其主要是处理min和free_pages两个关系。
函数根据不同条件缩减或者扩张两个对象。
函数实现如下

mm/page_alloc.c

函数返回真,如果水位检查ok,否则返回false。

需要注意对order-0和order非零检查的不同。 /* * Return true if free base pages are above 'mark'. For high-order checks it * will return true of the order-0 watermark is reached and there is at least * one free page of a suitable size. Checking now avoids taking the zone lock * to check in the allocation paths if no pages are free. */ bool __zone_watermark_ok(struct zone *z, unsigned int order, 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 the caller does not have rights to ALLOC_HARDER then subtract * the high-atomic reserves. This will over-estimate the size of the * atomic reserve but it avoids a search. */  if (likely(!alloc_harder)) free_pages -= z->nr_reserved_highatomic; else min -= min / 4;

#ifdef CONFIG_CMA /* If allocation can't use CMA areas don't use free CMA pages */ if (!(alloc_flags & ALLOC_CMA))  free_pages -= zone_page_state(z, NR_FREE_CMA_PAGES); #endif

 /* * Check watermarks for an order-0 allocation request. If these * are not met, then a high-order request also cannot go ahead * even if a suitable page happened to be free. */  if (free_pages <= min + z->lowmem_reserve[classzone_idx]) return false;

 /* If this is an order-0 request then the watermark is fine */  if (!order) return true;

 /* For a high-order request, check at least 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])) return true; }

#ifdef CONFIG_CMA  if ((alloc_flags & ALLOC_CMA) && !list_empty(&area->free_list[MIGRATE_CMA])) { return true; } #endif  } return false; }

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

这篇关于区zone的水位检查__zone_watermark_ok的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/718116

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

使用Python检查CPU型号并弹出警告信息

《使用Python检查CPU型号并弹出警告信息》本教程将指导你如何编写一个Python程序,该程序能够在启动时检查计算机的CPU型号,如果检测到CPU型号包含“I3”,则会弹出一个警告窗口,感兴趣的小... 目录教程目标方法一所需库步骤一:安装所需库步骤二:编写python程序步骤三:运行程序注意事项方法二

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

锁检查脚本

--用dba用户执行以下语句,可以查看到被锁的语句。 select sql_text from v$sql where hash_value in (select sql_hash_value from v$session where sid in (select session_id from v$locked_object WHERE object_id='107181'))

C++ 代码检查工具

Cppcheck : http://cppcheck.sourceforge.net/ Clang Static Analyzer https://clang-analyzer.llvm.org / sudo apt install clang cppcheck main.c输出:Checking main.c...[main.c:15]: (error) Common reallo

2024年上海松江启动建筑绿色低碳发展专项检查,共绘城市节能新篇章

2024年9月4日,2024年度松江区建筑工程绿色低碳发展工作专项检查会议正式开展,会议内容主要围绕以下三点, 1、《关于开展 2024年度本市建筑领域绿色低碳发展工作监督检查的通知》宣贯。 2、分项计量、能效测评工作验收要求介绍。 3、专项检查工作安排。 我国在早期没有高度重视建筑物的环保节能,造成了过去30年内竣工的建筑绝大多数是高能耗工程建筑,这类工程建筑在未来几十年里将耗费许多能源

Flink中Watermark定时生成源码分析

《2021年最新版大数据面试题全面开启更新》 watermark的生成策略有两种:一种是周期性生成,另外一种是根据特定标记生成。在实际使用中大多数情况下会选择周期性生成方式也就是AssignerWithPeriodicWatermarks方式,使用方式如下: //指定为evenTime时间语义env.setStreamTimeCharacteristic(TimeCharacteri