/* 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;
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 {
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,
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);
}
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");