Ignore:
Timestamp:
Jun 16, 2020, 12:53:58 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:
2073d207
Parents:
d29255c
Message:

Moved statistics to stats.cfa to combine ready Q stats and IO stats

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/io.cfa

    rd29255c r8834751  
    135135                void * ring_ptr;
    136136                size_t ring_sz;
    137 
    138                 // Statistics
    139                 #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                 #endif
    159137        };
    160138
     
    177155                void * ring_ptr;
    178156                size_t ring_sz;
    179 
    180                 // Statistics
    181                 #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                 #endif
    190157        };
    191158
     
    331298                (this.io->submit){ min(*sq.num, *cq.num) };
    332299
    333                 // Initialize statistics
    334                 #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                 #endif
    349 
    350300                if(!main_cluster) {
    351301                        __kernel_io_finish_start( this );
     
    437387                        __kernel_io_prepare_stop( this );
    438388                }
    439 
    440                 // print statistics
    441                 #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                 #endif
    493389
    494390                // Shutdown the io rings
     
    578474                // update statistics
    579475                #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;
    584480                #endif
    585481
     
    655551                                // Update statistics
    656552                                #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;
    659555                                #endif
    660556
     
    675571                                // Update statistics
    676572                                #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;
    679575                                #endif
    680576                        }
     
    708604                        // Update statistics
    709605                        #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;
    712608                        #endif
    713609
     
    792688                                        // update statistics
    793689                                        #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;
    797693                                        #endif
    798694
     
    847743                        // update statistics
    848744                        #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;
    852748                        #endif
    853749
     
    876772                        // update statistics
    877773                        #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;
    880776                        #endif
    881777
Note: See TracChangeset for help on using the changeset viewer.