seq_printf(sf, "wait_sum %llu\n", ws);
        }
 
+       seq_printf(sf, "nr_bursts %d\n", cfs_b->nr_burst);
+       seq_printf(sf, "burst_time %llu\n", cfs_b->burst_time);
+
        return 0;
 }
 #endif /* CONFIG_CFS_BANDWIDTH */
        {
                struct task_group *tg = css_tg(css);
                struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth;
-               u64 throttled_usec;
+               u64 throttled_usec, burst_usec;
 
                throttled_usec = cfs_b->throttled_time;
                do_div(throttled_usec, NSEC_PER_USEC);
+               burst_usec = cfs_b->burst_time;
+               do_div(burst_usec, NSEC_PER_USEC);
 
                seq_printf(sf, "nr_periods %d\n"
                           "nr_throttled %d\n"
-                          "throttled_usec %llu\n",
+                          "throttled_usec %llu\n"
+                          "nr_bursts %d\n"
+                          "burst_usec %llu\n",
                           cfs_b->nr_periods, cfs_b->nr_throttled,
-                          throttled_usec);
+                          throttled_usec, cfs_b->nr_burst, burst_usec);
        }
 #endif
        return 0;
 
  */
 void __refill_cfs_bandwidth_runtime(struct cfs_bandwidth *cfs_b)
 {
+       s64 runtime;
+
        if (unlikely(cfs_b->quota == RUNTIME_INF))
                return;
 
        cfs_b->runtime += cfs_b->quota;
+       runtime = cfs_b->runtime_snap - cfs_b->runtime;
+       if (runtime > 0) {
+               cfs_b->burst_time += runtime;
+               cfs_b->nr_burst++;
+       }
+
        cfs_b->runtime = min(cfs_b->runtime, cfs_b->quota + cfs_b->burst);
+       cfs_b->runtime_snap = cfs_b->runtime;
 }
 
 static inline struct cfs_bandwidth *tg_cfs_bandwidth(struct task_group *tg)