int threads;
int completed = 0;
+int read_size = 32768;
struct bench_file {
uint64_t inum;
static void send_read_request(NFSConnection *nfs, uint64_t inum,
uint64_t offset, uint64_t len);
+static void submit_random_read(NFSConnection *nfs)
+{
+ struct bench_file *bf;
+ bf = &g_array_index(bench_files, struct bench_file,
+ g_random_int_range(0, bench_files->len));
+ int blocks = bf->size / read_size;
+ if (blocks == 0)
+ blocks = 1;
+
+ int offset = g_random_int_range(0, blocks);
+ send_read_request(nfs, bf->inum, offset * read_size, read_size);
+}
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));
- struct bench_file *bf;
- bf = &g_array_index(bench_files, struct bench_file,
- g_random_int_range(0, bench_files->len));
- send_read_request(nfs, bf->inum, 0, 1048576);
+ submit_random_read(nfs);
}
static void send_read_request(NFSConnection *nfs, uint64_t inum,
int i;
for (i = 0; i < threads; i++) {
- struct bench_file *bf;
- bf = &g_array_index(bench_files, struct bench_file,
- g_random_int_range(0, bench_files->len));
- send_read_request(nfs, bf->inum, 0, 1048576);
+ submit_random_read(nfs);
}
#if 0
threads = 8;
if (argc > 2)
threads = atoi(argv[2]);
+ if (argc > 3)
+ read_size = atoi(argv[3]);
main_loop = g_main_loop_new(NULL, FALSE);
nfs_connect("niniel.sysnet.ucsd.edu");