Changeset 0335620


Ignore:
Timestamp:
May 7, 2020, 5:12:47 PM (17 months ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
arm-eh, jacob/cs343-translation, master, new-ast, new-ast-unique-expr
Children:
dd4e2d7
Parents:
5dadc9b
Message:

Some minor tweaking to increase performance

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • benchmark/io/readv.cfa

    r5dadc9b r0335620  
    6464        for(;;) {
    6565                static struct option options[] = {
    66                         {"duration",   required_argument, 0, 'd'},
    67                         {"nthreads",   required_argument, 0, 't'},
    68                         {"nprocs",     required_argument, 0, 'p'},
    69                         {"bufsize",    required_argument, 0, 'b'},
    70                         {"userthread", no_argument      , 0, 'u'},
     66                        {"duration",     required_argument, 0, 'd'},
     67                        {"nthreads",     required_argument, 0, 't'},
     68                        {"nprocs",       required_argument, 0, 'p'},
     69                        {"bufsize",      required_argument, 0, 'b'},
     70                        {"userthread",   no_argument      , 0, 'u'},
     71                        {"submitthread", no_argument      , 0, 's'},
    7172                        {0, 0, 0, 0}
    7273                };
    7374
    7475                int idx = 0;
    75                 int opt = getopt_long(argc, argv, "d:t:p:b:u", options, &idx);
     76                int opt = getopt_long(argc, argv, "d:t:p:b:us", options, &idx);
    7677
    7778                const char * arg = optarg ? optarg : "";
     
    113114                                flags |= CFA_CLUSTER_IO_POLLER_USER_THREAD;
    114115                                break;
     116                        case 's':
     117                                flags |= CFA_CLUSTER_IO_POLLER_THREAD_SUBMITS;
     118                                break;
    115119                        // Other cases
    116120                        default: /* ? */
     
    123127                                fprintf(stderr, "  -p, --nprocs=NPROCS      Number of kernel threads\n");
    124128                                fprintf(stderr, "  -b, --buflen=SIZE        Number of bytes to read per request\n");
     129                                fprintf(stderr, "  -u, --userthread         If set, cluster uses user-thread to poll I/O\n");
     130                                fprintf(stderr, "  -s, --submitthread       If set, cluster uses polling thread to submit I/O\n");
    125131                                exit(EXIT_FAILURE);
    126132                }
  • libcfa/src/concurrency/io.cfa

    r5dadc9b r0335620  
    280280
    281281                if( io_flags & CFA_CLUSTER_IO_POLLER_THREAD_SUBMITS ) {
    282                         sq.ready_cnt = 10;
    283                         sq.ready = alloc( sq.ready_cnt );
     282                        sq.ready_cnt = 32;
     283                        sq.ready = alloc_align( 64, sq.ready_cnt );
    284284                        for(i; sq.ready_cnt) {
    285285                                sq.ready[i] = -1ul32;
     
    584584                                int count;
    585585                                bool again;
    586                                 [count, again] = __drain_io( ring, &mask, 1, true );
     586                                [count, again] = __drain_io( ring, &mask, 0, true );
    587587
    588588                                // Update statistics
     
    665665        }
    666666
     667        static inline void __wake_poller( struct __io_data & ring ) __attribute__((artificial));
    667668        static inline void __wake_poller( struct __io_data & ring ) {
    668                 sigval val = { 1 };
    669                 pthread_sigqueue( ring.poller.slow.kthrd, SIGUSR1, val );
     669                // sigval val = { 1 };
     670                // pthread_sigqueue( ring.poller.slow.kthrd, SIGUSR1, val );
    670671        }
    671672
Note: See TracChangeset for help on using the changeset viewer.