Index: /trunk/src/VBox/VMM/PGM.cpp
===================================================================
--- /trunk/src/VBox/VMM/PGM.cpp	(revision 30842)
+++ /trunk/src/VBox/VMM/PGM.cpp	(revision 30843)
@@ -1645,4 +1645,9 @@
     PGM_REG_COUNTER(&pPGM->StatRZChunkR3MapTlbHits,           "/PGM/ChunkR3Map/TlbHitsRZ",          "TLB hits.");
     PGM_REG_COUNTER(&pPGM->StatRZChunkR3MapTlbMisses,         "/PGM/ChunkR3Map/TlbMissesRZ",        "TLB misses.");
+    PGM_REG_PROFILE(&pPGM->StatChunkAging,                    "/PGM/ChunkR3Map/Map/Aging",          "Chunk aging profiling.");
+    PGM_REG_PROFILE(&pPGM->StatChunkFindCandidate,            "/PGM/ChunkR3Map/Map/Find",           "Chunk unmap find profiling.");
+    PGM_REG_PROFILE(&pPGM->StatChunkUnmap,                    "/PGM/ChunkR3Map/Map/Unmap",          "Chunk unmap of address space profiling.");
+    PGM_REG_PROFILE(&pPGM->StatChunkMap,                      "/PGM/ChunkR3Map/Map/Map",            "Chunk map of address space profiling.");
+
     PGM_REG_COUNTER(&pPGM->StatRZPageMapTlbHits,              "/PGM/RZ/Page/MapTlbHits",            "TLB hits.");
     PGM_REG_COUNTER(&pPGM->StatRZPageMapTlbMisses,            "/PGM/RZ/Page/MapTlbMisses",          "TLB misses.");
Index: /trunk/src/VBox/VMM/PGMInternal.h
===================================================================
--- /trunk/src/VBox/VMM/PGMInternal.h	(revision 30842)
+++ /trunk/src/VBox/VMM/PGMInternal.h	(revision 30843)
@@ -2892,4 +2892,9 @@
     /** pgmPhysIsValidLargePage profiling - RZ*/
     STAMPROFILE                 StatRZIsValidLargePage;
+
+    STAMPROFILE                 StatChunkAging;
+    STAMPROFILE                 StatChunkFindCandidate;
+    STAMPROFILE                 StatChunkUnmap;
+    STAMPROFILE                 StatChunkMap;
 #endif
 } PGM;
Index: /trunk/src/VBox/VMM/PGMPhys.cpp
===================================================================
--- /trunk/src/VBox/VMM/PGMPhys.cpp	(revision 30842)
+++ /trunk/src/VBox/VMM/PGMPhys.cpp	(revision 30843)
@@ -3315,9 +3315,14 @@
      */
     if (pVM->pgm.s.ChunkR3Map.AgeingCountdown-- == 0)
+    {
+        STAM_PROFILE_START(&pVM->pgm.s.StatChunkAging, a);
         PGMR3PhysChunkAgeing(pVM);
+        STAM_PROFILE_STOP(&pVM->pgm.s.StatChunkAging, a);
+    }
 
     /*
      * Enumerate the age tree starting with the left most node.
      */
+    STAM_PROFILE_START(&pVM->pgm.s.StatChunkFindCandidate, a);
     PGMR3PHYSCHUNKUNMAPCB Args;
     Args.pVM      = pVM;
@@ -3327,6 +3332,10 @@
     Assert(Args.pChunk);
     if (Args.pChunk)
+    {
+        STAM_PROFILE_STOP(&pVM->pgm.s.StatChunkFindCandidate, a);
         return Args.pChunk->Core.Key;
-
+    }
+
+    STAM_PROFILE_STOP(&pVM->pgm.s.StatChunkFindCandidate, a);
     return INT32_MAX;
 }
@@ -3367,5 +3376,7 @@
         if (Req.idChunkUnmap != INT32_MAX)
         {
+            STAM_PROFILE_START(&pVM->pgm.s.StatChunkUnmap, a);
             rc = VMMR3CallR0(pVM, VMMR0_DO_GMM_MAP_UNMAP_CHUNK, 0, &Req.Hdr);
+            STAM_PROFILE_START(&pVM->pgm.s.StatChunkUnmap, a);
             if (RT_SUCCESS(rc))
             {
@@ -3471,5 +3482,7 @@
 
     /* Must be callable from any thread, so can't use VMMR3CallR0. */
+    STAM_PROFILE_START(&pVM->pgm.s.StatChunkMap, a);
     rc = SUPR3CallVMMR0Ex(pVM->pVMR0, NIL_VMCPUID, VMMR0_DO_GMM_MAP_UNMAP_CHUNK, 0, &Req.Hdr);
+    STAM_PROFILE_STOP(&pVM->pgm.s.StatChunkMap, a);
     if (RT_SUCCESS(rc))
     {
