Index: /trunk/src/VBox/GuestHost/OpenGL/include/cr_server.h
===================================================================
--- /trunk/src/VBox/GuestHost/OpenGL/include/cr_server.h	(revision 32939)
+++ /trunk/src/VBox/GuestHost/OpenGL/include/cr_server.h	(revision 32940)
@@ -82,4 +82,7 @@
     GLint windowList[CR_MAX_WINDOWS];
     GLint contextList[CR_MAX_CONTEXTS];
+#ifdef VBOXCR_LOGFPS
+    uint64_t timeUsed;
+#endif
 } CRClient;
 
Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_clear.c
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_clear.c	(revision 32939)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_clear.c	(revision 32940)
@@ -36,4 +36,6 @@
     uint32_t *mpaOps;
 
+    uint64_t mTimeUsedSum;
+    uint64_t *mpaTimes;
 } VBOXCRFPS, *PVBOXCRFPS;
 
@@ -47,4 +49,5 @@
     pFps->mpaCalls = crCalloc(sizeof (pFps->mpaCalls[0]) * cPeriods);
     pFps->mpaOps = crCalloc(sizeof (pFps->mpaOps[0]) * cPeriods);
+    pFps->mpaTimes = crCalloc(sizeof (pFps->mpaTimes[0]) * cPeriods);
 }
 
@@ -59,5 +62,5 @@
 {
     uint64_t cur = RTTimeNanoTS();
-    uint64_t curBytes, curBytesSent, curCalls, curOps;
+    uint64_t curBytes, curBytesSent, curCalls, curOps, curTimeUsed;
     int i;
 
@@ -66,4 +69,5 @@
     curCalls = 0;
     curOps = 0;
+    curTimeUsed = 0;
 
     for (i = 0; i < cr_server.numClients; i++)
@@ -75,8 +79,10 @@
             curCalls += cr_server.clients[i]->conn->recv_count;
             curOps += cr_server.clients[i]->conn->opcodes_count;
+            curTimeUsed += cr_server.clients[i]->timeUsed;
             cr_server.clients[i]->conn->total_bytes_recv = 0;
             cr_server.clients[i]->conn->total_bytes_sent = 0;
             cr_server.clients[i]->conn->recv_count = 0;
             cr_server.clients[i]->conn->opcodes_count = 0;
+            cr_server.clients[i]->timeUsed = 0;
         }
     }
@@ -101,4 +107,7 @@
         pFps->mpaOps[pFps->miPeriod] = curOps;
 
+        pFps->mTimeUsedSum += curTimeUsed - pFps->mpaTimes[pFps->miPeriod];
+        pFps->mpaTimes[pFps->miPeriod] = curTimeUsed;
+
         ++pFps->miPeriod;
         pFps->miPeriod %= pFps->mcPeriods;
@@ -136,4 +145,9 @@
 {
     return vboxCrFpsGetFps(pFps) * pFps->mOpsSum / pFps->mcPeriods;
+}
+
+double vboxCrFpsGetTimeProcPercent(PVBOXCRFPS pFps)
+{
+    return 100.0*pFps->mTimeUsedSum/pFps->mPeriodSum;
 }
 
@@ -198,5 +212,7 @@
       double cps = vboxCrFpsGetCps(&Fps);
       double ops = vboxCrFpsGetOps(&Fps);
-      crDebug("fps: %f, rec Mbps: %.1f, send Mbps: %.1f, cps: %.1f, ops: %.0f", fps, bps/(1024.0*1024.0), bpsSent/(1024.0*1024.0), cps, ops);
+      double tup = vboxCrFpsGetTimeProcPercent(&Fps);
+      crDebug("fps: %f, rec Mbps: %.1f, send Mbps: %.1f, cps: %.1f, ops: %.0f, host %.1f%%", 
+              fps, bps/(1024.0*1024.0), bpsSent/(1024.0*1024.0), cps, ops, tup);
   }
 #endif
Index: /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c
===================================================================
--- /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c	(revision 32939)
+++ /trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c	(revision 32940)
@@ -25,4 +25,8 @@
 #include <iprt/assert.h>
 
+#ifdef VBOXCR_LOGFPS
+#include <iprt/timer.h>
+#endif
+
 /**
  * \mainpage CrServerLib
@@ -380,4 +384,7 @@
     CRClient *pClient = NULL;
     int32_t i;
+#ifdef VBOXCR_LOGFPS
+    uint64_t tstart, tend;
+#endif
 
     /*crDebug("=>crServer: ClientWrite u32ClientID=%d", u32ClientID);*/
@@ -395,4 +402,8 @@
 
     if (!pClient->conn->vMajor) return VERR_NOT_SUPPORTED;
+
+#ifdef VBOXCR_LOGFPS
+    tstart = RTTimeNanoTS();
+#endif
 
     CRASSERT(pBuffer);
@@ -452,4 +463,8 @@
     CRASSERT(!pClient->conn->allow_redir_ptr || crNetNumMessages(pClient->conn)==0);
 
+#ifdef VBOXCR_LOGFPS
+    tend = RTTimeNanoTS();
+    pClient->timeUsed += tend-tstart;
+#endif
     /*crDebug("<=crServer: ClientWrite u32ClientID=%d", u32ClientID);*/
 
