From 8e00319d1aece2f6d99004d8a53a38ed2e88ea19 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 --- 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 b344dd5b8d42e..847991b3cff02 100644 --- a/src/common/legacy_config_opts.h +++ b/src/common/legacy_config_opts.h @@ -1290,6 +1290,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 b586d495c5b5a..016a5c32638d7 100644 --- a/src/common/options.cc +++ b/src/common/options.cc @@ -5548,7 +5548,7 @@ std::vector