• Michael Knyszek's avatar
    runtime: call sysHugePage less often · 8c3040d7
    Michael Knyszek authored
    Currently when we coalesce memory we make a sysHugePage call
    (MADV_HUGEPAGE) to ensure freed and coalesced huge pages are treated as
    such so the scavenger's assumptions about performance are more in line
    with reality.
    
    Unfortunately we do it way too often because we do it if there was any
    change to the huge page count for the span we're coalescing into, not
    taking into account that it could coalesce with its neighbors and not
    actually create a new huge page.
    
    This change makes it so that it only calls sysHugePage if the original
    huge page counts between the span to be coalesced into and its neighbors
    do not add up (i.e. a new huge page was created due to alignment). Calls
    to sysHugePage will now happen much less frequently, as intended.
    
    Updates #32828.
    
    Change-Id: Ia175919cb79b730a658250425f97189e27d7fda3
    Reviewed-on: https://go-review.googlesource.com/c/go/+/186926
    
    
    Run-TryBot: Austin Clements <austin@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarAustin Clements <austin@google.com>
    8c3040d7
mheap.go 63.4 KB