searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

介绍下pg删除过程中两个重要配置项的含义

2023-06-25 09:12:51
47
0

1、先看下pool删除时删除pg流程的源码和日志:

2023-01-15 10:49:33.634 osd.1 15 queue_for_pg_delete on 1.0 e 15
2023-01-15 10:49:38.636 crt=0'0 unknown NOTIFY mbc={}] _delete_some
2023-01-15 10:49:38.636 _collection_list 1.0_head start GHMIN end GHMAX max 30
2023-01-15 10:49:38.636 _collection_list range #-3:00000000::::0#0 to #-3:40000000::::0#0 and #1:00000000::::0#0 to #1:40000000::::0#0 start GHMIN
2023-01-15 10:49:38.636 _collection_list pend #-3:40000000::::0#0
2023-01-15 10:49:38.636 _collection_list oid #-1:30f0e826:::osdmap.13:0# >= #-3:40000000::::0#0
2023-01-15 10:49:38.636 _collection_list oid #1:00000000::::head# end GHMAX
2023-01-15 10:49:38.636 _collection_list oid #1:40000000::::head# >= #1:40000000::::0#0
2023-01-15 10:49:38.636 collection_list 1.0_head start GHMIN end GHMAX max 30 = 0, ls.size() = 1, next = GHMAX
2023-01-15 10:49:38.636 crt=0'0 unknown NOTIFY mbc={}] _delete_some finished
2023-01-15 10:49:38.636 queue_transactions ch 0x55b09b60de00 1.0_head
......
2023-01-15 10:49:38.654 osd.1 15 try_finish_pg_delete 1.0 0x55b09916f000
2023-01-15 10:49:38.654 osd.1:0._detach_pg 1.0 0x55b09916f000
2023-01-15 10:49:38.654 cancel_reservation cancel 1.0 (not found)
2023-01-15 10:49:38.668 bluestore.OnodeSpace(0x55b09b60df58 in 0x55b099090000) clear
 
简单来说,PG删除的OP到达osd后,osd模块开始删除PG里的object(在这一步做的流控),然后开始清理这些object对应的空间,try_finish_pg_delete完成收尾工作,最后bluestore.OnodeSpace进行了空间的回收,即删除OP一到,立刻开始pg的删除及空间的回收。
 
2、设置osd_delete_sleep=2,查看log可以看到默认情况下29个对象为一组进行删除。在同一个pg对象内delete_needs_sleep初始值为false,这样就会发生pg删除发生时会立马删一轮对象(默认29个以内),若对象数目超过29,则睡2秒后会继续删剩下的对象,删完29个若还有剩余,会继续睡2秒继续删:
2023-01-15 22:51:24.131 7f4583d56700 10 osd.0 pg_epoch: 39 pg[6.6( v 38'53 (0'0,38'53] lb MIN (bitwise) local-lis/les=36/37 n=53 ec=36/36 lis/c 36/36 les/c/f 37/37/0 39/39/39) [] r=-1 lpr=39 DELETING pi=[36,39)/1 crt=38'53 lcod 38'52 unknown NOTIFY mbc={}] _delete_some
2023-01-15 22:51:24.131 7f4583d56700 20 osd.0 pg_epoch: 39 pg[6.6( v 38'53 (0'0,38'53] lb MIN (bitwise) local-lis/les=36/37 n=53 ec=36/36 lis/c 36/36 les/c/f 37/37/0 39/39/39) [] r=-1 lpr=39 DELETING pi=[36,39)/1 crt=38'53 lcod 38'52 unknown NOTIFY mbc={}] _delete_some [#6:60000000::::head#,#6:602ff85b:::50db2b8f-da7b-430a-baf0-21f2c32e79d4.14117.1_object3-7:head#,#6:606cde99:::50db2b8f-da7b-430a-baf0-21f2c32e79d4.14117.1__shadow_.zH_iagypcqg5DTsaTWClqxtVYsh-hK9_22:head#,,,,#6:63deaaf2:::50db2b8f-da7b-430a-baf0-21f2c32e79d4.14117.1__shadow_.hbugvpCqnXbhGeSg4_yuNtWlXdpu4sy_23:head#]
2023-01-15 22:51:24.132 7f4583d56700 20 osd.0 pg_epoch: 39 pg[6.6( v 38'53 (0'0,38'53] lb MIN (bitwise) local-lis/les=36/37 n=53 ec=36/36 lis/c 36/36 les/c/f 37/37/0 39/39/39) [] r=-1 lpr=39 DELETING pi=[36,39)/1 crt=38'53 lcod 38'52 unknown NOTIFY mbc={}] _delete_some deleting 29 objects
2023-01-15 22:51:24.159 7f4583d56700 10 osd.0 pg_epoch: 39 pg[6.6( v 38'53 (0'0,38'53] lb MIN (bitwise) local-lis/les=36/37 n=53 ec=36/36 lis/c 36/36 les/c/f 37/37/0 39/39/39) [] r=-1 lpr=39 DELETING pi=[36,39)/1 crt=38'53 lcod 38'52 unknown NOTIFY mbc={}] _delete_some
2023-01-15 22:51:24.159 7f4583d56700 20 osd.0 pg_epoch: 39 pg[6.6( v 38'53 (0'0,38'53] lb MIN (bitwise) local-lis/les=36/37 n=53 ec=36/36 lis/c 36/36 les/c/f 37/37/0 39/39/39) [] r=-1 lpr=39 DELETING pi=[36,39)/1 crt=38'53 lcod 38'52 unknown NOTIFY mbc={}] _delete_some Delete scheduled at 2023-01-15 22:53:24.160610
 
综上,osd_delete_sleep和delete_needs_sleep配置项用于对osd的delete object操作的窗口期进行控制,从而达到对delete object操作进行“节流”的效果,减少系统资源的占用,从而降低对客户端访问性能的影响。
 
0条评论
0 / 1000