From: David Zafman Date: Tue, 16 Jul 2019 19:02:43 +0000 (-0700) Subject: osd: After first interval populate vectors so 5min/15min values aren't 0 X-Git-Tag: v15.1.0~1664^2~10 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6555699d289769a44e9840424192a1be1a6ba00d;p=ceph.git osd: After first interval populate vectors so 5min/15min values aren't 0 Signed-off-by: David Zafman --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 18c13bfc4c7d..193e1c94c5a7 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -4850,14 +4850,17 @@ void OSD::handle_osd_ping(MOSDPing *m) // Record per osd interace ping times // Based on osd_heartbeat_interval ignoring that it is randomly short than this interval - if (i->second.hb_back_pingtime.size() < hb_vector_size) { - ceph_assert(i->second.hb_front_pingtime.size() == i->second.hb_back_pingtime.size()); - i->second.hb_back_pingtime.push_back(back_avg); - i->second.hb_back_min.push_back(back_min); - i->second.hb_back_max.push_back(back_max); - i->second.hb_front_pingtime.push_back(front_avg); - i->second.hb_front_min.push_back(front_min); - i->second.hb_front_max.push_back(front_max); + if (i->second.hb_back_pingtime.size() == 0) { + ceph_assert(i->second.hb_front_pingtime.size() == 0); + for (unsigned k = 0 ; k < hb_vector_size; ++k) { + i->second.hb_back_pingtime.push_back(back_avg); + i->second.hb_back_min.push_back(back_min); + i->second.hb_back_max.push_back(back_max); + i->second.hb_front_pingtime.push_back(front_avg); + i->second.hb_front_min.push_back(front_min); + i->second.hb_front_max.push_back(front_max); + ++i->second.hb_index; + } } else { int index = i->second.hb_index & (hb_vector_size - 1); i->second.hb_back_pingtime[index] = back_avg; @@ -4866,8 +4869,8 @@ void OSD::handle_osd_ping(MOSDPing *m) i->second.hb_front_pingtime[index] = front_avg; i->second.hb_front_min[index] = front_min; i->second.hb_front_max[index] = front_max; + ++i->second.hb_index; } - ++i->second.hb_index; { std::lock_guard l(service.stat_lock);