Changeset 920dca3 for benchmark/io


Ignore:
Timestamp:
Jul 30, 2020, 3:01:04 PM (4 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
3ac8b9f
Parents:
f00b26d4
Message:

Fixed readv after io_context re-work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • benchmark/io/readv.cfa

    rf00b26d4 r920dca3  
    1212}
    1313
     14#include <errno.h>
    1415#include <unistd.h>
    1516
    1617#include <clock.hfa>
     18#include <iofwd.hfa>
    1719#include <kernel.hfa>
    1820#include <thread.hfa>
     
    2325
    2426extern bool traceHeapOn();
    25 extern ssize_t cfa_preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags);
    26 extern ssize_t cfa_preadv2_fixed(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags);
    27 extern void register_fixed_files( cluster &, int *, unsigned count );
    2827
    2928int fd;
     
    3130volatile size_t count = 0;
    3231
    33 unsigned long int buflen = 50;
     32unsigned long int buflen = 512;
    3433bool fixed_file = false;
    3534
     
    4039
    4140int 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;
    4243        if(fixed_file) {
    43                 return cfa_preadv2_fixed(fd, iov, 1, 0, 0);
     44                sflags |= CFA_IO_FIXED_FD1;
    4445        }
    45         else {
    46                 return cfa_preadv2(fd, iov, 1, 0, 0);
    47         }
     46        return cfa_preadv2(fd, iov, 1, 0, 0, sflags, -1`s, 0p, 0p);
    4847}
    4948
     
    5251        /* paranoid */ assert( true == __atomic_load_n(&run, __ATOMIC_RELAXED) );
    5352
    54         char data[buflen];
     53        __attribute__((aligned(512)))  char data[buflen];
    5554        struct iovec iov = { data, buflen };
    5655
    5756        while(__atomic_load_n(&run, __ATOMIC_RELAXED)) {
    5857                int r = do_read(fd, &iov);
    59                 if(r < 0) abort("%s\n", strerror(-r));
     58                if(r < 0) abort("%s\n", strerror(errno));
    6059
    6160                __atomic_fetch_add( &count, 1, __ATOMIC_SEQ_CST );
     
    6564int main(int argc, char * argv[]) {
    6665        BENCH_DECL
    67         unsigned flags = 0;
     66        unsigned num_io = 1;
     67        io_context_params params;
    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'},
    7776                        {"submitthread",  no_argument      , 0, 's'},
    7877                        {"eagersubmit",   no_argument      , 0, 'e'},
    7978                        {"kpollsubmit",   no_argument      , 0, 'k'},
    8079                        {"kpollcomplete", no_argument      , 0, 'i'},
     80                        {"fixed-files",   no_argument      , 0, 'f'},
     81                        {"open-direct",   no_argument      , 0, 'o'},
    8182                        {"submitlength",  required_argument, 0, 'l'},
    8283                        {0, 0, 0, 0}
     
    8485
    8586                int idx = 0;
    86                 int opt = getopt_long(argc, argv, BENCH_OPT_SHORT "b:usekil:", options, &idx);
     87                int opt = getopt_long(argc, argv, BENCH_OPT_SHORT "b:sekil:", options, &idx);
    8788
    8889                const char * arg = optarg ? optarg : "";
     
    100101                                }
    101102                                break;
    102                         case 'u':
    103                                 flags |= CFA_CLUSTER_IO_POLLER_USER_THREAD;
    104                                 break;
    105103                        case 's':
    106                                 flags |= CFA_CLUSTER_IO_POLLER_THREAD_SUBMITS;
     104                                params.poller_submits = true;
    107105                                break;
    108106                        case 'e':
    109                                 flags |= CFA_CLUSTER_IO_EAGER_SUBMITS;
     107                                params.eager_submits = true;
    110108                                break;
    111109                        case 'k':
    112                                 flags |= CFA_CLUSTER_IO_KERNEL_POLL_SUBMITS;
     110                                params.poll_submit = true;
     111                        case 'f':
    113112                                fixed_file = true;
    114113                                break;
    115114                        case 'i':
    116                                 flags |= CFA_CLUSTER_IO_KERNEL_POLL_COMPLETES;
     115                                params.poll_complete = true;
     116                        case 'o':
    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 = { flags, CFA_STATS_READY_Q | CFA_STATS_IO };
     152                BenchCluster cl = { num_io, params, CFA_STATS_READY_Q | CFA_STATS_IO };
    153153
    154154                if(fixed_file) {
     
    179179                                printf("\nDone\n");
    180180                        }
     181                        printf("Readers closed\n");
    181182                }
    182183                printf("Took %'ld ms\n", (end - start)`ms);
Note: See TracChangeset for help on using the changeset viewer.