"Client write operations"); // client writes
osd_plb.add_u64_counter(l_osd_op_w_inb, "op_w_in_bytes",
"Client data written"); // client write in bytes
- osd_plb.add_time_avg(l_osd_op_w_rlat, "op_w_rlat",
- "Client write operation readable/applied latency"); // client write readable/applied latency
osd_plb.add_time_avg(l_osd_op_w_lat, "op_w_latency",
"Latency of write operation (including queue time)"); // client write latency
osd_plb.add_time_avg(l_osd_op_w_process_lat, "op_w_process_latency",
"Client read-modify-write operations write in"); // client rmw in bytes
osd_plb.add_u64_counter(l_osd_op_rw_outb,"op_rw_out_bytes",
"Client read-modify-write operations read out "); // client rmw out bytes
- osd_plb.add_time_avg(l_osd_op_rw_rlat,"op_rw_rlat",
- "Client read-modify-write operation readable/applied latency"); // client rmw readable/applied latency
osd_plb.add_time_avg(l_osd_op_rw_lat, "op_rw_latency",
"Latency of read-modify-write operation (including queue time)"); // client rmw latency
osd_plb.add_time_avg(l_osd_op_rw_process_lat, "op_rw_process_latency",
osd->send_message_osd_client(reply, m->get_connection());
ctx->sent_ack = true;
}
-
- // note the write is now readable (for rlatency calc). note
- // that this will only be defined if the write is readable
- // _prior_ to being committed; it will not get set with
- // writeahead journaling, for instance.
- if (ctx->readable_stamp == utime_t())
- ctx->readable_stamp = ceph_clock_now();
});
ctx->register_on_commit(
[m, ctx, this](){
utime_t process_latency = now;
process_latency -= ctx->op->get_dequeued_time();
- utime_t rlatency;
- if (ctx->readable_stamp != utime_t()) {
- rlatency = ctx->readable_stamp;
- rlatency -= ctx->op->get_req()->get_recv_stamp();
- }
-
uint64_t inb = ctx->bytes_written;
uint64_t outb = ctx->bytes_read;
osd->logger->inc(l_osd_op_rw_outb, outb);
osd->logger->tinc(l_osd_op_rw_lat, latency);
osd->logger->tinc(l_osd_op_rw_process_lat, process_latency);
- if (rlatency != utime_t())
- osd->logger->tinc(l_osd_op_rw_rlat, rlatency);
} else if (op->may_read()) {
osd->logger->inc(l_osd_op_r);
osd->logger->inc(l_osd_op_r_outb, outb);
osd->logger->inc(l_osd_op_w_inb, inb);
osd->logger->tinc(l_osd_op_w_lat, latency);
osd->logger->tinc(l_osd_op_w_process_lat, process_latency);
- if (rlatency != utime_t())
- osd->logger->tinc(l_osd_op_w_rlat, rlatency);
} else
ceph_abort();
dout(15) << "log_op_stats " << *m
<< " inb " << inb
<< " outb " << outb
- << " rlat " << rlatency
<< " lat " << latency << dendl;
}