区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

相关文章

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

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

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

河道水位流量监测系统解决方案

一、概述 中国是世界上河流最多的国家之一。中国有许多源远流长的大江大河。其中流域面积超过1000平方千米的河流就有2221条。常年水面面积1平方公里及以上天然湖泊2865个,湖泊水面总面积7.80万平方公里。其中,淡水湖1594个,咸水湖945个,盐湖166个,其他160个。随着经济社会快速发展,中国河湖管理保护出现了一些新问题,如河道干涸湖泊萎缩,水环境状况恶化,河湖功能退化等,对保障水安全带来

相机检查内参 外参

目录 检查内参 外参 像素点投影到世界坐标系,再投回到2d坐标系: 检查内参 外参 import cv2import numpy as np# 假设我们有以下相机内参K = np.array([[418.96369417, 0.0, 489.16315478],[0.0, 419.04813353, 267.88796254],[0.0, 0.0, 1.0]], dtype=n

大数据-121 - Flink Time Watermark 详解 附带示例详解

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis (已更完)Kafka(已更完)Spark(已更完)Flink(正在更新!) 章节内容 上节我们完成了如下的内容: 滑动窗口:时间驱动、事件

Kafka【十一】数据一致性与高水位(HW :High Watermark)机制

【1】数据一致性 Kafka的设计目标是:高吞吐、高并发、高性能。为了做到以上三点,它必须设计成分布式的,多台机器可以同时提供读写,并且需要为数据的存储做冗余备份。 图中的主题有3个分区,每个分区有3个副本,这样数据可以冗余存储,提高了数据的可用性。并且3个副本有两种角色,Leader和Follower,Follower副本会同步Leader副本的数据。 一旦Leader副本挂了,Follo