[plt-scheme] Appalling performance of DrScheme on Windows
Thanks for all the feedback on this thread.
Here's a summary as I read it:
1. When DrScheme is paged out (either because it's minimized under
Windows or because it's idle for days), DrScheme takes a long time
to page in.
2. DrScheme uses too much memory.
3. DrScheme seems to leak.
This thread has been mostly about #1 [paging issues]. Of course, #1 is
mostly related to #2: DrScheme takes so long to page back in because
it's using so much memory.
There is an additional factor, though: something about DrScheme's
default GC causes the VM system to thrash when paging DrScheme back in,
at least under Windows. Philippe Meunier confirmed this with extensive
experiments (that involved rebooting his laptop 167 times in the past
week).
Discussion on point #2 [too much memory] has mostly related to point
#3, though I think DrScheme's footprint is too big even at startup.
We'll continue working on the basic footprint.
As for #3 [leaks], we know about one leak. A few weeks ago, I
discovered that each Help Desk search leaks 400kb, and that's why I
asked about Help Desk searches. We're working on it.
Aside from the major Help Desk bug, I doubt that leaks are the main
problem. My experience is that our current GC technology is at least as
much a problem as leaks for long-running instances of DrScheme.
You can get a better garbage collector by running the "3m" variants of
PLT software. The 3m garbage collector grows and shrinks the heap as
appropriate, whereas the current GC only grows the heap. Also,
Philippe's experiments confirm that 3m avoids the page-in thrashing
caused by the current GC.
We hope to transition to 3m as the main PLT Scheme variant before too
long. For now, to get 3m executables, download the "Full" nightly
installer or build with `make 3m' and `make install-3m'. Then run
"DrScheme3m" instead of "DrScheme", and so on.
Although 3m has been around for a while, I think it's probably still
mysterious to a lot of people. For more information on our current GC
and the 3m replacement (including an explanation of why I think the
current GC is a problem), see my next post...