Changeset 8834751 for libcfa/src/concurrency/io.cfa
- Timestamp:
- Jun 16, 2020, 12:53:58 PM (4 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 2073d207
- Parents:
- d29255c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/io.cfa
rd29255c r8834751 135 135 void * ring_ptr; 136 136 size_t ring_sz; 137 138 // Statistics139 #if !defined(__CFA_NO_STATISTICS__)140 struct {141 struct {142 volatile unsigned long long int rdy;143 volatile unsigned long long int csm;144 volatile unsigned long long int avl;145 volatile unsigned long long int cnt;146 } submit_avg;147 struct {148 volatile unsigned long long int val;149 volatile unsigned long long int cnt;150 volatile unsigned long long int block;151 } look_avg;152 struct {153 volatile unsigned long long int val;154 volatile unsigned long long int cnt;155 volatile unsigned long long int block;156 } alloc_avg;157 } stats;158 #endif159 137 }; 160 138 … … 177 155 void * ring_ptr; 178 156 size_t ring_sz; 179 180 // Statistics181 #if !defined(__CFA_NO_STATISTICS__)182 struct {183 struct {184 unsigned long long int val;185 unsigned long long int slow_cnt;186 unsigned long long int fast_cnt;187 } completed_avg;188 } stats;189 #endif190 157 }; 191 158 … … 331 298 (this.io->submit){ min(*sq.num, *cq.num) }; 332 299 333 // Initialize statistics334 #if !defined(__CFA_NO_STATISTICS__)335 this.io->submit_q.stats.submit_avg.rdy = 0;336 this.io->submit_q.stats.submit_avg.csm = 0;337 this.io->submit_q.stats.submit_avg.avl = 0;338 this.io->submit_q.stats.submit_avg.cnt = 0;339 this.io->submit_q.stats.look_avg.val = 0;340 this.io->submit_q.stats.look_avg.cnt = 0;341 this.io->submit_q.stats.look_avg.block = 0;342 this.io->submit_q.stats.alloc_avg.val = 0;343 this.io->submit_q.stats.alloc_avg.cnt = 0;344 this.io->submit_q.stats.alloc_avg.block = 0;345 this.io->completion_q.stats.completed_avg.val = 0;346 this.io->completion_q.stats.completed_avg.slow_cnt = 0;347 this.io->completion_q.stats.completed_avg.fast_cnt = 0;348 #endif349 350 300 if(!main_cluster) { 351 301 __kernel_io_finish_start( this ); … … 437 387 __kernel_io_prepare_stop( this ); 438 388 } 439 440 // print statistics441 #if !defined(__CFA_NO_STATISTICS__)442 if(this.print_stats) {443 with(this.io->submit_q.stats, this.io->completion_q.stats) {444 double avgrdy = ((double)submit_avg.rdy) / submit_avg.cnt;445 double avgcsm = ((double)submit_avg.csm) / submit_avg.cnt;446 double avgavl = ((double)submit_avg.avl) / submit_avg.cnt;447 448 double lavgv = 0;449 double lavgb = 0;450 if(look_avg.cnt != 0) {451 lavgv = ((double)look_avg.val ) / look_avg.cnt;452 lavgb = ((double)look_avg.block) / look_avg.cnt;453 }454 455 double aavgv = 0;456 double aavgb = 0;457 if(alloc_avg.cnt != 0) {458 aavgv = ((double)alloc_avg.val ) / alloc_avg.cnt;459 aavgb = ((double)alloc_avg.block) / alloc_avg.cnt;460 }461 462 __cfaabi_bits_print_safe( STDOUT_FILENO,463 "----- I/O uRing Stats -----\n"464 "- total submit calls : %'15llu\n"465 "- avg ready entries : %'18.2lf\n"466 "- avg submitted entries : %'18.2lf\n"467 "- avg available entries : %'18.2lf\n"468 "- total ready search : %'15llu\n"469 "- avg ready search len : %'18.2lf\n"470 "- avg ready search block : %'18.2lf\n"471 "- total alloc search : %'15llu\n"472 "- avg alloc search len : %'18.2lf\n"473 "- avg alloc search block : %'18.2lf\n"474 "- total wait calls : %'15llu (%'llu slow, %'llu fast)\n"475 "- avg completion/wait : %'18.2lf\n",476 submit_avg.cnt,477 avgrdy,478 avgcsm,479 avgavl,480 look_avg.cnt,481 lavgv,482 lavgb,483 alloc_avg.cnt,484 aavgv,485 aavgb,486 completed_avg.slow_cnt + completed_avg.fast_cnt,487 completed_avg.slow_cnt, completed_avg.fast_cnt,488 ((double)completed_avg.val) / (completed_avg.slow_cnt + completed_avg.fast_cnt)489 );490 }491 }492 #endif493 389 494 390 // Shutdown the io rings … … 578 474 // update statistics 579 475 #if !defined(__CFA_NO_STATISTICS__) 580 ring.submit_q.stats.submit_avg.rdy += to_submit;581 ring.submit_q.stats.submit_avg.csm += ret;582 ring.submit_q.stats.submit_avg.avl += avail;583 ring.submit_q.stats.submit_avg.cnt += 1;476 __tls_stats()->io.submit_q.stats.submit_avg.rdy += to_submit; 477 __tls_stats()->io.submit_q.stats.submit_avg.csm += ret; 478 __tls_stats()->io.submit_q.stats.submit_avg.avl += avail; 479 __tls_stats()->io.submit_q.stats.submit_avg.cnt += 1; 584 480 #endif 585 481 … … 655 551 // Update statistics 656 552 #if !defined(__CFA_NO_STATISTICS__) 657 ring.completion_q.stats.completed_avg.val += count;658 ring.completion_q.stats.completed_avg.slow_cnt += 1;553 __tls_stats()->io.complete_q.stats.completed_avg.val += count; 554 __tls_stats()->io.complete_q.stats.completed_avg.slow_cnt += 1; 659 555 #endif 660 556 … … 675 571 // Update statistics 676 572 #if !defined(__CFA_NO_STATISTICS__) 677 ring.completion_q.stats.completed_avg.val += count;678 ring.completion_q.stats.completed_avg.slow_cnt += 1;573 __tls_stats()->io.complete_q.stats.completed_avg.val += count; 574 __tls_stats()->io.complete_q.stats.completed_avg.slow_cnt += 1; 679 575 #endif 680 576 } … … 708 604 // Update statistics 709 605 #if !defined(__CFA_NO_STATISTICS__) 710 this.ring->completion_q.stats.completed_avg.val += count;711 this.ring->completion_q.stats.completed_avg.fast_cnt += 1;606 __tls_stats()->io.complete_q.stats.completed_avg.val += count; 607 __tls_stats()->io.complete_q.stats.completed_avg.fast_cnt += 1; 712 608 #endif 713 609 … … 792 688 // update statistics 793 689 #if !defined(__CFA_NO_STATISTICS__) 794 __ atomic_fetch_add( &ring.submit_q.stats.alloc_avg.val, len, __ATOMIC_RELAXED );795 __ atomic_fetch_add( &ring.submit_q.stats.alloc_avg.block, block, __ATOMIC_RELAXED );796 __ atomic_fetch_add( &ring.submit_q.stats.alloc_avg.cnt, 1, __ATOMIC_RELAXED );690 __tls_stats()->io.submit_q.stats.alloc_avg.val += len; 691 __tls_stats()->io.submit_q.stats.alloc_avg.block += block; 692 __tls_stats()->io.submit_q.stats.alloc_avg.cnt += 1; 797 693 #endif 798 694 … … 847 743 // update statistics 848 744 #if !defined(__CFA_NO_STATISTICS__) 849 __ atomic_fetch_add( &ring.submit_q.stats.look_avg.val, len, __ATOMIC_RELAXED );850 __ atomic_fetch_add( &ring.submit_q.stats.look_avg.block, block, __ATOMIC_RELAXED );851 __ atomic_fetch_add( &ring.submit_q.stats.look_avg.cnt, 1, __ATOMIC_RELAXED );745 __tls_stats()->io.submit_q.stats.look_avg.val += len; 746 __tls_stats()->io.submit_q.stats.look_avg.block += block; 747 __tls_stats()->io.submit_q.stats.look_avg.cnt += 1; 852 748 #endif 853 749 … … 876 772 // update statistics 877 773 #if !defined(__CFA_NO_STATISTICS__) 878 ring.submit_q.stats.submit_avg.csm += 1;879 ring.submit_q.stats.submit_avg.cnt += 1;774 __tls_stats()->io.submit_q.stats.submit_avg.csm += 1; 775 __tls_stats()->io.submit_q.stats.submit_avg.cnt += 1; 880 776 #endif 881 777
Note: See TracChangeset
for help on using the changeset viewer.