@@ -533,6 +533,7 @@ static void
533533ctl_arena_clear (ctl_arena_stats_t * astats )
534534{
535535
536+ astats -> nthreads = 0 ;
536537 astats -> dss = dss_prec_names [dss_prec_limit ];
537538 astats -> lg_dirty_mult = -1 ;
538539 astats -> decay_time = -1 ;
@@ -557,16 +558,23 @@ ctl_arena_stats_amerge(ctl_arena_stats_t *cstats, arena_t *arena)
557558{
558559 unsigned i ;
559560
560- arena_stats_merge (arena , & cstats -> dss , & cstats -> lg_dirty_mult ,
561- & cstats -> decay_time , & cstats -> pactive , & cstats -> pdirty ,
562- & cstats -> astats , cstats -> bstats , cstats -> lstats , cstats -> hstats );
563-
564- for (i = 0 ; i < NBINS ; i ++ ) {
565- cstats -> allocated_small += cstats -> bstats [i ].curregs *
566- index2size (i );
567- cstats -> nmalloc_small += cstats -> bstats [i ].nmalloc ;
568- cstats -> ndalloc_small += cstats -> bstats [i ].ndalloc ;
569- cstats -> nrequests_small += cstats -> bstats [i ].nrequests ;
561+ if (config_stats ) {
562+ arena_stats_merge (arena , & cstats -> nthreads , & cstats -> dss ,
563+ & cstats -> lg_dirty_mult , & cstats -> decay_time ,
564+ & cstats -> pactive , & cstats -> pdirty , & cstats -> astats ,
565+ cstats -> bstats , cstats -> lstats , cstats -> hstats );
566+
567+ for (i = 0 ; i < NBINS ; i ++ ) {
568+ cstats -> allocated_small += cstats -> bstats [i ].curregs *
569+ index2size (i );
570+ cstats -> nmalloc_small += cstats -> bstats [i ].nmalloc ;
571+ cstats -> ndalloc_small += cstats -> bstats [i ].ndalloc ;
572+ cstats -> nrequests_small += cstats -> bstats [i ].nrequests ;
573+ }
574+ } else {
575+ arena_basic_stats_merge (arena , & cstats -> nthreads , & cstats -> dss ,
576+ & cstats -> lg_dirty_mult , & cstats -> decay_time ,
577+ & cstats -> pactive , & cstats -> pdirty );
570578 }
571579}
572580
@@ -575,57 +583,68 @@ ctl_arena_stats_smerge(ctl_arena_stats_t *sstats, ctl_arena_stats_t *astats)
575583{
576584 unsigned i ;
577585
586+ sstats -> nthreads += astats -> nthreads ;
578587 sstats -> pactive += astats -> pactive ;
579588 sstats -> pdirty += astats -> pdirty ;
580589
581- sstats -> astats .mapped += astats -> astats .mapped ;
582- sstats -> astats .npurge += astats -> astats .npurge ;
583- sstats -> astats .nmadvise += astats -> astats .nmadvise ;
584- sstats -> astats .purged += astats -> astats .purged ;
585-
586- sstats -> astats .metadata_mapped += astats -> astats .metadata_mapped ;
587- sstats -> astats .metadata_allocated += astats -> astats .metadata_allocated ;
588-
589- sstats -> allocated_small += astats -> allocated_small ;
590- sstats -> nmalloc_small += astats -> nmalloc_small ;
591- sstats -> ndalloc_small += astats -> ndalloc_small ;
592- sstats -> nrequests_small += astats -> nrequests_small ;
593-
594- sstats -> astats .allocated_large += astats -> astats .allocated_large ;
595- sstats -> astats .nmalloc_large += astats -> astats .nmalloc_large ;
596- sstats -> astats .ndalloc_large += astats -> astats .ndalloc_large ;
597- sstats -> astats .nrequests_large += astats -> astats .nrequests_large ;
598-
599- sstats -> astats .allocated_huge += astats -> astats .allocated_huge ;
600- sstats -> astats .nmalloc_huge += astats -> astats .nmalloc_huge ;
601- sstats -> astats .ndalloc_huge += astats -> astats .ndalloc_huge ;
602-
603- for (i = 0 ; i < NBINS ; i ++ ) {
604- sstats -> bstats [i ].nmalloc += astats -> bstats [i ].nmalloc ;
605- sstats -> bstats [i ].ndalloc += astats -> bstats [i ].ndalloc ;
606- sstats -> bstats [i ].nrequests += astats -> bstats [i ].nrequests ;
607- sstats -> bstats [i ].curregs += astats -> bstats [i ].curregs ;
608- if (config_tcache ) {
609- sstats -> bstats [i ].nfills += astats -> bstats [i ].nfills ;
610- sstats -> bstats [i ].nflushes +=
611- astats -> bstats [i ].nflushes ;
590+ if (config_stats ) {
591+ sstats -> astats .mapped += astats -> astats .mapped ;
592+ sstats -> astats .npurge += astats -> astats .npurge ;
593+ sstats -> astats .nmadvise += astats -> astats .nmadvise ;
594+ sstats -> astats .purged += astats -> astats .purged ;
595+
596+ sstats -> astats .metadata_mapped +=
597+ astats -> astats .metadata_mapped ;
598+ sstats -> astats .metadata_allocated +=
599+ astats -> astats .metadata_allocated ;
600+
601+ sstats -> allocated_small += astats -> allocated_small ;
602+ sstats -> nmalloc_small += astats -> nmalloc_small ;
603+ sstats -> ndalloc_small += astats -> ndalloc_small ;
604+ sstats -> nrequests_small += astats -> nrequests_small ;
605+
606+ sstats -> astats .allocated_large +=
607+ astats -> astats .allocated_large ;
608+ sstats -> astats .nmalloc_large += astats -> astats .nmalloc_large ;
609+ sstats -> astats .ndalloc_large += astats -> astats .ndalloc_large ;
610+ sstats -> astats .nrequests_large +=
611+ astats -> astats .nrequests_large ;
612+
613+ sstats -> astats .allocated_huge += astats -> astats .allocated_huge ;
614+ sstats -> astats .nmalloc_huge += astats -> astats .nmalloc_huge ;
615+ sstats -> astats .ndalloc_huge += astats -> astats .ndalloc_huge ;
616+
617+ for (i = 0 ; i < NBINS ; i ++ ) {
618+ sstats -> bstats [i ].nmalloc += astats -> bstats [i ].nmalloc ;
619+ sstats -> bstats [i ].ndalloc += astats -> bstats [i ].ndalloc ;
620+ sstats -> bstats [i ].nrequests +=
621+ astats -> bstats [i ].nrequests ;
622+ sstats -> bstats [i ].curregs += astats -> bstats [i ].curregs ;
623+ if (config_tcache ) {
624+ sstats -> bstats [i ].nfills +=
625+ astats -> bstats [i ].nfills ;
626+ sstats -> bstats [i ].nflushes +=
627+ astats -> bstats [i ].nflushes ;
628+ }
629+ sstats -> bstats [i ].nruns += astats -> bstats [i ].nruns ;
630+ sstats -> bstats [i ].reruns += astats -> bstats [i ].reruns ;
631+ sstats -> bstats [i ].curruns += astats -> bstats [i ].curruns ;
612632 }
613- sstats -> bstats [i ].nruns += astats -> bstats [i ].nruns ;
614- sstats -> bstats [i ].reruns += astats -> bstats [i ].reruns ;
615- sstats -> bstats [i ].curruns += astats -> bstats [i ].curruns ;
616- }
617633
618- for (i = 0 ; i < nlclasses ; i ++ ) {
619- sstats -> lstats [i ].nmalloc += astats -> lstats [i ].nmalloc ;
620- sstats -> lstats [i ].ndalloc += astats -> lstats [i ].ndalloc ;
621- sstats -> lstats [i ].nrequests += astats -> lstats [i ].nrequests ;
622- sstats -> lstats [i ].curruns += astats -> lstats [i ].curruns ;
623- }
634+ for (i = 0 ; i < nlclasses ; i ++ ) {
635+ sstats -> lstats [i ].nmalloc += astats -> lstats [i ].nmalloc ;
636+ sstats -> lstats [i ].ndalloc += astats -> lstats [i ].ndalloc ;
637+ sstats -> lstats [i ].nrequests +=
638+ astats -> lstats [i ].nrequests ;
639+ sstats -> lstats [i ].curruns += astats -> lstats [i ].curruns ;
640+ }
624641
625- for (i = 0 ; i < nhclasses ; i ++ ) {
626- sstats -> hstats [i ].nmalloc += astats -> hstats [i ].nmalloc ;
627- sstats -> hstats [i ].ndalloc += astats -> hstats [i ].ndalloc ;
628- sstats -> hstats [i ].curhchunks += astats -> hstats [i ].curhchunks ;
642+ for (i = 0 ; i < nhclasses ; i ++ ) {
643+ sstats -> hstats [i ].nmalloc += astats -> hstats [i ].nmalloc ;
644+ sstats -> hstats [i ].ndalloc += astats -> hstats [i ].ndalloc ;
645+ sstats -> hstats [i ].curhchunks +=
646+ astats -> hstats [i ].curhchunks ;
647+ }
629648 }
630649}
631650
@@ -636,19 +655,9 @@ ctl_arena_refresh(arena_t *arena, unsigned i)
636655 ctl_arena_stats_t * sstats = & ctl_stats .arenas [ctl_stats .narenas ];
637656
638657 ctl_arena_clear (astats );
639-
640- sstats -> nthreads += astats -> nthreads ;
641- if (config_stats ) {
642- ctl_arena_stats_amerge (astats , arena );
643- /* Merge into sum stats as well. */
644- ctl_arena_stats_smerge (sstats , astats );
645- } else {
646- astats -> pactive += arena -> nactive ;
647- astats -> pdirty += arena -> ndirty ;
648- /* Merge into sum stats as well. */
649- sstats -> pactive += arena -> nactive ;
650- sstats -> pdirty += arena -> ndirty ;
651- }
658+ ctl_arena_stats_amerge (astats , arena );
659+ /* Merge into sum stats as well. */
660+ ctl_arena_stats_smerge (sstats , astats );
652661}
653662
654663static bool
@@ -701,20 +710,11 @@ ctl_refresh(void)
701710 * Clear sum stats, since they will be merged into by
702711 * ctl_arena_refresh().
703712 */
704- ctl_stats .arenas [ctl_stats .narenas ].nthreads = 0 ;
705713 ctl_arena_clear (& ctl_stats .arenas [ctl_stats .narenas ]);
706714
707715 for (i = 0 ; i < ctl_stats .narenas ; i ++ )
708716 tarenas [i ] = arena_get (i , false);
709717
710- for (i = 0 ; i < ctl_stats .narenas ; i ++ ) {
711- if (tarenas [i ] != NULL ) {
712- ctl_stats .arenas [i ].nthreads =
713- arena_nthreads_get (arena_get (i , false));
714- } else
715- ctl_stats .arenas [i ].nthreads = 0 ;
716- }
717-
718718 for (i = 0 ; i < ctl_stats .narenas ; i ++ ) {
719719 bool initialized = (tarenas [i ] != NULL );
720720
0 commit comments