[PATCH] Fix kernel time to include idle time=0A=

Ray Hinchliffe ray at pobox.co.uk
Fri Apr 15 09:36:36 CDT 2011


=0A=
---=0A=
 dlls/ntdll/nt.c    |   25 +++++++++----------------=0A=
 include/winternl.h |    5 +++--=0A=
 2 files changed, 12 insertions(+), 18 deletions(-)=0A=
 mode change 100644 =3D> 100755 dlls/ntdll/nt.c=0A=
 mode change 100644 =3D> 100755 include/winternl.h=0A=
=0A=
diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c=0A=
old mode 100644=0A=
new mode 100755=0A=
index fb89a42..05a980d=0A=
--- a/dlls/ntdll/nt.c=0A=
+++ b/dlls/ntdll/nt.c=0A=
@@ -1311,22 +1311,15 @@ void fill_cpu_info(void)=0A=
 }=0A=
 =0A=
 static void fill_in_sppi(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION =
*sppi, DWORD64 idle, DWORD64 sys, DWORD64 usr)=0A=
-{=0A=
-    DWORD64 steal;=0A=
-    sppi->IdleTime.QuadPart =3D idle * 10000000 / sysconf(_SC_CLK_TCK);=0A=
-    sppi->KernelTime.QuadPart =3D sys * 10000000 / sysconf(_SC_CLK_TCK);=0A=
-    sppi->UserTime.QuadPart =3D usr * 10000000 / sysconf(_SC_CLK_TCK);=0A=
-=0A=
-    /* Add 1% from idle time to kernel time, to make .NET happy */=0A=
-    steal =3D sppi->IdleTime.QuadPart / 100;=0A=
-    sppi->IdleTime.QuadPart -=3D steal;=0A=
-    sppi->KernelTime.QuadPart +=3D steal;=0A=
-=0A=
-    /* DPC time */=0A=
-    sppi->Reserved1[0].QuadPart =3D 0;=0A=
-    /* Interrupt time */=0A=
-    sppi->Reserved1[1].QuadPart =3D 0;=0A=
-    sppi->Reserved2 =3D 0;=0A=
+{
+    DWORD tick_time =3D 10000000 / sysconf(_SC_CLK_TCK);
+    sppi->IdleTime.QuadPart   =3D   idle         * tick_time;=0A=
+    sppi->KernelTime.QuadPart =3D ( idle + sys ) * tick_time;   /* =
includes idle time */=0A=
+    sppi->UserTime.QuadPart   =3D          usr   * tick_time;=0A=
+    sppi->DpcTime.QuadPart    =3D 0;                            /* DPC =
time */
+    sppi->IntTime.QuadPart    =3D 0;                            /* =
Interrupt time */
+    sppi->IntCount            =3D 0;                            /* =
Interrupt count */
+    return;=0A=
 }=0A=
 =0A=
 =
/************************************************************************=
******=0A=
diff --git a/include/winternl.h b/include/winternl.h=0A=
old mode 100644=0A=
new mode 100755=0A=
index a1c9f0c..0801a55=0A=
--- a/include/winternl.h=0A=
+++ b/include/winternl.h=0A=
@@ -1241,8 +1241,9 @@ typedef struct =
_SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION {=0A=
     LARGE_INTEGER IdleTime;=0A=
     LARGE_INTEGER KernelTime;=0A=
     LARGE_INTEGER UserTime;=0A=
-    LARGE_INTEGER Reserved1[2];=0A=
-    ULONG Reserved2;=0A=
+    LARGE_INTEGER DpcTime;
+    LARGE_INTEGER IntTime;
+    ULONG IntCount;
 } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, =
*PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;=0A=
 =0A=
 /* System Information Class 0x0b */=0A=
-- =0A=
1.7.0.4=0A=
=0A=

------=_NextPart_000_0002_01CBFB53.11918D40
Content-Type: text/plain;
	name="0001-Fix-kernel-time-to-include-idle-time.txt"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="0001-Fix-kernel-time-to-include-idle-time.txt"

SIV32X - System Information Viewer V4.20 Beta-00 RUW::ray  Built Apr 14 =
2011 at 23:19:27  [1252]  Command [Z:\home\ray\siv\siv32x.exe =
-save=3D[wine-perf]=3Dtest.txt] [[wine-perf]] [Z:\home\ray\siv\test.txt]


[wine-perf]  [wine]


Initial  CPU-0   Idle       1263.9500000  User        294.3600000  Krnl  =
     1376.2000000  DPC          0.0000000  Int          0.0000000  Int 0
         CPU-1   Idle       1356.8000000  User        254.3400000  Krnl  =
     1426.4600000  DPC          0.0000000  Int          0.0000000  Int 0
  1 Sec  CPU-0   Idle          0.9700000  User          0.0000000  Krnl  =
        1.0000000  DPC          0.0000000  Int          0.0000000  Int 0
         CPU-1   Idle          0.9700000  User          0.0000000  Krnl  =
        0.9700000  DPC          0.0000000  Int          0.0000000  Int 0
  2 Sec  CPU-0   Idle          1.9700000  User          0.0000000  Krnl  =
        2.0000000  DPC          0.0000000  Int          0.0000000  Int 0
         CPU-1   Idle          1.7800000  User          0.0000000  Krnl  =
        1.7900000  DPC          0.0000000  Int          0.0000000  Int 0
  3 Sec  CPU-0   Idle          2.9700000  User          0.0000000  Krnl  =
        3.0000000  DPC          0.0000000  Int          0.0000000  Int 0
         CPU-1   Idle          2.9800000  User          0.0000000  Krnl  =
        2.9900000  DPC          0.0000000  Int          0.0000000  Int 0
  4 Sec  CPU-0   Idle          3.9700000  User          0.0000000  Krnl  =
        4.0000000  DPC          0.0000000  Int          0.0000000  Int 0
         CPU-1   Idle          3.5800000  User          0.0000000  Krnl  =
        3.5900000  DPC          0.0000000  Int          0.0000000  Int 0


[=3D=3D=3D=3D=3D=3D=3D=3D]  [ Elapsed Time for Computer Information  =
0:05  Used 2.85KB of 8.00MB  "[wine-perf]" ]

------=_NextPart_000_0002_01CBFB53.11918D40
Content-Type: text/plain;
	name="test-from-real-windoes-7-system.txt"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="test-from-real-windoes-7-system.txt"

SIV32X - System Information Viewer V4.20 Beta-00 RED::ray  Built Apr 14 =
2011 at 23:19:27  [1252]  Command [siv32x.exe  =
-save=3D[wine-perf]=3Dtest-from-real-windoes-7-system.txt ] =
[[wine-perf]] [D:\SIV\test-from-real-windoes-7-system.txt]


[wine-perf]  [wine]


Initial  CPU-0   Idle       3215.4146115  User         61.6047949  Krnl  =
     3240.3591714  DPC          1.2324079  Int          0.3276021  Int =
1403423
         CPU-1   Idle       3291.8863017  User          0.1872012  Krnl  =
     3301.2619618  DPC          1.4508093  Int          5.6940365  Int =
1407440
         CPU-2   Idle       3053.0955710  User        183.1139738  Krnl  =
     3118.2103884  DPC          0.0000000  Int          0.1404009  Int =
911239
         CPU-3   Idle       3283.9926511  User          0.0156001  Krnl  =
     3301.1839613  DPC         10.8732697  Int          5.3664344  Int =
1416306
         CPU-4   Idle       3262.4645131  User         20.8417336  Krnl  =
     3280.2330270  DPC          0.0624004  Int          0.1404009  Int =
1239500
         CPU-5   Idle       3297.3151365  User          0.0468003  Krnl  =
     3300.9031595  DPC          2.5116161  Int          0.0156001  Int =
1241122
         CPU-6   Idle       3227.1458867  User         51.9327329  Krnl  =
     3248.8924261  DPC          0.2028013  Int          2.6208168  Int =
1385089
         CPU-7   Idle       3295.9579278  User          0.0156001  Krnl  =
     3300.6847581  DPC          1.5132097  Int          0.3120020  Int =
1247934
         CPU-8   Idle       3198.3637022  User         63.7420086  Krnl  =
     3236.8335488  DPC          0.2964019  Int          0.1404009  Int =
1181095
         CPU-9   Idle       3298.5943447  User          0.0936006  Krnl  =
     3300.3415559  DPC          0.0000000  Int          0.0780005  Int =
1314211
         CPU-10  Idle       3233.7291289  User         42.4946724  Krnl  =
     3257.8156833  DPC          0.0312002  Int          0.0780005  Int =
1239607
         CPU-11  Idle       3279.7962242  User          0.0780005  Krnl  =
     3300.1075544  DPC         16.3801050  Int          1.0764069  Int =
1628404
  1 Sec  CPU-0   Idle          1.0140065  User          0.0000000  Krnl  =
        1.0140065  DPC          0.0000000  Int          0.0000000  Int =
87
         CPU-1   Idle          0.9672062  User          0.0000000  Krnl  =
        0.9672062  DPC          0.0000000  Int          0.0000000  Int =
28
         CPU-2   Idle          1.0140065  User          0.0000000  Krnl  =
        1.0140065  DPC          0.0000000  Int          0.0000000  Int =
42
         CPU-3   Idle          1.0140065  User          0.0000000  Krnl  =
        1.0140065  DPC          0.0000000  Int          0.0000000  Int =
52
         CPU-4   Idle          0.9984064  User          0.0000000  Krnl  =
        0.9984064  DPC          0.0000000  Int          0.0000000  Int =
39
         CPU-5   Idle          0.9984064  User          0.0000000  Krnl  =
        0.9984064  DPC          0.0000000  Int          0.0000000  Int =
23
         CPU-6   Idle          0.9828063  User          0.0000000  Krnl  =
        0.9828063  DPC          0.0000000  Int          0.0000000  Int =
41
         CPU-7   Idle          0.8268053  User          0.0000000  Krnl  =
        0.8268053  DPC          0.0000000  Int          0.0000000  Int =
24
         CPU-8   Idle          0.9360060  User          0.0000000  Krnl  =
        0.9360060  DPC          0.0000000  Int          0.0000000  Int =
43
         CPU-9   Idle          0.9360060  User          0.0000000  Krnl  =
        0.9360060  DPC          0.0000000  Int          0.0000000  Int =
37
         CPU-10  Idle          0.9984064  User          0.0000000  Krnl  =
        0.9984064  DPC          0.0000000  Int          0.0000000  Int =
52
         CPU-11  Idle          0.9984064  User          0.0000000  Krnl  =
        0.9984064  DPC          0.0000000  Int          0.0000000  Int =
103
  2 Sec  CPU-0   Idle          1.9968128  User          0.0000000  Krnl  =
        2.0280130  DPC          0.0156001  Int          0.0000000  Int =
333
         CPU-1   Idle          1.9812127  User          0.0000000  Krnl  =
        1.9812127  DPC          0.0000000  Int          0.0000000  Int =
237
         CPU-2   Idle          1.9812127  User          0.0156001  Krnl  =
        2.0124129  DPC          0.0000000  Int          0.0000000  Int =
269
         CPU-3   Idle          2.0124129  User          0.0000000  Krnl  =
        2.0280130  DPC          0.0156001  Int          0.0000000  Int =
318
         CPU-4   Idle          1.9656126  User          0.0156001  Krnl  =
        2.0124129  DPC          0.0000000  Int          0.0000000  Int =
235
         CPU-5   Idle          2.0280130  User          0.0000000  Krnl  =
        2.0280130  DPC          0.0000000  Int          0.0000000  Int =
234
         CPU-6   Idle          2.0124129  User          0.0000000  Krnl  =
        2.0280130  DPC          0.0000000  Int          0.0000000  Int =
262
         CPU-7   Idle          2.0280130  User          0.0000000  Krnl  =
        2.0280130  DPC          0.0000000  Int          0.0000000  Int =
238
         CPU-8   Idle          1.9812127  User          0.0000000  Krnl  =
        2.0280130  DPC          0.0156001  Int          0.0000000  Int =
296
         CPU-9   Idle          1.8720120  User          0.0000000  Krnl  =
        1.8720120  DPC          0.0000000  Int          0.0000000  Int =
311
         CPU-10  Idle          2.0280130  User          0.0000000  Krnl  =
        2.0280130  DPC          0.0000000  Int          0.0000000  Int =
293
         CPU-11  Idle          1.9656126  User          0.0156001  Krnl  =
        2.0124129  DPC          0.0000000  Int          0.0000000  Int =
472
  3 Sec  CPU-0   Idle          3.0108193  User          0.0000000  Krnl  =
        3.0420195  DPC          0.0156001  Int          0.0000000  Int =
423
         CPU-1   Idle          3.0264194  User          0.0000000  Krnl  =
        3.0264194  DPC          0.0000000  Int          0.0000000  Int =
263
         CPU-2   Idle          2.9952192  User          0.0156001  Krnl  =
        3.0264194  DPC          0.0000000  Int          0.0000000  Int =
310
         CPU-3   Idle          3.0264194  User          0.0000000  Krnl  =
        3.0420195  DPC          0.0156001  Int          0.0000000  Int =
390
         CPU-4   Idle          2.9796191  User          0.0156001  Krnl  =
        3.0264194  DPC          0.0000000  Int          0.0000000  Int =
259
         CPU-5   Idle          3.0420195  User          0.0000000  Krnl  =
        3.0420195  DPC          0.0000000  Int          0.0000000  Int =
261
         CPU-6   Idle          3.0264194  User          0.0000000  Krnl  =
        3.0420195  DPC          0.0000000  Int          0.0000000  Int =
296
         CPU-7   Idle          3.0420195  User          0.0000000  Krnl  =
        3.0420195  DPC          0.0000000  Int          0.0000000  Int =
267
         CPU-8   Idle          2.9952192  User          0.0000000  Krnl  =
        3.0420195  DPC          0.0156001  Int          0.0000000  Int =
341
         CPU-9   Idle          3.0420195  User          0.0000000  Krnl  =
        3.0420195  DPC          0.0000000  Int          0.0000000  Int =
370
         CPU-10  Idle          3.0420195  User          0.0000000  Krnl  =
        3.0420195  DPC          0.0000000  Int          0.0000000  Int =
346
         CPU-11  Idle          2.9796191  User          0.0156001  Krnl  =
        3.0264194  DPC          0.0000000  Int          0.0000000  Int =
612
  4 Sec  CPU-0   Idle          4.0248258  User          0.0000000  Krnl  =
        4.0560260  DPC          0.0156001  Int          0.0000000  Int =
534
         CPU-1   Idle          4.0248258  User          0.0000000  Krnl  =
        4.0248258  DPC          0.0000000  Int          0.0000000  Int =
341
         CPU-2   Idle          4.0092257  User          0.0156001  Krnl  =
        4.0404259  DPC          0.0000000  Int          0.0000000  Int =
368
         CPU-3   Idle          4.0092257  User          0.0000000  Krnl  =
        4.0248258  DPC          0.0156001  Int          0.0000000  Int =
481
         CPU-4   Idle          3.9936256  User          0.0156001  Krnl  =
        4.0404259  DPC          0.0000000  Int          0.0000000  Int =
318
         CPU-5   Idle          4.0248258  User          0.0000000  Krnl  =
        4.0248258  DPC          0.0000000  Int          0.0000000  Int =
308
         CPU-6   Idle          4.0404259  User          0.0000000  Krnl  =
        4.0560260  DPC          0.0000000  Int          0.0000000  Int =
352
         CPU-7   Idle          4.0248258  User          0.0000000  Krnl  =
        4.0248258  DPC          0.0000000  Int          0.0000000  Int =
312
         CPU-8   Idle          3.9936256  User          0.0000000  Krnl  =
        4.0404259  DPC          0.0156001  Int          0.0000000  Int =
407
         CPU-9   Idle          4.0248258  User          0.0000000  Krnl  =
        4.0248258  DPC          0.0000000  Int          0.0000000  Int =
428
         CPU-10  Idle          4.0404259  User          0.0000000  Krnl  =
        4.0404259  DPC          0.0000000  Int          0.0000000  Int =
420
         CPU-11  Idle          3.9780255  User          0.0156001  Krnl  =
        4.0248258  DPC          0.0000000  Int          0.0000000  Int =
726


[=3D=3D=3D=3D=3D=3D=3D=3D]  [ Elapsed Time for Computer Information  =
0:05  Used 17.41KB of 8.00MB  "[wine-perf]" ]


[=3D=3D=3D=3D=3D=3D=3D=3D]  [ Elapsed Time for Network  Information  =
0:00  Used 17.41KB of 8.00MB ]

------=_NextPart_000_0002_01CBFB53.11918D40--




More information about the wine-patches mailing list