]> git.apps.os.sepia.ceph.com Git - ceph-ci.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, 26 Aug 2019 15:25:34 +0000 (15:25 +0000)
Signed-off-by: David Zafman <dzafman@redhat.com>
src/osd/OSD.cc

index 18c13bfc4c7d0c8b12de938e08f0ed394b374c70..193e1c94c5a791f82199c93fa5d38a6c2ea5dc49 100644 (file)
@@ -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);