X-Git-Url: http://git.vrable.net/?p=bluesky.git;a=blobdiff_plain;f=nfs3%2Fsynreadbench.c;h=762bb643869bbff07f384814332d223d36ec4b10;hp=f4d5ad26c8b0463fe96fde99c8e4d0ea04618b18;hb=7589a41dc9e5b1f8b9f622be0c2970b3c697ed83;hpb=b5d09fadd9c9773cdc8dd4f7db734e7ba0eadbf4 diff --git a/nfs3/synreadbench.c b/nfs3/synreadbench.c index f4d5ad2..762bb64 100644 --- a/nfs3/synreadbench.c +++ b/nfs3/synreadbench.c @@ -35,6 +35,8 @@ /* Maximum size of a single RPC message that we will accept (8 MB). */ #define MAX_RPC_MSGSIZE (8 << 20) +FILE *logfile = NULL; + int threads; int completed = 0; int read_size = 32768; @@ -44,6 +46,11 @@ struct bench_file { uint64_t size; }; +struct data_point { + uint32_t timestamp; // Unix timestamp of completion + uint32_t latency; // Latency, in microseconds +} __attribute__((packed)); + GArray *bench_files; struct rpc_reply { @@ -187,19 +194,27 @@ static void process_reply(NFSConnection *nfs, GString *msg) return; } + struct data_point d; info->end = now_hires(); - printf("XID %d: Time = %"PRIi64"\n", xid, info->end - info->start); + d.timestamp = info->end / 1000000000; + d.latency = (info->end - info->start + 500) / 1000; /* Round off */ + //printf("XID %d: Time = %"PRIi64"\n", xid, info->end - info->start); if (info->callback != NULL) info->callback(nfs, info->user_data, msg->str + sizeof(*reply), msg->len - sizeof(*reply)); g_hash_table_remove(nfs->xid_table, key); g_free(info); + if (logfile != NULL) { + fwrite(&d, sizeof(d), 1, logfile); + fflush(logfile); + } completed++; + /* if (completed == 128 * threads) { g_main_loop_quit(main_loop); - } + } */ } static gboolean read_handler(GIOChannel *channel, @@ -298,8 +313,6 @@ static void submit_random_read(NFSConnection *nfs) static void finish_read_request(NFSConnection *nfs, gpointer user_data, const char *reply, size_t len) { - printf("Done reading inode %d\n", GPOINTER_TO_INT(user_data)); - submit_random_read(nfs); } @@ -427,12 +440,15 @@ int main(int argc, char *argv[]) bf.size = i2; g_array_append_val(bench_files, bf); } + fclose(inodes); threads = 8; if (argc > 2) threads = atoi(argv[2]); if (argc > 3) read_size = atoi(argv[3]); + if (argc > 4) + logfile = fopen(argv[4], "wb"); main_loop = g_main_loop_new(NULL, FALSE); nfs_connect("niniel.sysnet.ucsd.edu");