]> 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>
Mon, 4 Nov 2019 22:21:21 +0000 (14:21 -0800)
Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 6555699d289769a44e9840424192a1be1a6ba00d)

src/osd/OSD.cc

index 3b0ace922067177ec9ae353bb558092b6a5c0106..a868527ab17f8d581330e2ffa8b70ff002daede4 100644 (file)
@@ -5263,14 +5263,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;
@@ -5279,8 +5282,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);