Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • benchmark/io/readv.cfa

    r920dca3 r20ab637  
    1212}
    1313
    14 #include <errno.h>
    1514#include <unistd.h>
    1615
    1716#include <clock.hfa>
    18 #include <iofwd.hfa>
    1917#include <kernel.hfa>
    2018#include <thread.hfa>
     
    2523
    2624extern bool traceHeapOn();
     25extern ssize_t cfa_preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags);
     26extern ssize_t cfa_preadv2_fixed(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags);
     27extern void register_fixed_files( cluster &, int *, unsigned count );
    2728
    2829int fd;
     
    3031volatile size_t count = 0;
    3132
    32 unsigned long int buflen = 512;
     33unsigned long int buflen = 50;
    3334bool fixed_file = false;
    3435
     
    3940
    4041int do_read(int fd, struct iovec * iov) {
    41         // extern ssize_t cfa_preadv2(int, const struct iovec *, int, off_t, int, int = 0, Duration = -1`s, io_cancellation * = 0p, io_context * = 0p);
    42         int sflags = 0;
    4342        if(fixed_file) {
    44                 sflags |= CFA_IO_FIXED_FD1;
     43                return cfa_preadv2_fixed(fd, iov, 1, 0, 0);
    4544        }
    46         return cfa_preadv2(fd, iov, 1, 0, 0, sflags, -1`s, 0p, 0p);
     45        else {
     46                return cfa_preadv2(fd, iov, 1, 0, 0);
     47        }
    4748}
    4849
     
    5152        /* paranoid */ assert( true == __atomic_load_n(&run, __ATOMIC_RELAXED) );
    5253
    53         __attribute__((aligned(512)))  char data[buflen];
     54        char data[buflen];
    5455        struct iovec iov = { data, buflen };
    5556
    5657        while(__atomic_load_n(&run, __ATOMIC_RELAXED)) {
    5758                int r = do_read(fd, &iov);
    58                 if(r < 0) abort("%s\n", strerror(errno));
     59                if(r < 0) abort("%s\n", strerror(-r));
    5960
    6061                __atomic_fetch_add( &count, 1, __ATOMIC_SEQ_CST );
     
    6465int main(int argc, char * argv[]) {
    6566        BENCH_DECL
    66         unsigned num_io = 1;
    67         io_context_params params;
     67        unsigned flags = 0;
    6868        int file_flags = 0;
    6969        unsigned sublen = 16;
     
    7474                        BENCH_OPT_LONG
    7575                        {"bufsize",       required_argument, 0, 'b'},
     76                        {"userthread",    no_argument      , 0, 'u'},
    7677                        {"submitthread",  no_argument      , 0, 's'},
    7778                        {"eagersubmit",   no_argument      , 0, 'e'},
    7879                        {"kpollsubmit",   no_argument      , 0, 'k'},
    7980                        {"kpollcomplete", no_argument      , 0, 'i'},
    80                         {"fixed-files",   no_argument      , 0, 'f'},
    81                         {"open-direct",   no_argument      , 0, 'o'},
    8281                        {"submitlength",  required_argument, 0, 'l'},
    8382                        {0, 0, 0, 0}
     
    8584
    8685                int idx = 0;
    87                 int opt = getopt_long(argc, argv, BENCH_OPT_SHORT "b:sekil:", options, &idx);
     86                int opt = getopt_long(argc, argv, BENCH_OPT_SHORT "b:usekil:", options, &idx);
    8887
    8988                const char * arg = optarg ? optarg : "";
     
    101100                                }
    102101                                break;
     102                        case 'u':
     103                                flags |= CFA_CLUSTER_IO_POLLER_USER_THREAD;
     104                                break;
    103105                        case 's':
    104                                 params.poller_submits = true;
     106                                flags |= CFA_CLUSTER_IO_POLLER_THREAD_SUBMITS;
    105107                                break;
    106108                        case 'e':
    107                                 params.eager_submits = true;
     109                                flags |= CFA_CLUSTER_IO_EAGER_SUBMITS;
    108110                                break;
    109111                        case 'k':
    110                                 params.poll_submit = true;
    111                         case 'f':
     112                                flags |= CFA_CLUSTER_IO_KERNEL_POLL_SUBMITS;
    112113                                fixed_file = true;
    113114                                break;
    114115                        case 'i':
    115                                 params.poll_complete = true;
    116                         case 'o':
     116                                flags |= CFA_CLUSTER_IO_KERNEL_POLL_COMPLETES;
    117117                                file_flags |= O_DIRECT;
    118118                                break;
     
    123123                                        goto usage;
    124124                                }
    125                                 // flags |= (sublen << CFA_CLUSTER_IO_BUFFLEN_OFFSET);
     125                                flags |= (sublen << CFA_CLUSTER_IO_BUFFLEN_OFFSET);
    126126                                break;
    127127                        default: /* ? */
     
    150150        {
    151151                Time start, end;
    152                 BenchCluster cl = { num_io, params, CFA_STATS_READY_Q | CFA_STATS_IO };
     152                BenchCluster cl = { flags, CFA_STATS_READY_Q | CFA_STATS_IO };
    153153
    154154                if(fixed_file) {
     
    179179                                printf("\nDone\n");
    180180                        }
    181                         printf("Readers closed\n");
    182181                }
    183182                printf("Took %'ld ms\n", (end - start)`ms);
Note: See TracChangeset for help on using the changeset viewer.