Skip to content

Commit b826880

Browse files
v-gogtecopybara-github
authored andcommitted
Query current clock once while computing candidates for hugepage collapse.
PiperOrigin-RevId: 770799243 Change-Id: I7b2352c55d36677127cbb1b530c3d0453fca6c7e
1 parent 4961c97 commit b826880

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

tcmalloc/huge_page_filler.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1773,7 +1773,7 @@ inline bool HugePageFiller<TrackerType>::TryUserspaceCollapse(
17731773
template <class TrackerType>
17741774
inline void HugePageFiller<TrackerType>::TryHugepageCollapse(
17751775
PageFlagsBase* pageflags, Residency* residency) {
1776-
// Trying to collapse the pages invoves three steps:
1776+
// Trying to collapse the pages involves three steps:
17771777
// 1. Collect up to kTotalTrackersToScan trackers that may be collapsed.
17781778
// Eligible pages here include:
17791779
// a. The trackers that manage pages that either were hugepage backed or
@@ -1799,6 +1799,8 @@ inline void HugePageFiller<TrackerType>::TryHugepageCollapse(
17991799

18001800
// Collect all the addresses under pageheap lock that aren't likely hugepage
18011801
// backed, and that were last scanned more than kRecordInterval ago.
1802+
const double now = clock_.now();
1803+
const double frequency = clock_.freq();
18021804
auto CollectNonHugePageAddresses =
18031805
[&](TrackerType& pt) GOOGLE_MALLOC_SECTION {
18041806
if (num_valid_addresses >= kTotalTrackersToScan) return;
@@ -1812,8 +1814,6 @@ inline void HugePageFiller<TrackerType>::TryHugepageCollapse(
18121814
pt.SetMaybeCollapse(/*value=*/true);
18131815
return;
18141816
}
1815-
double now = clock_.now();
1816-
double frequency = clock_.freq();
18171817
double elapsed = std::max<double>(now - state.record_time, 0);
18181818
if (elapsed > absl::ToDoubleSeconds(kRecordInterval) * frequency) {
18191819
page_trackers[num_valid_addresses] = &pt;
@@ -1866,7 +1866,7 @@ inline void HugePageFiller<TrackerType>::TryHugepageCollapse(
18661866
bool is_hugepage =
18671867
pageflags->IsHugepageBacked(tracker->location().start_addr());
18681868
state.entry_valid = true;
1869-
state.record_time = clock_.now();
1869+
state.record_time = now;
18701870
bool collapsed = false;
18711871
size_t total_swapped_pages = 0;
18721872
size_t total_unbacked_pages = 0;

0 commit comments

Comments
 (0)