Purge unused dirty pages in a fragmentation-reducing order.

Purge unused dirty pages in an order that first performs clean/dirty run
defragmentation, in order to mitigate available run fragmentation.

Remove the limitation that prevented purging unless at least one chunk
worth of dirty pages had accumulated in an arena.  This limitation was
intended to avoid excessive purging for small applications, but the
threshold was arbitrary, and the effect of questionable utility.

Relax opt_lg_dirty_mult from 5 to 3.  This compensates for increased
likelihood of allocating clean runs, given the same ratio of clean:dirty
runs, and reduces the potential for repeated purging in pathological
large malloc/free loops that push the active:dirty page ratio just over
the purge threshold.
diff --git a/ChangeLog b/ChangeLog
index 9a61872..edba526 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,9 +8,14 @@
 
 * 3.x.x (XXX Not released)
 
+  Incompatible changes:
+  - Change the "opt.lg_dirty_mult" from 5 to 3 (32:1 to 8:1).
+
   Bug fixes:
   - Fix dss/mmap allocation precedence code to use recyclable mmap memory only
     after primary dss allocation fails.
+  - Fix deadlock in the "arenas.purge" mallctl.  This regression was introduced
+    in 3.1.0 by the addition of the "arena.<i>.purge" mallctl.
 
 * 3.1.0 (October 16, 2012)