Index: /trunk/src/VBox/Main/include/Performance.h
===================================================================
--- /trunk/src/VBox/Main/include/Performance.h	(revision 35963)
+++ /trunk/src/VBox/Main/include/Performance.h	(revision 35964)
@@ -343,7 +343,7 @@
     {
     public:
-        HostRamUsage(CollectorHAL *hal, ComPtr<IUnknown> object, SubMetric *total, SubMetric *used, SubMetric *available, SubMetric *allocVMM, SubMetric *freeVMM, SubMetric *balloonVMM, SubMetric *sharedVMM)
-        : BaseMetric(hal, "RAM/Usage", object), mTotal(total), mUsed(used), mAvailable(available), mAllocVMM(allocVMM), mFreeVMM(freeVMM), mBalloonVMM(balloonVMM), mSharedVMM(sharedVMM) {};
-        ~HostRamUsage() { delete mTotal; delete mUsed; delete mAvailable; delete mAllocVMM; delete mFreeVMM; delete mBalloonVMM; delete mSharedVMM; };
+    HostRamUsage(CollectorHAL *hal, ComPtr<IUnknown> object, SubMetric *total, SubMetric *used, SubMetric *available)
+        : BaseMetric(hal, "RAM/Usage", object), mTotal(total), mUsed(used), mAvailable(available) {};
+        ~HostRamUsage() { delete mTotal; delete mUsed; delete mAvailable; };
 
         void init(ULONG period, ULONG length);
@@ -358,4 +358,21 @@
         SubMetric *mUsed;
         SubMetric *mAvailable;
+    };
+
+    class HostRamVmm : public BaseMetric
+    {
+    public:
+        HostRamVmm(CollectorHAL *hal, ComPtr<IUnknown> object, SubMetric *allocVMM, SubMetric *freeVMM, SubMetric *balloonVMM, SubMetric *sharedVMM)
+        : BaseMetric(hal, "RAM/VMM", object), mAllocVMM(allocVMM), mFreeVMM(freeVMM), mBalloonVMM(balloonVMM), mSharedVMM(sharedVMM) {};
+        ~HostRamVmm() { delete mAllocVMM; delete mFreeVMM; delete mBalloonVMM; delete mSharedVMM; };
+
+        void init(ULONG period, ULONG length);
+        void preCollect(CollectorHints& hints, uint64_t iTick);
+        void collect();
+        const char *getUnit() { return "kB"; };
+        ULONG getMinValue() { return 0; };
+        ULONG getMaxValue() { return INT32_MAX; };
+        ULONG getScale() { return 1; }
+    private:
         SubMetric *mAllocVMM;
         SubMetric *mFreeVMM;
Index: /trunk/src/VBox/Main/src-server/HostImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/HostImpl.cpp	(revision 35963)
+++ /trunk/src/VBox/Main/src-server/HostImpl.cpp	(revision 35964)
@@ -2808,7 +2808,15 @@
     pm::BaseMetric *cpuMhz = new pm::HostCpuMhz(hal, objptr, cpuMhzSM);
     aCollector->registerBaseMetric (cpuMhz);
-    pm::BaseMetric *ramUsage = new pm::HostRamUsage(hal, objptr, ramUsageTotal, ramUsageUsed,
-                                           ramUsageFree, ramVMMUsed, ramVMMFree, ramVMMBallooned, ramVMMShared);
+    pm::BaseMetric *ramUsage = new pm::HostRamUsage(hal, objptr,
+                                                    ramUsageTotal,
+                                                    ramUsageUsed,
+                                                    ramUsageFree);
     aCollector->registerBaseMetric (ramUsage);
+    pm::BaseMetric *ramVmm = new pm::HostRamVmm(hal, objptr, 
+                                                ramVMMUsed,
+                                                ramVMMFree,
+                                                ramVMMBallooned,
+                                                ramVMMShared);
+    aCollector->registerBaseMetric (ramVmm);
 
     aCollector->registerMetric(new pm::Metric(cpuLoad, cpuLoadUser, 0));
@@ -2868,34 +2876,34 @@
                                               new pm::AggregateMax()));
 
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMUsed, 0));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMUsed,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMUsed, 0));
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMUsed,
                                               new pm::AggregateAvg()));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMUsed,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMUsed,
                                               new pm::AggregateMin()));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMUsed,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMUsed,
                                               new pm::AggregateMax()));
 
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMFree, 0));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMFree,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMFree, 0));
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMFree,
                                               new pm::AggregateAvg()));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMFree,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMFree,
                                               new pm::AggregateMin()));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMFree,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMFree,
                                               new pm::AggregateMax()));
 
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMBallooned, 0));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMBallooned,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMBallooned, 0));
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMBallooned,
                                               new pm::AggregateAvg()));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMBallooned,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMBallooned,
                                               new pm::AggregateMin()));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMBallooned,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMBallooned,
                                               new pm::AggregateMax()));
 
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMShared, 0));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMShared,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMShared, 0));
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMShared,
                                               new pm::AggregateAvg()));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMShared,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMShared,
                                               new pm::AggregateMin()));
-    aCollector->registerMetric(new pm::Metric(ramUsage, ramVMMShared,
+    aCollector->registerMetric(new pm::Metric(ramVmm, ramVMMShared,
                                               new pm::AggregateMax()));
 }
Index: /trunk/src/VBox/Main/src-server/Performance.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/Performance.cpp	(revision 35963)
+++ /trunk/src/VBox/Main/src-server/Performance.cpp	(revision 35964)
@@ -315,4 +315,28 @@
     mUsed->init(mLength);
     mAvailable->init(mLength);
+}
+
+void HostRamUsage::preCollect(CollectorHints& hints, uint64_t /* iTick */)
+{
+    hints.collectHostRamUsage();
+}
+
+void HostRamUsage::collect()
+{
+    ULONG total, used, available;
+    int rc = mHAL->getHostMemoryUsage(&total, &used, &available);
+    if (RT_SUCCESS(rc))
+    {
+        mTotal->put(total);
+        mUsed->put(used);
+        mAvailable->put(available);
+
+    }
+}
+
+void HostRamVmm::init(ULONG period, ULONG length)
+{
+    mPeriod = period;
+    mLength = length;
     mAllocVMM->init(mLength);
     mFreeVMM->init(mLength);
@@ -321,20 +345,11 @@
 }
 
-void HostRamUsage::preCollect(CollectorHints& hints, uint64_t /* iTick */)
-{
-    hints.collectHostRamUsage();
-}
-
-void HostRamUsage::collect()
-{
-    ULONG total, used, available;
-    int rc = mHAL->getHostMemoryUsage(&total, &used, &available);
-    if (RT_SUCCESS(rc))
-    {
-        mTotal->put(total);
-        mUsed->put(used);
-        mAvailable->put(available);
-
-    }
+void HostRamVmm::preCollect(CollectorHints& hints, uint64_t /* iTick */)
+{
+    /* Guest RAM metrics do not use hints */
+}
+
+void HostRamVmm::collect()
+{
     ULONG allocVMM, freeVMM, balloonVMM, sharedVMM;
 
