2 * An experiment with parallel reading and writing of files.
12 int main(int argc, char **argv)
15 uns files = atol(argv[1]);
16 uns bufsize = atol(argv[2]);
17 uns rounds = atol(argv[3]);
21 log(L_INFO, "Initializing");
22 for (uns i=0; i<files; i++)
25 sprintf(name, "tmp/ft-%d", i);
26 fd[i] = open(name, O_RDWR | O_CREAT | O_TRUNC, 0666);
28 die("Cannot create %s: %m", name);
29 buf[i] = big_alloc(bufsize);
33 log(L_INFO, "Writing %d files in parallel with %d byte buffers", files, bufsize);
34 for (uns r=0; r<rounds; r++)
36 log(L_INFO, "\tRound %d", r);
37 for (uns i=0; i<files; i++)
39 for (uns j=0; j<bufsize; j++)
41 uns c = write(fd[i], buf[i], bufsize);
45 log(L_INFO, "Syncing");
48 log(L_INFO, "Reading the files sequentially");
49 for (uns i=0; i<files; i++)
51 lseek(fd[i], 0, SEEK_SET);
52 for (uns r=0; r<rounds; r++)
54 uns c = read(fd[i], buf[i], bufsize);