0.9.8.19:
authorJuho Snellman <jsnell@iki.fi>
Sat, 7 Jan 2006 18:53:39 +0000 (18:53 +0000)
committerJuho Snellman <jsnell@iki.fi>
Sat, 7 Jan 2006 18:53:39 +0000 (18:53 +0000)
commit97423182206cfe8c078eff105fea00dceb03be99
tree11971cea9cb2a64521edb69f040654d813261095
parentfd225cfc39c6e4ba6f778b4201423cd3e83e0418
0.9.8.19:
        Changes to GENCGC memory zeroing behaviour that give a big
        performance boost, especially on modern processors.

        * Instead of zeroing memory by remapping memory with
          munmap/mmap at GC time, pages are just marked as needing
          zeroing and zeroed with memset when they're added to a new
          allocation region. This reduces GC latency both for the
          common and worst cases.

        * To keep the memory footprint down, clear the pages by
          remapping after major GCs (arbitrarily defined as a
          collection of generation 2 or older).  The memory freed from
          a minor GC is just going to get used again immediately , so
          releasing them back to the OS would make little sense.

        * Add a GENCGC mode (#define READ_PROTECT_FREE_PAGES) for
          catching attempts to read unallocated pages

        * See sbcl-devel "Changes to GENCGC memory zeroing" in 2005-12
          for more details and performance measurements. (Note
          that many parts of this patch have already been committed
          piecemeal over the last month, this is just the most
          significant chunk).

        * Performance effect on BSDs (which used a different zeroing
          strategy than Linux before this) is unknown.
NEWS
src/runtime/gencgc-internal.h
src/runtime/gencgc.c
version.lisp-expr