Index: /trunk/src/VBox/VMM/PGM.cpp
===================================================================
--- /trunk/src/VBox/VMM/PGM.cpp	(revision 30814)
+++ /trunk/src/VBox/VMM/PGM.cpp	(revision 30815)
@@ -1585,4 +1585,6 @@
     STAM_REL_REG(pVM, &pPGM->ChunkR3Map.c,                       STAMTYPE_U32,     "/PGM/ChunkR3Map/c",                  STAMUNIT_COUNT,     "Number of mapped chunks.");
     STAM_REL_REG(pVM, &pPGM->ChunkR3Map.cMax,                    STAMTYPE_U32,     "/PGM/ChunkR3Map/cMax",               STAMUNIT_COUNT,     "Maximum number of mapped chunks.");
+    STAM_REL_REG(pVM, &pPGM->cMappedChunks,                      STAMTYPE_U32,     "/PGM/Chunk/Map",                     STAMUNIT_COUNT,     "Number of times we mapped a chunk.");
+    STAM_REL_REG(pVM, &pPGM->cUnmappedChunks,                    STAMTYPE_U32,     "/PGM/Chunk/Unmap",                   STAMUNIT_COUNT,     "Number of times we unmapped a chunk.");
 
     STAM_REL_REG(pVM, &pPGM->StatLargePageAlloc,                 STAMTYPE_COUNTER, "/PGM/LargePage/Alloc",               STAMUNIT_OCCURENCES, "The number of large pages we've used.");
Index: /trunk/src/VBox/VMM/PGMInternal.h
===================================================================
--- /trunk/src/VBox/VMM/PGMInternal.h	(revision 30814)
+++ /trunk/src/VBox/VMM/PGMInternal.h	(revision 30815)
@@ -2796,4 +2796,6 @@
     uint32_t                        cReadLockedPages;   /**< The number of read locked pages. */
     uint32_t                        cBalloonedPages;    /**< The number of ballooned pages. */
+    uint32_t                        cMappedChunks;      /**< Number of times we mapped a chunk. */
+    uint32_t                        cUnmappedChunks;    /**< Number of times we unmapped a chunk. */
 /*    uint32_t                        aAlignment4[1]; */
 
Index: /trunk/src/VBox/VMM/PGMPhys.cpp
===================================================================
--- /trunk/src/VBox/VMM/PGMPhys.cpp	(revision 30814)
+++ /trunk/src/VBox/VMM/PGMPhys.cpp	(revision 30815)
@@ -3382,4 +3382,5 @@
 #endif
             pVM->pgm.s.ChunkR3Map.c--;
+            pVM->pgm.s.cUnmappedChunks++;
 
             /* Flush dangling PGM pointers (R3 & R0 ptrs to GC physical addresses) */
@@ -3414,4 +3415,5 @@
 
             /* Flush the pgm pool cache; call the internal rendezvous handler as we're already in a rendezvous handler here. */
+            /* todo: also not really efficient to unmap a chunk that contains PD or PT pages. */
             pgmR3PoolClearAllRendezvous(pVM, &pVM->aCpus[0], false /* no need to flush the REM TLB as we already did that above */);
         }
@@ -3490,4 +3492,5 @@
         AssertRelease(fRc);
         pVM->pgm.s.ChunkR3Map.c++;
+        pVM->pgm.s.cMappedChunks++;
 
         fRc = RTAvllU32Insert(&pVM->pgm.s.ChunkR3Map.pAgeTree, &pChunk->AgeCore);
