void ImageCtx::perf_start(string name) {
PerfCountersBuilder plb(cct, name, l_librbd_first, l_librbd_last);
- plb.add_u64_counter(l_librbd_rd, "rd");
- plb.add_u64_counter(l_librbd_rd_bytes, "rd_bytes");
- plb.add_time_avg(l_librbd_rd_latency, "rd_latency");
- plb.add_u64_counter(l_librbd_wr, "wr");
- plb.add_u64_counter(l_librbd_wr_bytes, "wr_bytes");
- plb.add_time_avg(l_librbd_wr_latency, "wr_latency");
- plb.add_u64_counter(l_librbd_discard, "discard");
- plb.add_u64_counter(l_librbd_discard_bytes, "discard_bytes");
- plb.add_time_avg(l_librbd_discard_latency, "discard_latency");
- plb.add_u64_counter(l_librbd_flush, "flush");
- plb.add_u64_counter(l_librbd_aio_rd, "aio_rd");
- plb.add_u64_counter(l_librbd_aio_rd_bytes, "aio_rd_bytes");
- plb.add_time_avg(l_librbd_aio_rd_latency, "aio_rd_latency");
- plb.add_u64_counter(l_librbd_aio_wr, "aio_wr");
- plb.add_u64_counter(l_librbd_aio_wr_bytes, "aio_wr_bytes");
- plb.add_time_avg(l_librbd_aio_wr_latency, "aio_wr_latency");
- plb.add_u64_counter(l_librbd_aio_discard, "aio_discard");
- plb.add_u64_counter(l_librbd_aio_discard_bytes, "aio_discard_bytes");
- plb.add_time_avg(l_librbd_aio_discard_latency, "aio_discard_latency");
- plb.add_u64_counter(l_librbd_aio_flush, "aio_flush");
- plb.add_time_avg(l_librbd_aio_flush_latency, "aio_flush_latency");
- plb.add_u64_counter(l_librbd_snap_create, "snap_create");
- plb.add_u64_counter(l_librbd_snap_remove, "snap_remove");
- plb.add_u64_counter(l_librbd_snap_rollback, "snap_rollback");
- plb.add_u64_counter(l_librbd_notify, "notify");
- plb.add_u64_counter(l_librbd_resize, "resize");
- plb.add_u64_counter(l_librbd_readahead, "readahead");
- plb.add_u64_counter(l_librbd_readahead_bytes, "readahead_bytes");
+ plb.add_u64_counter(l_librbd_rd, "rd", "Reads");
+ plb.add_u64_counter(l_librbd_rd_bytes, "rd_bytes", "Data size in reads");
+ plb.add_time_avg(l_librbd_rd_latency, "rd_latency", "Latency of reads");
+ plb.add_u64_counter(l_librbd_wr, "wr", "Writes");
+ plb.add_u64_counter(l_librbd_wr_bytes, "wr_bytes", "Written data");
+ plb.add_time_avg(l_librbd_wr_latency, "wr_latency", "Write latency");
+ plb.add_u64_counter(l_librbd_discard, "discard", "Discards");
+ plb.add_u64_counter(l_librbd_discard_bytes, "discard_bytes", "Discarded data");
+ plb.add_time_avg(l_librbd_discard_latency, "discard_latency", "Discard latency");
+ plb.add_u64_counter(l_librbd_flush, "flush", "Flushes");
+ plb.add_u64_counter(l_librbd_aio_rd, "aio_rd", "Async reads");
+ plb.add_u64_counter(l_librbd_aio_rd_bytes, "aio_rd_bytes", "Data size in async reads");
+ plb.add_time_avg(l_librbd_aio_rd_latency, "aio_rd_latency", "Latency of async reads");
+ plb.add_u64_counter(l_librbd_aio_wr, "aio_wr", "Async writes");
+ plb.add_u64_counter(l_librbd_aio_wr_bytes, "aio_wr_bytes", "Data size in async writes");
+ plb.add_time_avg(l_librbd_aio_wr_latency, "aio_wr_latency", "Latency of async writes");
+ plb.add_u64_counter(l_librbd_aio_discard, "aio_discard", "Async discards");
+ plb.add_u64_counter(l_librbd_aio_discard_bytes, "aio_discard_bytes", "Data size in async discards");
+ plb.add_time_avg(l_librbd_aio_discard_latency, "aio_discard_latency", "Latency of async discards");
+ plb.add_u64_counter(l_librbd_aio_flush, "aio_flush", "Async flushes");
+ plb.add_time_avg(l_librbd_aio_flush_latency, "aio_flush_latency", "Latency of async flushes");
+ plb.add_u64_counter(l_librbd_snap_create, "snap_create", "Snap creations");
+ plb.add_u64_counter(l_librbd_snap_remove, "snap_remove", "Snap removals");
+ plb.add_u64_counter(l_librbd_snap_rollback, "snap_rollback", "Snap rollbacks");
+ plb.add_u64_counter(l_librbd_notify, "notify", "Updated header notifications");
+ plb.add_u64_counter(l_librbd_resize, "resize", "Resizes");
+ plb.add_u64_counter(l_librbd_readahead, "readahead", "Read ahead");
+ plb.add_u64_counter(l_librbd_readahead_bytes, "readahead_bytes", "Data size in read ahead");
perfcounter = plb.create_perf_counters();
cct->get_perfcounters_collection()->add(perfcounter);