OPTION(osd_peering_wq_batch_size, OPT_U64)
OPTION(osd_op_pq_max_tokens_per_priority, OPT_U64)
OPTION(osd_op_pq_min_cost, OPT_U64)
-OPTION(osd_disk_threads, OPT_INT)
+OPTION(osd_remove_threads, OPT_INT)
+OPTION(osd_recovery_threads, OPT_INT)
OPTION(osd_disk_thread_ioprio_class, OPT_STR) // rt realtime be best effort idle
OPTION(osd_disk_thread_ioprio_priority, OPT_INT) // 0-7
OPTION(osd_recover_clone_overlap, OPT_BOOL) // preserve clone_overlap during recovery/migration
monc(osd->monc),
peering_wq(osd->peering_wq),
recovery_gen_wq("recovery_gen_wq", cct->_conf->osd_recovery_thread_timeout,
- &osd->disk_tp),
+ &osd->recovery_tp),
class_handler(osd->class_handler),
pg_epoch_lock("OSDService::pg_epoch_lock"),
publish_lock("OSDService::publish_lock"),
"osd_peering_tp_threads"),
osd_op_tp(cct, "OSD::osd_op_tp", "tp_osd_tp",
get_num_op_threads()),
- disk_tp(cct, "OSD::disk_tp", "tp_osd_disk", cct->_conf->osd_disk_threads, "osd_disk_threads"),
+ remove_tp(cct, "OSD::remove_tp", "tp_osd_remove", cct->_conf->osd_remove_threads, "osd_remove_threads"),
+ recovery_tp(cct, "OSD::recovery_tp", "tp_osd_recovery", cct->_conf->osd_recovery_threads, "osd_recovery_threads"),
command_tp(cct, "OSD::command_tp", "tp_osd_cmd", 1),
session_waiting_lock("OSD::session_waiting_lock"),
osdmap_subscribe_lock("OSD::osdmap_subscribe_lock"),
store,
cct->_conf->osd_remove_thread_timeout,
cct->_conf->osd_remove_thread_suicide_timeout,
- &disk_tp),
+ &remove_tp),
service(this)
{
monc->set_messenger(client_messenger);
service.max_oldest_map = superblock.oldest_map;
osd_op_tp.start();
- disk_tp.start();
+ remove_tp.start();
+ recovery_tp.start();
command_tp.start();
set_disk_tp_priority();
command_tp.stop();
dout(10) << "command tp stopped" << dendl;
- disk_tp.drain();
- disk_tp.stop();
- dout(10) << "disk tp paused (new)" << dendl;
+ remove_tp.drain();
+ remove_tp.stop();
+ dout(10) << "remove tp paused (new)" << dendl;
+
+ recovery_tp.drain();
+ recovery_tp.stop();
+ dout(10) << "recovery tp paused (new)" << dendl;
dout(10) << "stopping agent" << dendl;
service.agent_stop();
return;
int cls =
ceph_ioprio_string_to_class(cct->_conf->osd_disk_thread_ioprio_class);
- if (cls < 0)
+ if (cls < 0) {
derr << __func__ << cpp_strerror(cls) << ": "
<< "osd_disk_thread_ioprio_class is " << cct->_conf->osd_disk_thread_ioprio_class
<< " but only the following values are allowed: idle, be or rt" << dendl;
- else
- disk_tp.set_ioprio(cls, cct->_conf->osd_disk_thread_ioprio_priority);
+ } else {
+ remove_tp.set_ioprio(cls, cct->_conf->osd_disk_thread_ioprio_priority);
+ recovery_tp.set_ioprio(cls, cct->_conf->osd_disk_thread_ioprio_priority);
+ }
}
// --------------------------------