]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: After first interval populate vectors so 5min/15min values aren't 0
authorDavid Zafman <dzafman@redhat.com>
Tue, 16 Jul 2019 19:02:43 +0000 (12:02 -0700)
committerDavid Zafman <dzafman@redhat.com>
Fri, 18 Oct 2019 17:49:41 +0000 (10:49 -0700)
Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 6555699d289769a44e9840424192a1be1a6ba00d)

src/osd/OSD.cc

index 6023ec58530782c62d35752a430d02f808c0f325..f8b255e7c376ef1dade9514142dd96b08907a6d0 100644 (file)
@@ -4803,14 +4803,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;
@@ -4819,8 +4822,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);