From: Dmitry Vyukov Date: Tue, 21 Sep 2021 09:38:52 +0000 (+0200) Subject: tsan: include internal allocator info in mem profile X-Git-Tag: upstream/15.0.7~30879 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b8aa9b0c37f4914cdd68aef5cf32fb411d2674c0;p=platform%2Fupstream%2Fllvm.git tsan: include internal allocator info in mem profile We allocate things from the internal allocator, it's useful to know how much it consumes. Depends on D110150. Reviewed By: melver, vitalybuka Differential Revision: https://reviews.llvm.org/D110151 --- diff --git a/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cpp b/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cpp index feec641..57a6945 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cpp +++ b/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cpp @@ -127,20 +127,24 @@ void WriteMemoryProfile(char *buf, uptr buf_size) { StackDepotStats *stacks = StackDepotGetStats(); uptr nthread, nlive; ctx->thread_registry.GetNumberOfThreads(&nthread, &nlive); + uptr internal_stats[AllocatorStatCount]; + internal_allocator()->GetStats(internal_stats); // All these are allocated from the common mmap region. - mem[MemMmap] -= meta.mem_block + meta.sync_obj + stacks->allocated; + mem[MemMmap] -= meta.mem_block + meta.sync_obj + stacks->allocated + + internal_stats[AllocatorStatMapped]; if (s64(mem[MemMmap]) < 0) mem[MemMmap] = 0; - internal_snprintf(buf, buf_size, - "RSS %zd MB: shadow:%zd meta:%zd file:%zd mmap:%zd" - " trace:%zd heap:%zd other:%zd memblocks:%zd syncobj:%zu" - " stacks=%zd[%zd] nthr=%zd/%zd\n", - mem[MemTotal] >> 20, mem[MemShadow] >> 20, - mem[MemMeta] >> 20, mem[MemFile] >> 20, mem[MemMmap] >> 20, - mem[MemTrace] >> 20, mem[MemHeap] >> 20, - mem[MemOther] >> 20, meta.mem_block >> 20, - meta.sync_obj >> 20, stacks->allocated >> 20, - stacks->n_uniq_ids, nlive, nthread); + internal_snprintf( + buf, buf_size, + "RSS %zd MB: shadow:%zd meta:%zd file:%zd mmap:%zd" + " trace:%zd heap:%zd other:%zd intalloc:%zd memblocks:%zd syncobj:%zu" + " stacks=%zd[%zd] nthr=%zd/%zd\n", + mem[MemTotal] >> 20, mem[MemShadow] >> 20, mem[MemMeta] >> 20, + mem[MemFile] >> 20, mem[MemMmap] >> 20, mem[MemTrace] >> 20, + mem[MemHeap] >> 20, mem[MemOther] >> 20, + internal_stats[AllocatorStatMapped] >> 20, meta.mem_block >> 20, + meta.sync_obj >> 20, stacks->allocated >> 20, stacks->n_uniq_ids, nlive, + nthread); } # if SANITIZER_LINUX