Use clock_gettime()

test-sq-poll
Vitaliy Filippov 2020-03-03 00:54:42 +03:00
parent 7eac7b6d55
commit 20125db181
4 changed files with 18 additions and 18 deletions

View File

@ -349,7 +349,7 @@ void osd_t::stop_client(int peer_fd)
void osd_t::exec_op(osd_op_t *cur_op) void osd_t::exec_op(osd_op_t *cur_op)
{ {
gettimeofday(&cur_op->tv_begin, NULL); clock_gettime(CLOCK_REALTIME, &cur_op->tv_begin);
if (stopping) if (stopping)
{ {
// Throw operation away // Throw operation away

6
osd.h
View File

@ -1,7 +1,7 @@
#pragma once #pragma once
#include <sys/types.h> #include <sys/types.h>
#include <sys/time.h> #include <time.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <fcntl.h> #include <fcntl.h>
@ -93,8 +93,8 @@ struct osd_primary_op_data_t;
struct osd_op_t struct osd_op_t
{ {
timeval tv_begin; timespec tv_begin;
timeval tv_send; timespec tv_send;
int op_type = OSD_OP_IN; int op_type = OSD_OP_IN;
int peer_fd; int peer_fd;
osd_any_op_t req; osd_any_op_t req;

View File

@ -92,12 +92,12 @@ void osd_t::handle_read(ring_data_t *data, int peer_fd)
cl.read_reply_id = 0; cl.read_reply_id = 0;
cl.read_state = 0; cl.read_state = 0;
// Measure subop latency // Measure subop latency
timeval tv_end; timespec tv_end;
gettimeofday(&tv_end, NULL); clock_gettime(CLOCK_REALTIME, &tv_end);
subop_stat_count[request->req.hdr.opcode]++; subop_stat_count[request->req.hdr.opcode]++;
subop_stat_sum[request->req.hdr.opcode] += ( subop_stat_sum[request->req.hdr.opcode] += (
(tv_end.tv_sec - request->tv_begin.tv_sec)*1000000 + (tv_end.tv_sec - request->tv_begin.tv_sec)*1000000 +
tv_end.tv_usec - request->tv_begin.tv_usec (tv_end.tv_nsec - request->tv_begin.tv_nsec)/1000
); );
request->callback(request); request->callback(request);
} }
@ -192,12 +192,12 @@ void osd_t::handle_reply_hdr(osd_client_t *cl)
cl->read_state = 0; cl->read_state = 0;
cl->sent_ops.erase(req_it); cl->sent_ops.erase(req_it);
// Measure subop latency // Measure subop latency
timeval tv_end; timespec tv_end;
gettimeofday(&tv_end, NULL); clock_gettime(CLOCK_REALTIME, &tv_end);
subop_stat_count[op->req.hdr.opcode]++; subop_stat_count[op->req.hdr.opcode]++;
subop_stat_sum[op->req.hdr.opcode] += ( subop_stat_sum[op->req.hdr.opcode] += (
(tv_end.tv_sec - op->tv_begin.tv_sec)*1000000 + (tv_end.tv_sec - op->tv_begin.tv_sec)*1000000 +
tv_end.tv_usec - op->tv_begin.tv_usec (tv_end.tv_nsec - op->tv_begin.tv_nsec)/1000
); );
op->callback(op); op->callback(op);
} }

View File

@ -5,7 +5,7 @@ void osd_t::outbox_push(osd_client_t & cl, osd_op_t *cur_op)
assert(cur_op->peer_fd); assert(cur_op->peer_fd);
if (cur_op->op_type == OSD_OP_OUT) if (cur_op->op_type == OSD_OP_OUT)
{ {
gettimeofday(&cur_op->tv_begin, NULL); clock_gettime(CLOCK_REALTIME, &cur_op->tv_begin);
} }
cl.outbox.push_back(cur_op); cl.outbox.push_back(cur_op);
if (cl.write_op || cl.outbox.size() > 1 || !try_send(cl)) if (cl.write_op || cl.outbox.size() > 1 || !try_send(cl))
@ -36,17 +36,17 @@ bool osd_t::try_send(osd_client_t & cl)
cl.write_state = CL_WRITE_REPLY; cl.write_state = CL_WRITE_REPLY;
if (cl.write_op->op_type == OSD_OP_OUT) if (cl.write_op->op_type == OSD_OP_OUT)
{ {
gettimeofday(&cl.write_op->tv_send, NULL); clock_gettime(CLOCK_REALTIME, &cl.write_op->tv_send);
} }
else else
{ {
// Measure execution latency // Measure execution latency
timeval tv_end; timespec tv_end;
gettimeofday(&tv_end, NULL); clock_gettime(CLOCK_REALTIME, &tv_end);
op_stat_count[cl.write_op->req.hdr.opcode]++; op_stat_count[cl.write_op->req.hdr.opcode]++;
op_stat_sum[cl.write_op->req.hdr.opcode] += ( op_stat_sum[cl.write_op->req.hdr.opcode] += (
(tv_end.tv_sec - cl.write_op->tv_begin.tv_sec)*1000000 + (tv_end.tv_sec - cl.write_op->tv_begin.tv_sec)*1000000 +
tv_end.tv_usec - cl.write_op->tv_begin.tv_usec (tv_end.tv_nsec - cl.write_op->tv_begin.tv_nsec)/1000
); );
} }
} }
@ -115,12 +115,12 @@ void osd_t::handle_send(ring_data_t *data, int peer_fd)
if (cur_op->req.hdr.opcode == OSD_OP_SECONDARY_STABILIZE || if (cur_op->req.hdr.opcode == OSD_OP_SECONDARY_STABILIZE ||
cur_op->req.hdr.opcode == OSD_OP_SECONDARY_WRITE) cur_op->req.hdr.opcode == OSD_OP_SECONDARY_WRITE)
{ {
timeval tv_end; timespec tv_end;
gettimeofday(&tv_end, NULL); clock_gettime(CLOCK_REALTIME, &tv_end);
send_stat_count++; send_stat_count++;
send_stat_sum += ( send_stat_sum += (
(tv_end.tv_sec - cl.write_op->tv_send.tv_sec)*1000000 + (tv_end.tv_sec - cl.write_op->tv_send.tv_sec)*1000000 +
tv_end.tv_usec - cl.write_op->tv_send.tv_usec (tv_end.tv_nsec - cl.write_op->tv_send.tv_nsec)/1000
); );
} }
cl.sent_ops[cl.write_op->req.hdr.id] = cl.write_op; cl.sent_ops[cl.write_op->req.hdr.id] = cl.write_op;