- Timestamp:
- Jul 28, 2022, 12:03:16 PM (2 years ago)
- Branches:
- ADT, ast-experimental, master, pthread-emulation
- Children:
- 3f95dab
- Parents:
- e8616b6
- Location:
- libcfa/src/concurrency
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/io.cfa
re8616b6 r7ce8873 432 432 433 433 disable_interrupts(); 434 __STATS__( true, if(!lazy) io.submit.eagr += 1; ) 434 435 processor * proc = __cfaabi_tls.this_processor; 435 436 $io_context * ctx = proc->io.ctx; -
libcfa/src/concurrency/io/call.cfa.in
re8616b6 r7ce8873 34 34 #include "kernel.hfa" 35 35 #include "io/types.hfa" 36 #include "stats.hfa" 36 37 37 38 //============================================================================================= … … 226 227 async_{name}( future, {args}, submit_flags ); 227 228 228 wait( future ); 229 __attribute__((unused)) bool parked; 230 parked = wait( future ); 231 __STATS__(false, if(!parked) io.submit.nblk += 1; ) 229 232 if( future.result < 0 ) {{ 230 233 errno = -future.result; -
libcfa/src/concurrency/io/setup.cfa
re8616b6 r7ce8873 229 229 #if !defined(CFA_WITH_IO_URING_IDLE) 230 230 // Step 4 : eventfd 231 // io_uring_register is so f*cking slow on some machine that it232 // will never succeed if preemption isn't hard blocked233 231 __cfadbg_print_safe(io_core, "Kernel I/O : registering %d for completion with ring %d\n", procfd, fd); 234 232 … … 240 238 __cfadbg_print_safe(io_core, "Kernel I/O : registered %d for completion with ring %d\n", procfd, fd); 241 239 #endif 240 241 // #if defined(CFA_HAVE_IORING_REGISTER_IOWQ_MAX_WORKERS) 242 // // Step 5 : max worker count 243 // __cfadbg_print_safe(io_core, "Kernel I/O : lmiting max workers for ring %d\n", fd); 244 245 // unsigned int maxes[2]; 246 // maxes[0] = 64; // max number of bounded workers (Regular files / block) 247 // maxes[1] = 64; // max number of unbounded workers (IOSQE_ASYNC) 248 // int ret = syscall( __NR_io_uring_register, fd, IORING_REGISTER_IOWQ_MAX_WORKERS, maxes, 2); 249 // if (ret < 0) { 250 // abort("KERNEL ERROR: IO_URING MAX WORKER REGISTER - %s\n", strerror(errno)); 251 // } 252 253 // __cfadbg_print_safe(io_core, "Kernel I/O : lmited max workers for ring %d\n", fd); 254 // #endif 242 255 243 256 // some paranoid checks -
libcfa/src/concurrency/stats.cfa
re8616b6 r7ce8873 46 46 stats->io.submit.fast = 0; 47 47 stats->io.submit.slow = 0; 48 stats->io.submit.eagr = 0; 49 stats->io.submit.nblk = 0; 48 50 stats->io.flush.external = 0; 49 51 stats->io.flush.dirty = 0; … … 116 118 tally_one( &cltr->io.submit.fast , &proc->io.submit.fast ); 117 119 tally_one( &cltr->io.submit.slow , &proc->io.submit.slow ); 120 tally_one( &cltr->io.submit.eagr , &proc->io.submit.eagr ); 121 tally_one( &cltr->io.submit.nblk , &proc->io.submit.nblk ); 118 122 tally_one( &cltr->io.flush.external , &proc->io.flush.external ); 119 123 tally_one( &cltr->io.flush.dirty , &proc->io.flush.dirty ); … … 197 201 sstr | "fast," | eng3(io.submit.slow) | "slow (" | ws(3, 3, avgfasts) | "%)" | nonl; 198 202 } 203 sstr | " - eager" | eng3(io.submit.eagr) | nonl; 204 sstr | " - no-wait" | eng3(io.submit.nblk) | nonl; 199 205 sstr | nl; 200 206 -
libcfa/src/concurrency/stats.hfa
re8616b6 r7ce8873 92 92 volatile uint64_t fast; 93 93 volatile uint64_t slow; 94 volatile uint64_t eagr; 95 volatile uint64_t nblk; 94 96 } submit; 95 97 struct {
Note: See TracChangeset
for help on using the changeset viewer.