刚入职的时候曾经定位过一个ceph集群时钟回调8小时的单子。后来投入到了项目中。
最近同事问我osd向monitor定时report的处理过程,也涉及到了这一块的内容,而且
正式入职答辩的时候,主管问,那这个tick线程是定时调用的吗?当时被问懵了,因为自己并没有深入的前后看到这块。事情总要有头有尾,遗留的问题总要解决,写这篇博客的目的就是回答当时的遗留问题。究竟monitor的这个tick是怎么跑的?
Monitor的tick线程启动
同时调用PaxosService的tick函数
int Monitor::init()
int Monitor::init()
{
dout(2) << "init" << dendl;
Mutex::Locker l(lock);
finisher.start();
// start ticker
timer.init();
new_tick();
···
}
void Monitor::new_tick()
void Monitor::new_tick()
{
timer.add_event_after(g_conf->mon_tick_interval, new C_MonContext(this, [this](int) {
tick();
}));
}
时间间隔为5s
OPTION(mon_tick_interval, OPT_INT)
</