@@ -158,26 +158,33 @@ namespace snmalloc
158158 auto l_dump = dump++;
159159 if (l_dump == 0 )
160160 {
161- message<1024 >(" snmalloc_allocs,dumpid,sizeclass,size,allocated,deallocated,in_use,bytes" );
162- message<1024 >(" snmalloc_totals,dumpid,backend bytes,peak backend bytes,requested" );
161+ message<1024 >(" snmalloc_allocs,dumpid,sizeclass,size,allocated,deallocated,in_use,bytes,slabs allocated,slabs deallocated,slabs in_use,slabs bytes " );
162+ message<1024 >(" snmalloc_totals,dumpid,backend bytes,peak backend bytes,requested,slabs requested bytes " );
163163 }
164164
165165 auto stats = snmalloc::get_stats<Config>();
166- size_t total_live{0 };
166+ size_t total_live{0 };
167+ size_t total_live_slabs{0 };
167168 for (size_t i = 0 ; i < snmalloc::SIZECLASS_REP_SIZE; i++)
168169 {
169170 auto sc = snmalloc::sizeclass_t::from_raw (i);
170171 auto allocated = *stats[sc].objects_allocated ;
171172 auto deallocated = *stats[sc].objects_deallocated ;
173+ auto slabs_allocated = *stats[sc].slabs_allocated ;
174+ auto slabs_deallocated = *stats[sc].slabs_deallocated ;
172175 if (allocated == 0 && deallocated == 0 )
173176 continue ;
174- auto size =
175- snmalloc::sizeclass_full_to_size ( snmalloc::sizeclass_t::from_raw (i) );
177+ auto size = snmalloc::sizeclass_full_to_size (sc);
178+ auto slab_size = snmalloc::sizeclass_full_to_slab_size (sc );
176179 auto in_use = allocated - deallocated;
177180 auto amount = in_use * size;
178181 total_live += amount;
179- snmalloc::message<1024 >(" snmalloc_allocs,{},{},{},{},{},{},{}" , l_dump, i, size, allocated, deallocated, in_use,amount);
182+ auto in_use_slabs = slabs_allocated - slabs_deallocated;
183+ auto amount_slabs = in_use_slabs * slab_size;
184+ total_live_slabs += amount_slabs;
185+
186+ snmalloc::message<1024 >(" snmalloc_allocs,{},{},{},{},{},{},{},{},{},{},{}" , l_dump, i, size, allocated, deallocated, in_use, amount, slabs_allocated, slabs_deallocated, in_use_slabs, amount_slabs);
180187 }
181- snmalloc::message<1024 >(" snmalloc_totals,{},{},{},{}" , l_dump, Config::Backend::get_current_usage (), Config::Backend::get_peak_usage (), total_live);
188+ snmalloc::message<1024 >(" snmalloc_totals,{},{},{},{},{} " , l_dump, Config::Backend::get_current_usage (), Config::Backend::get_peak_usage (), total_live, total_live_slabs );
182189 }
183190} // namespace snmalloc
0 commit comments