• Michael Anthony Knyszek's avatar
    runtime: allocate from free and scav fairly · 06484245
    Michael Anthony Knyszek authored
    This change modifies the behavior of span allocations to no longer
    prefer the free treap over the scavenged treap.
    
    While there is an additional cost to allocating out of the scavenged
    treap, the current behavior of preferring the unscavenged spans can
    lead to unbounded growth of a program's virtual memory footprint.
    
    In small programs (low # of Ps, low resident set size, low allocation
    rate) this behavior isn't really apparent and is difficult to
    reproduce.
    
    However, in relatively large, long-running programs we see this
    unbounded growth in free spans, and an unbounded amount of heap
    growths.
    
    It still remains unclear how this policy change actually ends up
    increasing the number of heap growths over time, but switching the
    policy back to best-fit does indeed solve the problem.
    
    Change-Id: Ibb88d24f9ef6766baaa7f12b411974cc03341e7b
    Reviewed-on: https://go-review.googlesource.com/c/148979
    Run-TryBot: Michael Knyszek <mknyszek@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
    Reviewed-by: 's avatarAustin Clements <austin@google.com>
    06484245
Name
Last commit
Last update
..
archive Loading commit data...
bufio Loading commit data...
builtin Loading commit data...
bytes Loading commit data...
cmd Loading commit data...
compress Loading commit data...
container Loading commit data...
context Loading commit data...
crypto Loading commit data...
database/sql Loading commit data...
debug Loading commit data...
encoding Loading commit data...
errors Loading commit data...
expvar Loading commit data...
flag Loading commit data...
fmt Loading commit data...
go Loading commit data...
hash Loading commit data...
html Loading commit data...
image Loading commit data...
index/suffixarray Loading commit data...
internal Loading commit data...
io Loading commit data...
log Loading commit data...
math Loading commit data...
mime Loading commit data...
net Loading commit data...
os Loading commit data...
path Loading commit data...
plugin Loading commit data...
reflect Loading commit data...
regexp Loading commit data...
runtime Loading commit data...
sort Loading commit data...
strconv Loading commit data...
strings Loading commit data...
sync Loading commit data...
syscall Loading commit data...
testdata Loading commit data...
testing Loading commit data...
text Loading commit data...
time Loading commit data...
unicode Loading commit data...
unsafe Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
bootstrap.bash Loading commit data...
buildall.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
cmp.bash Loading commit data...
iostest.bash Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
naclmake.bash Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...