return data.u64.read();
 }
 
-void PerfCounters::tinc(int idx, utime_t amt)
+void PerfCounters::tinc(int idx, utime_t amt, uint32_t avgcount)
 {
   if (!m_cct->_conf->perf)
     return;
   if (!(data.type & PERFCOUNTER_TIME))
     return;
   if (data.type & PERFCOUNTER_LONGRUNAVG) {
-    data.avgcount.inc();
+    data.avgcount.add(avgcount);
     data.u64.add(amt.to_nsec());
-    data.avgcount2.inc();
+    data.avgcount2.add(avgcount);
   } else {
     data.u64.add(amt.to_nsec());
   }
 }
 
-void PerfCounters::tinc(int idx, ceph::timespan amt)
+void PerfCounters::tinc(int idx, ceph::timespan amt, uint32_t avgcount)
 {
   if (!m_cct->_conf->perf)
     return;
   if (!(data.type & PERFCOUNTER_TIME))
     return;
   if (data.type & PERFCOUNTER_LONGRUNAVG) {
-    data.avgcount.inc();
+    data.avgcount.add(avgcount);
     data.u64.add(amt.count());
-    data.avgcount2.inc();
+    data.avgcount2.add(avgcount);
   } else {
     data.u64.add(amt.count());
   }
 
   uint64_t get(int idx) const;
 
   void tset(int idx, utime_t v);
-  void tinc(int idx, utime_t v);
-  void tinc(int idx, ceph::timespan v);
+  void tinc(int idx, utime_t v, uint32_t avgcount = 1);
+  void tinc(int idx, ceph::timespan v, uint32_t avgcount = 1);
   utime_t tget(int idx) const;
 
   void hinc(int idx, int64_t x, int64_t y);