ceph存储 ceph源码调试中admin_socket接口

来源:互联网 发布:上市公司高管薪酬数据 编辑:程序博客网 时间:2024/05/21 10:25
admin_socket:
  每一个进程一个,即每一个asok文件一个,在进程初始化时进行初始化,在进程关闭时关闭,osd进程admin_socket已经初始化,如果想获取或者设置,直接通过
admin_socket->register_command进行命令注册,OSD::asok_command进行响应,以及在osd::shutdown时调用unregister_command注销注册的命令,释放OSDSocketHook。
1、osd中是通过(ObjectStore *)store指针进行访问的其他子模块,例如journal

现有机制示例:
"flush_journal": "flush the journal to permanent store" // 例子
{
1、register_command
void OSD::final_init()
  r = admin_socket->register_command("flush_journal", "flush_journal",
                                     asok_hook,
                                     "flush the journal to permanent store");
2、asok_command(真正数据收集)
bool OSD::asok_command(string command, cmdmap_t& cmdmap, string format,
ostream& ss)
if (command == "flush_journal") {
    store->sync_and_flush();
}
3、unregister_command
OSD::shutdown
cct->get_admin_socket()->unregister_command("flush_journal");
}


其中JSONFormatter与XMLFormatter均继承与Formatter这个格式基类,Formatter在源码调试或者性能调优中起到很重要的作用,值得细细研究。

0 0
原创粉丝点击