• Michael Knyszek's avatar
    runtime: place lower limit on trigger ratio · 74af7fc6
    Michael Knyszek authored
    This change makes it so that the GC pacer's trigger ratio can never fall
    below 0.6. Upcoming changes to the allocator make it significantly more
    scalable and thus much faster in certain cases, creating a large gap
    between the performance of allocation and scanning. The consequence of
    this is that the trigger ratio can drop very low (0.07 was observed) in
    order to drop GC utilization. A low trigger ratio like this results in a
    high amount of black allocations, which causes the live heap to appear
    larger, and thus the heap, and RSS, grows to a much higher stable point.
    
    This change alleviates the problem by placing a lower bound on the
    trigger ratio. The expected (and confirmed) effect of this is that
    utilization in certain scenarios will no longer converge to the expected
    25%, and may go higher. As a result of this artificially high trigger
    ratio, more time will also be spent doing GC assists compared to
    dedicated mark workers, since the GC will be on for an artifically short
    fraction of time (artificial with respect to the pacer). The biggest
    concern of this change is that allocation latency will suffer as a
    result, since there will now be more assists. But, upcoming changes to
    the allocator reduce the latency enough to outweigh the expected
    increase in latency from this change, without the blowup in RSS observed
    from the changes to the allocator.
    
    Updates #35112.
    
    Change-Id: Idd7c94fa974d0de673304c4397e716e89bfbf09b
    Reviewed-on: https://go-review.googlesource.com/c/go/+/200439Reviewed-by: default avatarAustin Clements <austin@google.com>
    74af7fc6
mgc.go 74.7 KB