Hi all,

I am using windows CE 4.1, and I ported the OS to an ARM9 based platform.
I am facing a problem with the OSBENCH program. The program, gives me
really crazy results. The results I got for the first test is copied below-

******************************************************************************
| 0.00 | IP = NO | CS = NO | 1 IPS
-------------------------------------------------------------------
EnterCriticalSection traditional (blocking) with priority inversion : Time
from a lower priority thread calling LeaveCS to a higher priority thread
unblocking from the EnterCS call

| Max Time = 4294823.666 us
| Min Time = 1833.470 us
| Avg Time = 111.586 us
******************************************************************************

As I understand, the problem is caused by OB_PrintResults routine in
osbench.c The line which causes the trouble is the 'dwtime' calculation
line.
dwTime = (DWORD) (g_pBuffer->liPerf2[i].QuadPart -
g_pBuffer->liPerf1[i].QuadPart);
When the value computed is negative, (In the first test, the second value
is always bigger than the first) it results in a typecast problem (DWORD
is unsigned), and I get a big unsigned value as the result. Just to
confirm that my basic routines are correct- the QueryperformanceCounter
returns the no. of clockticks till the moment it is called, and
QueryPerformanceFrequency returns the frequency of counter clock (which in
my case is my Timer).

So how can I get rid of this problem? I tried copying the entire stuff to
my platform directory and rebuilding it. It works, but blocks at the first
inter-process test (It works till Event-intra process. The next test is
Event-inter process, and it blocks there. I tried swapping the tests and
confirmed that blocking occurs at the inter-process tests). I have never
modified any static libraries which is included by the build system. How
can I modify the OSBENCH program? Or Am I in a completely wrong track.
Please advice.

Thank you,
Mariam.

PS: Attached below is my new results. If any of you have run it on an ARM
platform, please let me know whether they are good enough for an ARM 922
processor running at 200MHz?
******************************************************************************
SYSTEM BUILD INFO

PLATFORM = PROCESSOR = ARMV4I
CONFIG = TEST2
RET/DEBUG = debug
BUILD DATE = May 28 2004 @ (15:58:21)
-------------------------------------------------------------------
PERFORMANCE COUNTER INFO

Counter Frequency = 100000000 Hz
Counter tick interval = 10 ns
QPC() call overhead = 6.280 usecs
-------------------------------------------------------------------
RUNTIME OPTIONS

NUmber of samples per test = 5
===================================================================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


===================================================================
| 0.00 | IP = NO | CS = NO | 1 IPS
-------------------------------------------------------------------
EnterCriticalSection traditional (blocking) with priority inversion :Time
from a lower priority thread calling LeaveCS to a higher priority thread
unblocking from the EnterCS call
-------------------------------------------------------------------
| Max Time = 151.560 us
| Min Time = 133.120 us
| Avg Time = 138.685 us
===================================================================
===================================================================
| 0.01 | IP = NO | CS = NO | 1 IPS
-------------------------------------------------------------------
EnterCriticalSection traditional (blocking) without priority inversion
:Time from a higher priority thread calling EnterCS (blocked) to a lower
priority runnable thread getting run
-------------------------------------------------------------------
| Max Time = 163.610 us
| Min Time = 149.310 us
| Avg Time = 155.230 us
===================================================================
===================================================================
| 0.02 | IP = NO | CS = NO | 1000 IPS
-------------------------------------------------------------------
EnterCriticalSection fastpath (uncontested)
-------------------------------------------------------------------
| Subtracting out base result of -18242 ticks
| Max Time = 0.000 us
| Min Time = 0.000 us
| Avg Time = 0.000 us
===================================================================
===================================================================
| 0.03 | IP = NO | CS = NO | 1000 IPS
-------------------------------------------------------------------
LeaveCriticalSection fastpath (uncontested)
-------------------------------------------------------------------
| Subtracting out base result of -18322 ticks
| Max Time = 0.000 us
| Min Time = 0.000 us
| Avg Time = 0.000 us
===================================================================
===================================================================
| 0.00 | IP = NO | CS = YES | 1 IPS
: -------------------------------------------------------------------
EnterCriticalSection traditional (blocking) with priority inversion :Time
from a lower priority thread calling LeaveCS to a higher priority thread
unblocking from the EnterCS call
-------------------------------------------------------------------
| Max Time = 1796.270 us
| Min Time = 175.940 us
| Avg Time = 1388.557 us
===================================================================
===================================================================
| 0.01 | IP = NO | CS = YES | 1 IPS
-------------------------------------------------------------------
EnterCriticalSection traditional (blocking) without priority inversion
:Time from a higher priority thread calling EnterCS (blocked) to a lower
priority runnable thread getting run
-------------------------------------------------------------------
| Max Time = 191.540 us
| Min Time = 188.600 us
| Avg Time = 189.397 us
===================================================================
===================================================================
| 1.00 | IP = NO | CS = NO | 1 IPS
-------------------------------------------------------------------
Semaphore signalling intra-process :Time from a lower priority thread
calling ReleaseSemaphore to a higher priority
thread in the same process unblocking from a WaitForSingleObject call
-------------------------------------------------------------------
| Max Time = 127.340 us
| Min Time = 115.590 us
| Avg Time = 120.277 us
===================================================================
******************************************************************************

Re: osbench, windows CE 4.1 by dcsmrg

dcsmrg
Sun May 30 21:31:35 CDT 2004

After struggling a bit, I figured out how to get around my problems. But I
would very much appreciate if some one can confirm the correctness of the
dwtime calculation step in OB_PrintResults routine.
dwTime = (DWORD) (g_pBuffer->liPerf2[i].QuadPart -
g_pBuffer->liPerf1i].QuadPart);

This value can be negative (if QueryPerformance counter returns the number
of counter ticks till that moment). So I think the above line of code need
to take the sign into consideration. Or Am I totally wrong?

Since I need to get the benchmarking results of WinCE running on my
platform, I would be very grateful if any of you can clarify my doubt.

Thank you,
With best regards,
Mariam.



Mariam wrote:

> Hi all,

> I am using windows CE 4.1, and I ported the OS to an ARM9 based platform.
> I am facing a problem with the OSBENCH program. The program, gives me
> really crazy results. The results I got for the first test is copied below-

>
******************************************************************************
> | 0.00 | IP = NO | CS = NO | 1 IPS
> -------------------------------------------------------------------
> EnterCriticalSection traditional (blocking) with priority inversion : Time
> from a lower priority thread calling LeaveCS to a higher priority thread
> unblocking from the EnterCS call

> | Max Time = 4294823.666 us
> | Min Time = 1833.470 us
> | Avg Time = 111.586 us
>
******************************************************************************

> As I understand, the problem is caused by OB_PrintResults routine in
> osbench.c The line which causes the trouble is the 'dwtime' calculation
> line.
> dwTime = (DWORD) (g_pBuffer->liPerf2[i].QuadPart -
> g_pBuffer->liPerf1[i].QuadPart);
> When the value computed is negative, (In the first test, the second value
> is always bigger than the first) it results in a typecast problem (DWORD
> is unsigned), and I get a big unsigned value as the result. Just to
> confirm that my basic routines are correct- the QueryperformanceCounter
> returns the no. of clockticks till the moment it is called, and
> QueryPerformanceFrequency returns the frequency of counter clock (which in
> my case is my Timer).

> So how can I get rid of this problem? I tried copying the entire stuff to
> my platform directory and rebuilding it. It works, but blocks at the first
> inter-process test (It works till Event-intra process. The next test is
> Event-inter process, and it blocks there. I tried swapping the tests and
> confirmed that blocking occurs at the inter-process tests). I have never
> modified any static libraries which is included by the build system. How
> can I modify the OSBENCH program? Or Am I in a completely wrong track.
> Please advice.

> Thank you,
> Mariam.

> PS: Attached below is my new results. If any of you have run it on an ARM
> platform, please let me know whether they are good enough for an ARM 922
> processor running at 200MHz?
>
******************************************************************************
> SYSTEM BUILD INFO

> PLATFORM = PROCESSOR = ARMV4I
> CONFIG = TEST2
> RET/DEBUG = debug
> BUILD DATE = May 28 2004 @ (15:58:21)
> -------------------------------------------------------------------
> PERFORMANCE COUNTER INFO

> Counter Frequency = 100000000 Hz
> Counter tick interval = 10 ns
> QPC() call overhead = 6.280 usecs
> -------------------------------------------------------------------
> RUNTIME OPTIONS

> NUmber of samples per test = 5
> ===================================================================
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


> ===================================================================
> | 0.00 | IP = NO | CS = NO | 1 IPS
> -------------------------------------------------------------------
> EnterCriticalSection traditional (blocking) with priority inversion :Time
> from a lower priority thread calling LeaveCS to a higher priority thread
> unblocking from the EnterCS call
> -------------------------------------------------------------------
> | Max Time = 151.560 us
> | Min Time = 133.120 us
> | Avg Time = 138.685 us
> ===================================================================
> ===================================================================
> | 0.01 | IP = NO | CS = NO | 1 IPS
> -------------------------------------------------------------------
> EnterCriticalSection traditional (blocking) without priority inversion
> :Time from a higher priority thread calling EnterCS (blocked) to a lower
> priority runnable thread getting run
> -------------------------------------------------------------------
> | Max Time = 163.610 us
> | Min Time = 149.310 us
> | Avg Time = 155.230 us
> ===================================================================
> ===================================================================
> | 0.02 | IP = NO | CS = NO | 1000 IPS
> -------------------------------------------------------------------
> EnterCriticalSection fastpath (uncontested)
> -------------------------------------------------------------------
> | Subtracting out base result of -18242 ticks
> | Max Time = 0.000 us
> | Min Time = 0.000 us
> | Avg Time = 0.000 us
> ===================================================================
> ===================================================================
> | 0.03 | IP = NO | CS = NO | 1000 IPS
> -------------------------------------------------------------------
> LeaveCriticalSection fastpath (uncontested)
> -------------------------------------------------------------------
> | Subtracting out base result of -18322 ticks
> | Max Time = 0.000 us
> | Min Time = 0.000 us
> | Avg Time = 0.000 us
> ===================================================================
> ===================================================================
> | 0.00 | IP = NO | CS = YES | 1 IPS
> : -------------------------------------------------------------------
> EnterCriticalSection traditional (blocking) with priority inversion :Time
> from a lower priority thread calling LeaveCS to a higher priority thread
> unblocking from the EnterCS call
> -------------------------------------------------------------------
> | Max Time = 1796.270 us
> | Min Time = 175.940 us
> | Avg Time = 1388.557 us
> ===================================================================
> ===================================================================
> | 0.01 | IP = NO | CS = YES | 1 IPS
> -------------------------------------------------------------------
> EnterCriticalSection traditional (blocking) without priority inversion
> :Time from a higher priority thread calling EnterCS (blocked) to a lower
> priority runnable thread getting run
> -------------------------------------------------------------------
> | Max Time = 191.540 us
> | Min Time = 188.600 us
> | Avg Time = 189.397 us
> ===================================================================
> ===================================================================
> | 1.00 | IP = NO | CS = NO | 1 IPS
> -------------------------------------------------------------------
> Semaphore signalling intra-process :Time from a lower priority thread
> calling ReleaseSemaphore to a higher priority
> thread in the same process unblocking from a WaitForSingleObject call
> -------------------------------------------------------------------
> | Max Time = 127.340 us
> | Min Time = 115.590 us
> | Avg Time = 120.277 us
> ===================================================================
>
******************************************************************************



Re: osbench, windows CE 4.1 by Qinghai

Qinghai
Mon May 31 21:06:17 CDT 2004

Which OSBENCH program are you using ?? Can you share with me? thanks.

"Mariam" <anonymous@discussions.microsoft.com> wrote in message
news:emswOzhREHA.808@tk2msftngp13.phx.gbl...
> Hi all,
>
> I am using windows CE 4.1, and I ported the OS to an ARM9 based platform.
> I am facing a problem with the OSBENCH program. The program, gives me
> really crazy results. The results I got for the first test is copied
below-
>
>
****************************************************************************
**
> | 0.00 | IP = NO | CS = NO | 1 IPS
> -------------------------------------------------------------------
> EnterCriticalSection traditional (blocking) with priority inversion : Time
> from a lower priority thread calling LeaveCS to a higher priority thread
> unblocking from the EnterCS call
>
> | Max Time = 4294823.666 us
> | Min Time = 1833.470 us
> | Avg Time = 111.586 us
>
****************************************************************************
**
>
> As I understand, the problem is caused by OB_PrintResults routine in
> osbench.c The line which causes the trouble is the 'dwtime' calculation
> line.
> dwTime = (DWORD) (g_pBuffer->liPerf2[i].QuadPart -
> g_pBuffer->liPerf1[i].QuadPart);
> When the value computed is negative, (In the first test, the second value
> is always bigger than the first) it results in a typecast problem (DWORD
> is unsigned), and I get a big unsigned value as the result. Just to
> confirm that my basic routines are correct- the QueryperformanceCounter
> returns the no. of clockticks till the moment it is called, and
> QueryPerformanceFrequency returns the frequency of counter clock (which in
> my case is my Timer).
>
> So how can I get rid of this problem? I tried copying the entire stuff to
> my platform directory and rebuilding it. It works, but blocks at the first
> inter-process test (It works till Event-intra process. The next test is
> Event-inter process, and it blocks there. I tried swapping the tests and
> confirmed that blocking occurs at the inter-process tests). I have never
> modified any static libraries which is included by the build system. How
> can I modify the OSBENCH program? Or Am I in a completely wrong track.
> Please advice.
>
> Thank you,
> Mariam.
>
> PS: Attached below is my new results. If any of you have run it on an ARM
> platform, please let me know whether they are good enough for an ARM 922
> processor running at 200MHz?
>
****************************************************************************
**
> SYSTEM BUILD INFO
>
> PLATFORM = PROCESSOR = ARMV4I
> CONFIG = TEST2
> RET/DEBUG = debug
> BUILD DATE = May 28 2004 @ (15:58:21)
> -------------------------------------------------------------------
> PERFORMANCE COUNTER INFO
>
> Counter Frequency = 100000000 Hz
> Counter tick interval = 10 ns
> QPC() call overhead = 6.280 usecs
> -------------------------------------------------------------------
> RUNTIME OPTIONS
>
> NUmber of samples per test = 5
> ===================================================================
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
>
> ===================================================================
> | 0.00 | IP = NO | CS = NO | 1 IPS
> -------------------------------------------------------------------
> EnterCriticalSection traditional (blocking) with priority inversion :Time
> from a lower priority thread calling LeaveCS to a higher priority thread
> unblocking from the EnterCS call
> -------------------------------------------------------------------
> | Max Time = 151.560 us
> | Min Time = 133.120 us
> | Avg Time = 138.685 us
> ===================================================================
> ===================================================================
> | 0.01 | IP = NO | CS = NO | 1 IPS
> -------------------------------------------------------------------
> EnterCriticalSection traditional (blocking) without priority inversion
> :Time from a higher priority thread calling EnterCS (blocked) to a lower
> priority runnable thread getting run
> -------------------------------------------------------------------
> | Max Time = 163.610 us
> | Min Time = 149.310 us
> | Avg Time = 155.230 us
> ===================================================================
> ===================================================================
> | 0.02 | IP = NO | CS = NO | 1000 IPS
> -------------------------------------------------------------------
> EnterCriticalSection fastpath (uncontested)
> -------------------------------------------------------------------
> | Subtracting out base result of -18242 ticks
> | Max Time = 0.000 us
> | Min Time = 0.000 us
> | Avg Time = 0.000 us
> ===================================================================
> ===================================================================
> | 0.03 | IP = NO | CS = NO | 1000 IPS
> -------------------------------------------------------------------
> LeaveCriticalSection fastpath (uncontested)
> -------------------------------------------------------------------
> | Subtracting out base result of -18322 ticks
> | Max Time = 0.000 us
> | Min Time = 0.000 us
> | Avg Time = 0.000 us
> ===================================================================
> ===================================================================
> | 0.00 | IP = NO | CS = YES | 1 IPS
> : -------------------------------------------------------------------
> EnterCriticalSection traditional (blocking) with priority inversion :Time
> from a lower priority thread calling LeaveCS to a higher priority thread
> unblocking from the EnterCS call
> -------------------------------------------------------------------
> | Max Time = 1796.270 us
> | Min Time = 175.940 us
> | Avg Time = 1388.557 us
> ===================================================================
> ===================================================================
> | 0.01 | IP = NO | CS = YES | 1 IPS
> -------------------------------------------------------------------
> EnterCriticalSection traditional (blocking) without priority inversion
> :Time from a higher priority thread calling EnterCS (blocked) to a lower
> priority runnable thread getting run
> -------------------------------------------------------------------
> | Max Time = 191.540 us
> | Min Time = 188.600 us
> | Avg Time = 189.397 us
> ===================================================================
> ===================================================================
> | 1.00 | IP = NO | CS = NO | 1 IPS
> -------------------------------------------------------------------
> Semaphore signalling intra-process :Time from a lower priority thread
> calling ReleaseSemaphore to a higher priority
> thread in the same process unblocking from a WaitForSingleObject call
> -------------------------------------------------------------------
> | Max Time = 127.340 us
> | Min Time = 115.590 us
> | Avg Time = 120.277 us
> ===================================================================
>
****************************************************************************
**
>
>
>
>



Re: osbench, windows CE 4.1 by anonymous

anonymous
Mon May 31 23:23:55 CDT 2004

I am using the OSBENCH program which comes along with the Kernel sources.
The complete source is in WINCE410\PUBLIC\COMMON\OAK\UTILS\OSBENCH. Hope
this helps.
Mariam.


Qinghai Wang wrote:

> Which OSBENCH program are you using ?? Can you share with me? thanks.

> "Mariam" <anonymous@discussions.microsoft.com> wrote in message
> news:emswOzhREHA.808@tk2msftngp13.phx.gbl...
>> Hi all,
>>
>> I am using windows CE 4.1, and I ported the OS to an ARM9 based platform.
>> I am facing a problem with the OSBENCH program. The program, gives me
>> really crazy results. The results I got for the first test is copied
&g