1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- char *id = "$Id$\n";
- /*
- * Seek - calculate seeks as a function of distance.
- *
- * Usage: seek file size
- *
- * Copyright (c) 1994,1995,1996 Larry McVoy. All rights reserved.
- */
- #include "bench.h"
- #define STRIDE 1024*1024
- main(ac, av)
- int ac;
- char *av[];
- {
- char buf[512];
- int disk;
- off_t size;
- off_t begin, end;
- int usecs;
- if (ac != 3) {
- exit(1);
- }
- if ((disk = open(av[1], 0)) == -1) {
- exit(1);
- }
- size = atol(av[2]);
- switch (av[2][strlen(av[2])-1]) {
- case 'k': size <<= 10; break;
- case 'K': size *= 1000; break;
- case 'm': size <<= 20; break;
- case 'M': size *= 1000000; break;
- case 'g': size <<= 30; break;
- case 'G': size *= 1000000000L; break;
- }
- /*
- * We flip back and forth, in strides of 1MB.
- * If we have a 100MB disk, that means we do
- * 1, 99, 2, 98, etc.
- */
- end = size;
- begin = 0;
- lseek(disk, begin, 0);
- read(disk, buf, sizeof(buf));
- while (end > begin) {
- end -= STRIDE;
- start();
- lseek(disk, end, 0);
- read(disk, buf, sizeof(buf));
- usecs = stop();
- printf("%.04f %.04f\n", (end - begin) / 1000000., usecs/1000.);
- begin += STRIDE;
- start();
- lseek(disk, begin, 0);
- read(disk, buf, sizeof(buf));
- usecs = stop();
- printf("%.04f %.04f\n", (end - begin) / 1000000., usecs/1000.);
- }
- exit(0);
- }
|