From 40b1752ff02f977344553649ae8912ad653f8233 Mon Sep 17 00:00:00 2001 From: "Matthew P. Grosvenor" Date: Wed, 5 Aug 2015 15:43:06 +0100 Subject: [PATCH] Fixed perforamnce issues by bringing back missing asm(pause) --- process_perf_serv.py | 46 ++++++++++++++++++++-------- src/multiplexers/spin_mux.c | 1 + tools/camio_perf/camio_perf_client.c | 2 +- 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/process_perf_serv.py b/process_perf_serv.py index 6c4066e..a397019 100755 --- a/process_perf_serv.py +++ b/process_perf_serv.py @@ -12,24 +12,44 @@ get_new_normal_start = 0; get_new_normal_end = 0; +thing = 0 i = 0 +last = -1 +start = 0 for line in open(pfile): - if i < 1: - i += 1 + if i < 100 * 1000: + i+=1 continue - if i > 100 * 1000: - break; + if i > 110 * 1000: + break (mode,id,cond,ts,data) = line[:-1].split(",") - if(mode == "A" and id=="30"): - get_new_buffers_start = ts - - else: #if(mode == "O" and id=="40"): - cycles = int(ts) - int(get_new_buffers_start) +# if(mode == "A" and id=="4" and cond =="0"): +# start = int(ts) +# last = 0 +# print("\n#%s%5s [%3s,%3s] - %3.3f ++%3.3f" % (mode,id,cond,data,start,start-thing) ) +# thing = start +# +# #if(mode == "O" and (id=="100")): +# elif(last >= 0): +# if mode == "A" and id=="4" and cond =="0": + if 1: + if(start == 0): + start=int(ts) + cycles = int(ts) - start time = cycles / 3.1 - print("%s,%s %3.3f (%s)" % (mode, id, time,data)) + delta = time - last + last = time + print "$%s%5s [%3s,%3s] - %5.2f +%4.2f" % (mode,id,cond,data,time,delta), + if(delta > 900): + print "<---" + else: + print + #print("%3.3f (%s,%s (OID=%s))" % (time,cond,data,id)) #print("%3.3f" % (time)) - - - i += 1 + + i += 1 +# else: +# print("DROPPED $%s%5s [%3s,%3s]" % (mode,id,cond,data)) + diff --git a/src/multiplexers/spin_mux.c b/src/multiplexers/spin_mux.c index 03bbc3d..bac09ac 100644 --- a/src/multiplexers/spin_mux.c +++ b/src/multiplexers/spin_mux.c @@ -103,6 +103,7 @@ camio_error_t spin_select(camio_mux_t* this, struct timeval* timeout, camio_muxa camio_error_t err = muxable->vtable.ready(muxable); if(err == CAMIO_ETRYAGAIN){ + __asm__ __volatile__("pause;"); continue; //Nothing more to see here folks, come back later } diff --git a/tools/camio_perf/camio_perf_client.c b/tools/camio_perf/camio_perf_client.c index 99b8b1f..2698b50 100644 --- a/tools/camio_perf/camio_perf_client.c +++ b/tools/camio_perf/camio_perf_client.c @@ -264,7 +264,7 @@ static inline void prepare_data_msg(camio_msg_t* msg) msg->type = CAMIO_MSG_TYPE_WRITE_DATA_REQ; camio_wr_data_req_t* wr_data_req = &msg->wr_data_req; //Put data in the packet from the packet template - //memcpy(wr_data_req->buffer->data_start, packet_data, bytes_to_send); + memcpy(wr_data_req->buffer->data_start, packet_data, bytes_to_send); wr_data_req->buffer->data_len = bytes_to_send; wr_data_req->dst_offset_hint = CAMIO_WRITE_REQ_DST_OFFSET_NONE; wr_data_req->src_offset_hint = CAMIO_WRITE_REQ_SRC_OFFSET_NONE;