FILE *logfile = NULL;
+int warmup_mode = 0;
int threads;
int completed = 0;
int read_size = 32768;
}
completed++;
- /*
- if (completed == 128 * threads) {
- g_main_loop_quit(main_loop);
- } */
+ if (warmup_mode) {
+ printf("Done warming up %d\n", completed);
+ int scale = 1;
+ if (read_size > (1 << 20))
+ scale = read_size / (1 << 20);
+ if (completed == bench_files->len * scale)
+ g_main_loop_quit(main_loop);
+ }
}
static gboolean read_handler(GIOChannel *channel,
uint64_t offset, uint64_t len);
static void submit_random_read(NFSConnection *nfs)
{
+ static int warmup_counter = 0;
struct bench_file *bf;
+
+ if (warmup_mode) {
+ int scale = 1;
+ if (read_size > (1 << 20)) {
+ scale = read_size / (1 << 20);
+ }
+ printf("Warming up file %d\n", warmup_counter);
+ if (warmup_counter >= bench_files->len * scale)
+ return;
+ bf = &g_array_index(bench_files, struct bench_file,
+ warmup_counter / scale);
+ send_read_request(nfs, bf->inum, (warmup_counter % scale) << 20,
+ read_size > (1 << 20) ? (1 << 20) : read_size);
+ warmup_counter++;
+ return;
+ }
+
bf = &g_array_index(bench_files, struct bench_file,
g_random_int_range(0, bench_files->len));
int blocks = bf->size / read_size;
threads = atoi(argv[2]);
if (argc > 3)
read_size = atoi(argv[3]);
- if (argc > 4)
- logfile = fopen(argv[4], "wb");
+ if (argc > 4) {
+ if (strcmp(argv[4], "WARMUP") == 0) {
+ warmup_mode = 1;
+ } else {
+ logfile = fopen(argv[4], "wb");
+ }
+ }
main_loop = g_main_loop_new(NULL, FALSE);
nfs_connect("niniel.sysnet.ucsd.edu");