cephrgw lifecycle理解

相关lc链接:rgw:lifecycle功能理解_ceph rgw lifecycle-CSDN博客
相关gc链接:RGW 的GC深入解析与调优-腾讯云开发者社区-腾讯云

每个rgw实例有rgw_lc_max_worker个worker (默认为3)来做lifecycle

RGWLC::LCWorker::entry()-> RGWLC::process() // 1天只执行1次,(如果rgw_lc_debug_interval>0,只要超过了该时间,就视为没有执行过,会继续执行)-> l.lock_exclusive()-> cls_rgw_lc_get_head() // 获取对象head,拿到marker-> cls_rgw_lc_get_entry() // 获取当前omap entry的状态-> cls_rgw_lc_get_next_entry() // 获取下一个omap entry-> cls_rgw_lc_set_entry() // 设置entry 状态-> cls_rgw_lc_put_head() // 设置head的marker-> l.unlock()-> bucket_lc_process() // 处理lifecycle 任务-> ol.get_obj() // 会借助LCObjLister去list objects, 然后将符合条件的bucket包装成对应的LCOpRule放入workpool,进而有worker来处理-> op_rule.process() // worker会调用注册的process函数,LCOpRule::process调用LCOpAction->process对于当前版本过期删实际会调用LCOpAction_CurrentExpiration::process()-> remove_expired_obj() -> del_op.delete_obj() // 实际会抽象一个删除cephrgw object的类RGWRados::Object::Delete完成对象的删除流程,因为对象的删除是一个多阶段的流程,里面会涉及标记对象状态,同时将对象记录到default.rgw.log中的gc.x对象队列中-> store->set_olh() // 处理.rgw.buckets.index 的状态-> bucket_index_link_olh() // 更新.rgw.buckets.index中对象索引的状态,确保业务不可见-> bucket_lc_post()

如果是空查每次有1写3读,耗时约4ms,每个worker大概的IO流程是:
1,lock_exclusive 写lc.x,获取lock,成功(这个不知道算写还是算读?看代码是WriteOP)
2,cls_rgw_lc_get_head 获取对象的head,成功
3,cls_rgw_lc_get_entry 获取entry,成功,但是为empty
4,unlock (这个算写还是读?)

如果是有任务,但是已在进行中,每次有1写3读,耗时约4ms,每个worker大概的IO流程是:
1,lock_exclusive 写lc.x,获取lock,成功
2,cls_rgw_lc_get_head 获取对象的head,成功
3,cls_rgw_lc_get_entry 获取entry,因为entry的状态是processing
4,unlock

如果lc.x有bucket任务,而且没有人执行过这个,大概4写2读,每个worker大概的IO流程是:
1,lock_exclusive 写lc.x,获取lock,成功
2,cls_rgw_lc_get_head 获取对象的head,成功
3,cls_rgw_lc_get_entry 获取entry,成功
4,cls_rgw_lc_set_entry 设置为processing,成功
5,cls_rgw_lc_put_head 设置marker,成功
6,bucket_lc_process 开始处理bucket
7,unlock

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/47905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LockSupport详解

目录 LockSupport详解1、LockSupport简介LockSupport 类的构造方法LockSupport 类的属性Thread类的parkBlocker属性LockSupport 类的常用方法挂起线程的相关方法唤醒线程的相关方法unpark(Thread thread)方法注意点LockSupport使用示例判断park的条件建议使用while而不是if引出…

算法篇 滑动窗口 leetCode 水果成篮

水果成蓝 1.题目描述2.图形分析2.1原理解释2.2 怎么想出使用滑动窗口2.3 图形分析 3.代码演示 1.题目描述 2.图形分析 2.1原理解释 2.2 怎么想出使用滑动窗口 2.3 图形分析 3.代码演示

学艺不精产生大坑-----vue 的v-else 和v-if控制多个组件的显隐,但是同时显示了

项目场景&#xff1a; 项目场景&#xff1a;在一个文件里通过v-else 和v-if控制多个组件的显隐 问题描述 明明满足了v-if的条件还是会自动执行v-else的&#xff0c;让两个组件同时显示了 <div v-if"busId 1"><taskApproval></taskApproval><…

Android 10.0 Launcher3拖拽图标进入hotseat自适应布局功能实现一

1.前言 在10.0的系统rom定制化开发中&#xff0c;在对于launcher3的一些开发定制中&#xff0c;在对hotseat的一些开发中&#xff0c;需要实现动态hotseat居中 的功能&#xff0c;就是在拖拽图标进入和拖出hotseat&#xff0c;都可以保持hotseat居中的功能&#xff0c;接下来分…

【Linux】基础I/O——理解ext2文件系统

我们到现在为止讲的都是打开的文件。现在我们讲讲没有打开的文件 如果一个文件没有被打开&#xff0c;那它就是在磁盘中被存储的&#xff0c;我们就要关心路径问题&#xff0c;存储问题&#xff0c;文件获取问题&#xff0c;那么操作系统是怎么处理这些问题的&#xff1f;不急…

配置SMTP服务器的要点是什么?有哪些限制?

配置SMTP服务器安全性如何保障&#xff1f;如何高效配置服务器&#xff1f; SMTP作为电子邮件发送的核心协议&#xff0c;其配置对于确保邮件的成功传递和安全至关重要。AokSend将详细介绍配置SMTP服务器的关键要点&#xff0c;帮助读者建立一个高效、安全的邮件发送系统。 配…

使用 Flask 3 搭建问答平台(三):注册页面模板渲染

前言 前端文件下载 链接https://pan.baidu.com/s/1Ju5hhhhy5pcUMM7VS3S5YA?pwd6666%C2%A0 知识点 1. 在路由中渲染前端页面 2. 使用 JinJa 2 模板实现前端代码复用 一、auth.py from flask import render_templatebp.route(/register, methods[GET]) def register():re…

swift小知识点

1、 如果你需要接收用户的输入可以使用 readLine(): let theInput readLine() 2、 类型别名对当前的类型定义了另一个名字&#xff0c;类型别名通过使用 typealias 关键字来定义。语法格式如下&#xff1a; typealias newname type 例如以下定义了 Int 的类型别名为 Fe…

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署Hallo :针对肖像图像动画的分层音频驱动视觉合成

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 零基础玩转各类开源AI项目 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 本文目标&#xff1a;在Ubuntu系统上部署Hallo&#x…

Python面试宝典第15题:岛屿数量

题目 在二维网格地图上&#xff0c;1 表示陆地&#xff0c;0 表示水域。如果相邻的陆地可以水平或垂直连接&#xff0c;则它们属于同一块岛屿。请进行编码&#xff0c;统计地图上的岛屿数量。比如&#xff1a;下面的二维网格地图&#xff0c;其岛屿数量为3。 基础知识 解决这类…

国产化低功耗HDMI转VGA方案,大量出货产品,广泛应用在显示器以及广告机产品

芯片描述&#xff1a; 兼具高性能和低成本效益的优点&#xff0c;是一款可以将高清视频 HDMI1.4 数字信号转换成 VGA 模拟信号输出的芯片。不需要提供外部电源&#xff0c;ICNM7301 就可以在正常模式下使用&#xff1b;ICNM7301 广 泛适用于各种市场系统和显示应用体系&#x…

机器学习包含子领域

机器学习是人工智能中最活跃的研究领域之一,它通过算法使计算机能够从数据中学习并做出决策。本文将详细介绍机器学习的各个子领域,包括它们的定义、主要方法和应用场景。 1. 监督学习 定义: 监督学习是一种机器学习类型,其中模型从标记的训练数据中学习,以便对新的、未标…

EasyExcel导入导出数据类型转换

前言&#xff1a; 1、基本数据类型转换&#xff1a;当前原始的数据类型是interger类型&#xff0c;需要在导出时将其映射为对应的字符串&#xff0c;并且导入时可以将字符串重新映射为interger类型。 2、时间格式转换&#xff1a;数据从数据库中获取的类型为LocalDate类型&…

Yum包下载

1. 起因 内网有一台服务器需要升级php版本,维护的同学又不想二进制安装.服务器只有一个光盘的yum仓库 2. 解决方法 解决思路如下: 外网找一台机器配置php8.3.8的仓库外网服务器下载软件集并打包内网服务器上传并解压实现升级 2.1 下载php8.3.8仓库 配置php仓库 rootcent…

【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列预测|附代码数据

全文链接&#xff1a;https://tecdat.cn/?p37019 分析师&#xff1a;Haopeng Li 随着我国股票市场规模的不断扩大、制度的不断完善&#xff0c;它在金融市场中也成为了越来越不可或缺的一部分。 【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列…

新时代多目标优化【数学建模】领域的极致探索——数学规划模型

目录 例1 1.问题重述 2.基本模型 变量定义&#xff1a; 目标函数&#xff1a; 约束条件&#xff1a; 3.模型分析与假设 4.模型求解 5.LINGO代码实现 6.结果解释 ​编辑 7.敏感性分析 8.结果解释 例2 奶制品的销售计划 1.问题重述 ​编辑 2.基本模型 3.模…

【网络】Socket编程

文章目录 正确理解端口号理解源IP地址和目的IP地址认识端口号端口号和进程ID 理解Socket网络字节序socket编程接口创建socket套接字bind绑定套接字listen建立监听accept接受连接connect建立连接sendto发送数据接收数据close关闭套接字 sockaddr结构体 正确理解端口号 理解源IP…

分布式唯一id的7种方案

背景 为什么需要使用分布式唯一id&#xff1f; 如果我们的系统是单体的&#xff0c;数据库是单库&#xff0c;那无所谓&#xff0c;怎么搞都行。 但是如果系统是多系统&#xff0c;如果id是和业务相关&#xff0c;由各个系统生成的情况下&#xff0c;那每个主机生成的主键id就…

Linux网络 -- TCP FIN包发送超时时间设置

使用 SO_LINGER 选项控制FIN包发送的超时时间 技术背景 在TCP连接中&#xff0c;当应用程序调用 close 或 shutdown 函数关闭一个socket时&#xff0c;操作系统内核会发送一个FIN包以通知对端连接即将关闭。默认情况下&#xff0c;内核会等待所有未发送的数据发送完毕后再发送…

使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试

前言 首届YashanDB「迁移体验官」开放后&#xff0c;陆续收到「体验官」们的投稿&#xff0c;小崖在此把优秀的投稿文章分享给大家~今天分享的用户文章是《使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试》&#xff08;作者&#xff1a;尚雷&#xff09;&#xff0c…