[NTOSKRNL] Add the CcDataFlushes and CcDataPages counters
authorPierre Schweitzer <pierre@reactos.org>
Sat, 24 Feb 2018 13:02:33 +0000 (14:02 +0100)
committerPierre Schweitzer <pierre@reactos.org>
Sat, 24 Feb 2018 13:52:04 +0000 (14:52 +0100)
ntoskrnl/cc/copy.c
ntoskrnl/ex/sysinfo.c
ntoskrnl/include/internal/cc.h
ntoskrnl/io/iomgr/iofunc.c

index 496cef6..8525d9f 100644 (file)
@@ -43,6 +43,13 @@ ULONG CcFastReadWait;
 ULONG CcFastReadNoWait;
 ULONG CcFastReadResourceMiss;
 
+/* Counters:
+ * - Amount of pages flushed to the disk
+ * - Number of flush operations
+ */
+ULONG CcDataPages = 0;
+ULONG CcDataFlushes = 0;
+
 /* FUNCTIONS *****************************************************************/
 
 VOID
index 4db50e5..ceb1d22 100644 (file)
@@ -709,8 +709,8 @@ QSI_DEF(SystemPerformanceInformation)
     Spi->CcReadAheadIos = 0; /* FIXME */
     Spi->CcLazyWriteIos = CcLazyWriteIos;
     Spi->CcLazyWritePages = CcLazyWritePages;
-    Spi->CcDataFlushes = 0; /* FIXME */
-    Spi->CcDataPages = 0; /* FIXME */
+    Spi->CcDataFlushes = CcDataFlushes;
+    Spi->CcDataPages = CcDataPages;
     Spi->ContextSwitches = 0; /* FIXME */
     Spi->FirstLevelTbFills = 0; /* FIXME */
     Spi->SecondLevelTbFills = 0; /* FIXME */
index 32caa55..e91f1b4 100644 (file)
@@ -62,6 +62,8 @@ extern ULONG CcMapDataWait;
 extern ULONG CcMapDataNoWait;
 extern ULONG CcPinReadWait;
 extern ULONG CcPinReadNoWait;
+extern ULONG CcDataPages;
+extern ULONG CcDataFlushes;
 
 typedef struct _PF_SCENARIO_ID
 {
index 19f54e0..aa08bf7 100644 (file)
@@ -1039,6 +1039,14 @@ IoSynchronousPageWrite(IN PFILE_OBJECT FileObject,
     IOTRACE(IO_API_DEBUG, "FileObject: %p. Mdl: %p. Offset: %p \n",
             FileObject, Mdl, Offset);
 
+    /* Is the write originating from Cc? */
+    if (FileObject->SectionObjectPointer != NULL &&
+        FileObject->SectionObjectPointer->SharedCacheMap != NULL)
+    {
+        ++CcDataFlushes;
+        CcDataPages += BYTES_TO_PAGES(MmGetMdlByteCount(Mdl));
+    }
+
     /* Get the Device Object */
     DeviceObject = IoGetRelatedDeviceObject(FileObject);