Skip to content

Commit d379b1e

Browse files
committed
[scudo] Add last release time info to getStats
Knowing when the last page release happened can help us figure out if the page release is skipped or not.
1 parent 2d0c14c commit d379b1e

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

compiler-rt/lib/scudo/standalone/primary64.h

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
#include "thread_annotations.h"
2525
#include "tracing.h"
2626

27+
#include <inttypes.h>
28+
2729
namespace scudo {
2830

2931
// SizeClassAllocator64 is an allocator tuned for 64-bit address space.
@@ -1150,13 +1152,25 @@ void SizeClassAllocator64<Config>::getStats(ScopedString *Str, uptr ClassId,
11501152
"%s %02zu (%6zu): mapped: %6zuK popped: %7zu pushed: %7zu "
11511153
"inuse: %6zu total: %6zu releases attempted: %6zu last "
11521154
"released: %6zuK latest pushed bytes: %6zuK region: 0x%zx "
1153-
"(0x%zx)\n",
1155+
"(0x%zx)",
11541156
Region->Exhausted ? "E" : " ", ClassId, getSizeByClassId(ClassId),
11551157
Region->MemMapInfo.MappedUser >> 10, Region->FreeListInfo.PoppedBlocks,
11561158
Region->FreeListInfo.PushedBlocks, InUseBlocks, TotalChunks,
11571159
Region->ReleaseInfo.NumReleasesAttempted,
11581160
Region->ReleaseInfo.LastReleasedBytes >> 10, RegionPushedBytesDelta >> 10,
11591161
Region->RegionBeg, getRegionBaseByClassId(ClassId));
1162+
const u64 CurTimeNs = getMonotonicTimeFast();
1163+
const u64 LastReleaseAtNs = Region->ReleaseInfo.LastReleaseAtNs;
1164+
if (LastReleaseAtNs != 0 && CurTimeNs != LastReleaseAtNs) {
1165+
const u64 DiffSinceLastReleaseNs =
1166+
CurTimeNs - Region->ReleaseInfo.LastReleaseAtNs;
1167+
const u64 LastReleaseSecAgo = DiffSinceLastReleaseNs / 1000000000;
1168+
const u64 LastReleaseMsAgo =
1169+
(DiffSinceLastReleaseNs % 1000000000) / 1000000;
1170+
Str->append("Latest release: %" PRIu64 ":%" PRIu64 " seconds ago",
1171+
LastReleaseSecAgo, LastReleaseMsAgo);
1172+
}
1173+
Str->append("\n");
11601174
}
11611175

11621176
template <typename Config>

0 commit comments

Comments
 (0)