• 对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 的情形除外)

    结束

  • 相关阅读:
    Codeforces Round #634 E2. Three Blocks Palindrome (hard version)(双指针/前缀和/二分/好题)
    Codeforces Round #634 D. Anti-Sudoku(构造/水)
    自动化----docker
    自动化---zabbbix监控
    awk使用
    自动化-KVM安装
    nginx教程以及正则
    自动化-cobbler
    Python
    自动化kickstart
  • 原文地址:https://www.cnblogs.com/gaojian/p/2751316.html
Copyright © 2020-2023  润新知