* EventCenter maintain a set of file descriptor and handle registered events.
*/
class EventCenter {
-
- using clock_type = ceph::coarse_mono_clock;
+ public:
// should be enough;
static const int MAX_EVENTCENTER = 24;
+ private:
+ using clock_type = ceph::coarse_mono_clock;
+
struct AssociatedCenters {
EventCenter *centers[MAX_EVENTCENTER];
AssociatedCenters(CephContext *c) {
{
const uint64_t InitEventNumber = 5000;
num_workers = cct->_conf->ms_async_op_threads;
+ if (num_workers >= EventCenter::MAX_EVENTCENTER) {
+ ldout(cct, 0) << __func__ << " max thread limit is "
+ << EventCenter::MAX_EVENTCENTER << ", switching to this now. "
+ << "Higher thread values are unnecessary and currently unsupported."
+ << dendl;
+ num_workers = EventCenter::MAX_EVENTCENTER;
+ }
+
for (unsigned i = 0; i < num_workers; ++i) {
Worker *w = create_worker(cct, type, i);
w->center.init(InitEventNumber, i);