Ceph OSD IO线程健康状态检查机制




目前看到H版本OSD IO线程健康状态有3种心跳机制(L版本对比看了下,基本没变化):
1. service线程:

  1. OSD tick:

  1. 其他OSD发过来的ping请求:

在L版本中其实还有一种机制,基于perfcounter实现,在service线程里(第一种机制代码位置相同)会更新健康IO线程数量和总IO线程数量到perfcounter中的l_cct_total_workers、l_cct_unhealthy_workers两个计数器上,可惜OSD启动时没有enable这两个counter(使用CephContext::enable_perf_counter),搜索代码可以看到rgw和rbd_mirror两个模块enable了,如果有需要我们可以自己在OSD启动过程中enable起来(g_ceph_context->enable_perf_counter()即可)。之后就可以通过ceph daemon osd.0 perf dump来查看相关counter信息了。

心跳超时默认15s打告警日志,超过150s会导致OSD自杀。