[runtime: shrinkstack during mark termination significantly increases GC STW time](https://golang.org/issue/12967)
===

The plan here is to reproduce the long mark termination STW time seen in
code.justin.tv/chat/tmi/irc at Go version 30b9663.

During mark termination, there's a lot of serial CPU time spent releasing
stack memory [issue 11465](https://golang.org/issue/11465), and a lot of
parallelized CPU time spent in runtime.shrinkstack.

Many goroutines must be in play, which cycle between using less than 2kB of
stack to using more than 8kB of stack (to be sure that their stacks will be
grown and then shrunk).

Another goroutine will generate garbage to force periodic background GC runs.
It will do this by retaining some amount of ballast memory and then churning
through that same amount of memory every few seconds.
