Changes in benchmark/io/readv.cfa [920dca3:20ab637]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
benchmark/io/readv.cfa
r920dca3 r20ab637 12 12 } 13 13 14 #include <errno.h>15 14 #include <unistd.h> 16 15 17 16 #include <clock.hfa> 18 #include <iofwd.hfa>19 17 #include <kernel.hfa> 20 18 #include <thread.hfa> … … 25 23 26 24 extern 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 ); 27 28 28 29 int fd; … … 30 31 volatile size_t count = 0; 31 32 32 unsigned long int buflen = 5 12;33 unsigned long int buflen = 50; 33 34 bool fixed_file = false; 34 35 … … 39 40 40 41 int 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;43 42 if(fixed_file) { 44 sflags |= CFA_IO_FIXED_FD1;43 return cfa_preadv2_fixed(fd, iov, 1, 0, 0); 45 44 } 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 } 47 48 } 48 49 … … 51 52 /* paranoid */ assert( true == __atomic_load_n(&run, __ATOMIC_RELAXED) ); 52 53 53 __attribute__((aligned(512)))char data[buflen];54 char data[buflen]; 54 55 struct iovec iov = { data, buflen }; 55 56 56 57 while(__atomic_load_n(&run, __ATOMIC_RELAXED)) { 57 58 int r = do_read(fd, &iov); 58 if(r < 0) abort("%s\n", strerror( errno));59 if(r < 0) abort("%s\n", strerror(-r)); 59 60 60 61 __atomic_fetch_add( &count, 1, __ATOMIC_SEQ_CST ); … … 64 65 int main(int argc, char * argv[]) { 65 66 BENCH_DECL 66 unsigned num_io = 1; 67 io_context_params params; 67 unsigned flags = 0; 68 68 int file_flags = 0; 69 69 unsigned sublen = 16; … … 74 74 BENCH_OPT_LONG 75 75 {"bufsize", required_argument, 0, 'b'}, 76 {"userthread", no_argument , 0, 'u'}, 76 77 {"submitthread", no_argument , 0, 's'}, 77 78 {"eagersubmit", no_argument , 0, 'e'}, 78 79 {"kpollsubmit", no_argument , 0, 'k'}, 79 80 {"kpollcomplete", no_argument , 0, 'i'}, 80 {"fixed-files", no_argument , 0, 'f'},81 {"open-direct", no_argument , 0, 'o'},82 81 {"submitlength", required_argument, 0, 'l'}, 83 82 {0, 0, 0, 0} … … 85 84 86 85 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); 88 87 89 88 const char * arg = optarg ? optarg : ""; … … 101 100 } 102 101 break; 102 case 'u': 103 flags |= CFA_CLUSTER_IO_POLLER_USER_THREAD; 104 break; 103 105 case 's': 104 params.poller_submits = true;106 flags |= CFA_CLUSTER_IO_POLLER_THREAD_SUBMITS; 105 107 break; 106 108 case 'e': 107 params.eager_submits = true;109 flags |= CFA_CLUSTER_IO_EAGER_SUBMITS; 108 110 break; 109 111 case 'k': 110 params.poll_submit = true; 111 case 'f': 112 flags |= CFA_CLUSTER_IO_KERNEL_POLL_SUBMITS; 112 113 fixed_file = true; 113 114 break; 114 115 case 'i': 115 params.poll_complete = true; 116 case 'o': 116 flags |= CFA_CLUSTER_IO_KERNEL_POLL_COMPLETES; 117 117 file_flags |= O_DIRECT; 118 118 break; … … 123 123 goto usage; 124 124 } 125 //flags |= (sublen << CFA_CLUSTER_IO_BUFFLEN_OFFSET);125 flags |= (sublen << CFA_CLUSTER_IO_BUFFLEN_OFFSET); 126 126 break; 127 127 default: /* ? */ … … 150 150 { 151 151 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 }; 153 153 154 154 if(fixed_file) { … … 179 179 printf("\nDone\n"); 180 180 } 181 printf("Readers closed\n");182 181 } 183 182 printf("Took %'ld ms\n", (end - start)`ms);
Note: See TracChangeset
for help on using the changeset viewer.