当前位置: 首页 > news >正文

【0267】pg内核初始化 process table(ProcGlobal、PROC_HDR、PGPROC)分析

1. 前言

在postmaster或standalone后端启动期间初始化全局进程表(global process table)。该过程由InitProcGlobal()完成,对于此函数:

  • (1)还创建了支持所请求的后端数量所需的所有每个进程信号量。我们过去只在后端真正启动时才分配信号量,但这很糟糕,因为它会让Postgres在负载下失败——许多Unix系统(错误地)配置了对信号量数量的小限制,并且在尝试启动另一个后端时耗尽信号量是一个常见的故障。
  • (2) 因此,现在我们获取了足够的信号量,以在初始化时立即支持所需的最大后端数量——如果系统管理员将MaxConnections、 max_worker_processes、 max_wal_senders或autovacuum_max_workers设置得高于其内核所支持的值,他迟早会发现这一点。
  • (3)这里创建信号量的另一个原因是,信号量的实现通常要求我们在postmaster中创建信号量,而不是在后端中。
  • (4)注意:这不是由postmaster下的单个后端调用的,即使在EXEC_BACKEND的情况下也是如此。ProcGlobal和AuxiliaryProcs指针必须为EXEC_BACKEND操作专门传播。

2. 创建进程表(prcesses table)

函数InitProcGlobal()的源码实现如下:

void InitProcG

相关文章:

  • C语言从入门到实战——预处理详解
  • axios封装
  • ChatGPT 正测试Android屏幕小组件;联想ThinkBook 推出透明笔记本电脑
  • Jmeter基础
  • SpringMVC的文件上传与下载
  • element el-table表格内容宽度自适应,不换行,不隐藏
  • NR 2-STEP RA Absolute Timing Advance Command MAC CE的应用场景
  • 连接未来:嵌入式系统在物联网时代的应用
  • 【每日前端面经】2023-02-27
  • go - 学习笔记 -2
  • 服务器防火墙的应用技术有哪些
  • Redis 16种妙用
  • 黑马程序员——接口测试——day03——Postman断言、关联、参数化
  • 智慧公厕让社区生活更美好
  • Python实战:读取MATLAB文件数据(.mat文件)
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • axios 和 cookie 的那些事
  • Cumulo 的 ClojureScript 模块已经成型
  • docker-consul
  • FineReport中如何实现自动滚屏效果
  • JAVA并发编程--1.基础概念
  • Mocha测试初探
  • supervisor 永不挂掉的进程 安装以及使用
  • TCP拥塞控制
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • windows下使用nginx调试简介
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 对超线程几个不同角度的解释
  • 回流、重绘及其优化
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 两列自适应布局方案整理
  • 实战|智能家居行业移动应用性能分析
  • 通过几道题目学习二叉搜索树
  • 译米田引理
  • 阿里云ACE认证之理解CDN技术
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #Linux(帮助手册)
  • (rabbitmq的高级特性)消息可靠性
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (一) storm的集群安装与配置
  • (一)为什么要选择C++
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)Linux下编译安装log4cxx
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转)一些感悟
  • .gitattributes 文件
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 8.0 发布到 IIS
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET Core 版本不支持的问题
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net mvc 获取url中controller和action