对Postmaster 中 bufmgr.c 的 BgBufferSync.c 中静态变量的学习理解---saved_info_valid

简介:

开始

复制代码
bool                    
BgBufferSync(void)                    
{                    
    ……                
                    
    /*                
     * Information saved between calls so we can determine the strategy                
     * point's advance rate and avoid scanning already-cleaned buffers.                
     */                
    static           bool       saved_info_valid = false;                
    static           int        prev_strategy_buf_id;        
    static          uint32         prev_strategy_passes;        
    static          int        next_to_clean;        
    static     uint32     next_passes;        
                    
                    
    /* Moving averages of allocation rate and clean-buffer density */                
    static     float     smoothed_alloc = 0;        
    static     float     smoothed_density = 10.0;        
                    
    ……                
                    
    /*                
     * If we're not running the LRU scan, just stop after doing the stats                
     * stuff.  We mark the saved state invalid so that we can recover sanely                
     * if LRU scan is turned back on later.                
     */                
    if (bgwriter_lru_maxpages <= 0)                
    {                
        saved_info_valid = false;            
        return true;            
    }                
                    
    if (saved_info_valid)                
    {                
        ……            
    }                
    else                
    {                
        ……            
    }                
                    
    /* Update saved info for next time */                
    prev_strategy_buf_id = strategy_buf_id;                
    prev_strategy_passes = strategy_passes;                
    saved_info_valid = true;                
                    
    ……                
    /* Return true if OK to hibernate */                
    return (bufs_to_lap == 0 && recent_alloc == 0);                
}                    
复制代码

一开始 :saved_info_valid 是 false的。

运行一次后,就会变成 true。(bgwriter_lru_maxpages <=0 的情形除外)

结束





本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/archive/2012/11/02/2751316.html,如需转载请自行联系原作者

目录
相关文章
|
JSON 前端开发 Java
SpringBoot之响应的详细解析
SpringBoot之响应的详细解析
142 0
|
9月前
|
人工智能 搜索推荐 Serverless
云端问道22期——AI智能语音实时互动
《云端问道22期——AI智能语音实时互动》分享了构建用户与AI智能语音实时互动的方法,涵盖七个部分:进入解决方案页、方案介绍、操作步骤、创建AI智能体、实时工作模版、部署应用及应用体验。通过阿里云平台,用户可以快速部署并体验AI语音通话功能,包括语音转文字、文字转语音、个性化定制智能体人设及接入私有知识库等。整个过程简单流畅,适合开发者和企业快速上手。
439 8
|
监控 安全 机器人
Hunter狩猎者夹子机器人系统开发丨现成案例
区块链系统由无数节点构成,这些节点类似于一台tai.独立工作的计算机,当需要记账的时候,每一个节点都会参与竞争,系统会在一段时间内选出合适的节点来记账,而这个节点就会在数据区块中记录下近期发生的数据变化,记录完成后,节点就会把这个数据区块发送给其他节点,其他节点首先会核实数据,数据无误的话,就会把这个数据区块也放入自己的账本当中,于是系统里的所有节点都拥有一个完全一样的数据区块,即账本。 这种记账方式被称为区块链技术或者分布式总账技术
Hunter狩猎者夹子机器人系统开发丨现成案例
|
索引 Python
独热(One-Hot)编码简述
独热(One-Hot)编码简述
927 0
独热(One-Hot)编码简述
|
存储 算法 安全
实验验证:鲁棒性图像感知哈希
实验验证:鲁棒性图像感知哈希
723 0
实验验证:鲁棒性图像感知哈希
python字典多键值及重复键值的使用方法(详解)
python字典多键值及重复键值的使用方法(详解)
python字典多键值及重复键值的使用方法(详解)
|
存储 Java Maven
【版本2020.03】使用idea导入maven项目
【版本2020.03】使用idea导入maven项目
2108 0
【版本2020.03】使用idea导入maven项目
|
运维 资源调度 Kubernetes
如何进行架构设计 | 深度揭秘阿里云 Serverless Kubernetes(2)
架构层面上,阿里云如何实现 Serverless Kubernetes ?
如何进行架构设计 | 深度揭秘阿里云 Serverless Kubernetes(2)
|
SQL Prometheus 监控
使用prometheus监控hudi相关指标
本文介绍如何通过prometheus监控hudi相关指标
使用prometheus监控hudi相关指标
|
存储 Linux 调度
考研操作系统【1.5 操作系统引导与虚拟机】
操作系统是一种程序,程序以数据的形式存放于硬盘,硬盘分为多个区,一台计算机中有多个或多种外部存储设备;操作系统引导是计算机利用CPU运行特定程序,通过程序识别硬盘,识别硬盘分区,识别硬盘分区上的操作系统,最后通过程序启动操作系统。
572 0