Annotation of Net2/tests/benchmarks/bench-4.1/randpage.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Random page access benchmark.
                      3:  */
                      4: #include <sys/vadvise.h>
                      5: 
                      6: char   *valloc();
                      7: int    rand();
                      8: 
                      9: main(argc, argv)
                     10:        char *argv[];
                     11: {
                     12:        register int npages = 4096, pagesize, pn, i, niter;
                     13:        int vflag = 0, debug = 0;
                     14:        char *pages, *name;
                     15: 
                     16:        name = argv[0];
                     17:        argc--, argv++;
                     18: again:
                     19:        if (argc < 1) {
                     20: usage:
                     21:                printf("usage: %s [ -d ] [ -v ] [ -p #pages ] niter\n", name);
                     22:                exit(1);
                     23:        }
                     24:        if (strcmp(*argv, "-p") == 0) {
                     25:                argc--, argv++;
                     26:                if (argc < 1)
                     27:                        goto usage;
                     28:                npages = atoi(*argv);
                     29:                if (npages <= 0) {
                     30:                        printf("%s: Bad page count.\n", *argv);
                     31:                        exit(2);
                     32:                }
                     33:                argc--, argv++;
                     34:                goto again;
                     35:        }
                     36:        if (strcmp(*argv, "-v") == 0) {
                     37:                argc--, argv++;
                     38:                vflag++;
                     39:                goto again;
                     40:        }
                     41:        if (strcmp(*argv, "-d") == 0) {
                     42:                argc--, argv++;
                     43:                debug++;
                     44:                goto again;
                     45:        }
                     46:        niter = atoi(*argv);
                     47:        pagesize = getpagesize();
                     48:        pages = valloc(npages * pagesize);
                     49:        if (pages == (char *)0) {
                     50:                printf("Can't allocate %d pages (%2.1f megabytes).\n",
                     51:                    npages, (npages * pagesize) / (1024. * 1024.));
                     52:                exit(3);
                     53:        }
                     54:        if (vflag)
                     55:                vadvise(VA_ANOM);
                     56:        for (i = 0; i < niter; i++) {
                     57:                pn = random() % npages;
                     58:                if (debug)
                     59:                        printf("touch page %d\n", pn);
                     60:                pages[pagesize * pn] = 1;
                     61:        }
                     62: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.