From a6b6ed5c4d89ed1e41932bf779665eacaa22b229 Mon Sep 17 00:00:00 2001 From: Matt Benjamin Date: Tue, 17 Mar 2020 21:47:17 -0400 Subject: [PATCH] rgwlc: permit per-bucket thread parallelism Introduces type-safe work queues to process lifecycle actions in parallel. Currently, optimized for copy avoidance, so limiting fetch overlap--because rgw_bucket_dir_entry is b.i.g. Oh, heck. Open it up. Define bsf and f in the right order. Signed-off-by: Matt Benjamin (cherry picked from commit 8e00319d1aece2f6d99004d8a53a38ed2e88ea19) --- src/common/legacy_config_opts.h | 1 + src/common/options.cc | 19 +- src/rgw/rgw_lc.cc | 438 ++++++++++++++++++++++---------- src/rgw/rgw_lc.h | 18 +- 4 files changed, 328 insertions(+), 148 deletions(-) diff --git a/src/common/legacy_config_opts.h b/src/common/legacy_config_opts.h index 3d84f1d6d1598..b0562247dda99 100644 --- a/src/common/legacy_config_opts.h +++ b/src/common/legacy_config_opts.h @@ -1291,6 +1291,7 @@ OPTION(rgw_content_length_compat, OPT_BOOL) // Check both HTTP_CONTENT_LENGTH an OPTION(rgw_lifecycle_work_time, OPT_STR) //job process lc at 00:00-06:00s OPTION(rgw_lc_lock_max_time, OPT_INT) // total run time for a single lc processor work OPTION(rgw_lc_max_worker, OPT_INT)// number of (parellized) LCWorker threads +OPTION(rgw_lc_max_wp_worker, OPT_INT)// number of per-LCWorker pool threads OPTION(rgw_lc_max_objs, OPT_INT) OPTION(rgw_lc_max_rules, OPT_U32) // Max rules set on one bucket OPTION(rgw_lc_debug_interval, OPT_INT) // Debug run interval, in seconds diff --git a/src/common/options.cc b/src/common/options.cc index 433729386b1ef..533b096e66f97 100644 --- a/src/common/options.cc +++ b/src/common/options.cc @@ -5532,7 +5532,7 @@ std::vector