From: Sage Weil Date: Wed, 18 Jun 2014 18:02:58 +0000 (-0700) Subject: osd: allow io priority to be set for the disk_tp X-Git-Tag: v0.67.11~14 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b5dafe1c0f7ecf7c3a25d0be5dfddcbe3d07e69e;p=ceph.git osd: allow io priority to be set for the disk_tp The disk_tp covers scrubbing, pg deletion, and snap trimming Signed-off-by: Sage Weil (cherry picked from commit 84b3003119eeb8acfb3faacf357e6c6a452950e3) Conflicts: src/osd/OSD.cc (cherry picked from commit 987ad133415aa988061c95259f9412b05ce8ac7e) --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index a7baee9e36dd..1fd91c327d83 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -407,6 +407,8 @@ OPTION(osd_peering_wq_batch_size, OPT_U64, 20) OPTION(osd_op_pq_max_tokens_per_priority, OPT_U64, 4194304) OPTION(osd_op_pq_min_cost, OPT_U64, 65536) OPTION(osd_disk_threads, OPT_INT, 1) +OPTION(osd_disk_thread_ioprio_class, OPT_INT, -1) // 1 = RT, 2 = BE, 3 = IDLE +OPTION(osd_disk_thread_ioprio_priority, OPT_INT, -1) // 0-7 OPTION(osd_recovery_threads, OPT_INT, 1) OPTION(osd_recover_clone_overlap, OPT_BOOL, true) // preserve clone_overlap during recovery/migration OPTION(osd_backfill_scan_min, OPT_INT, 64) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index c46f567e4743..c5d0821561ed 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1242,6 +1242,8 @@ int OSD::init() disk_tp.start(); command_tp.start(); + set_disk_tp_priority(); + // start the heartbeat heartbeat_thread.create(); @@ -7258,6 +7260,8 @@ const char** OSD::get_tracked_conf_keys() const { static const char* KEYS[] = { "osd_max_backfills", + "osd_disk_thread_ioprio_class", + "osd_disk_thread_ioprio_priority", NULL }; return KEYS; @@ -7270,6 +7274,20 @@ void OSD::handle_conf_change(const struct md_config_t *conf, service.local_reserver.set_max(g_conf->osd_max_backfills); service.remote_reserver.set_max(g_conf->osd_max_backfills); } + if (changed.count("osd_disk_thread_ioprio_class") || + changed.count("osd_disk_thread_ioprio_priority")) { + set_disk_tp_priority(); + } +} + +void OSD::set_disk_tp_priority() +{ + dout(10) << __func__ + << " class " << cct->_conf->osd_disk_thread_ioprio_class + << " priority " << cct->_conf->osd_disk_thread_ioprio_priority + << dendl; + disk_tp.set_ioprio(cct->_conf->osd_disk_thread_ioprio_class, + cct->_conf->osd_disk_thread_ioprio_priority); } // -------------------------------- diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 8cd4c8dd5149..ed309fdfb173 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -738,6 +738,8 @@ private: bool paused_recovery; + void set_disk_tp_priority(); + // -- sessions -- public: struct Session : public RefCountedObject {