From: CodeDoctor on
We have a large compute and I/O intense application (image processing) that
we run on Win 2k Server. Recently we moved to Win 2003 server and saw a
dramatic performance loss, that we cannot explain. We ran tests on the same
HW platform with both OS and saw factors of 15 - 20 for memory intensive
operations and even more for I/O-bound parts of the application.

Did anyone have similar findings. What can we do about it?
From: Carl Daniel [VC++ MVP] on
CodeDoctor wrote:
> We have a large compute and I/O intense application (image
> processing) that we run on Win 2k Server. Recently we moved to Win
> 2003 server and saw a dramatic performance loss, that we cannot
> explain. We ran tests on the same HW platform with both OS and saw
> factors of 15 - 20 for memory intensive operations and even more for
> I/O-bound parts of the application.
>
> Did anyone have similar findings. What can we do about it?

Run a profiler and measure where the differences appear. Make sure that
you're measuring something real, not the performance of an artificial
"benchmark".

Your experiences are certainly not typical. If anything, I've found 2003 to
be more responsive (etc) than 2000, not 15-20 times less responsive.

-cd


From: CodeDoctor on
Hi Daniel,
I ran the profiler (VC++ 6.0) on both platforms on the bare OS, i.e. no
other application running, and it looks like this for the three most time
consuming functions. The server is a HP DL380 G5 with on Dualcore CPU (2x
2.66 GHz) and 4GB RAM:

Windows 2000 Server
All times in milliseconds
3305.405 67.5 50 _L_LoadBitmapMemory(a)32 (ltfil14n.dll)
1149.349 23.5 50 ConvertImageBuffer (importworker.obj)
194.977 4 51 CFileTransfer::Download(char const *)

Windows 2003 Server
47341.072 62.4 50 _L_LoadBitmapMemory(a)32 (ltfil14n.dll)
22571.548 29.7 50 ConvertImageBuffer(importworker.obj)
5739.909 7.6 51 CFileTransfer::Download(char const *)

The Download-function reads an entire jpeg image file into a memory buffer
using _open, _read, _close functions. It reads in chunks of 1 MB.
L_LoadBitmapMemory uncompresses the jpeg stream from this memory buffer.
Convert copies from the uncompressed image buffer, that is pixel interleaved,
i.e. RGBRGB ..., into a plane interleaved image.

The percentages of the functions (2nd number) are similar in both cases but
you see the factors between the exec times.

Any idea?

Thanks much,
Matthias

"Carl Daniel [VC++ MVP]" wrote:

> CodeDoctor wrote:
> > We have a large compute and I/O intense application (image
> > processing) that we run on Win 2k Server. Recently we moved to Win
> > 2003 server and saw a dramatic performance loss, that we cannot
> > explain. We ran tests on the same HW platform with both OS and saw
> > factors of 15 - 20 for memory intensive operations and even more for
> > I/O-bound parts of the application.
> >
> > Did anyone have similar findings. What can we do about it?
>
> Run a profiler and measure where the differences appear. Make sure that
> you're measuring something real, not the performance of an artificial
> "benchmark".
>
> Your experiences are certainly not typical. If anything, I've found 2003 to
> be more responsive (etc) than 2000, not 15-20 times less responsive.
>
> -cd
>
>
>
From: Slava M. Usov on
"CodeDoctor" <CodeDoctor(a)discussions.microsoft.com> wrote in message
news:5B355583-3D5D-4D58-87C1-7261A9B8B93D(a)microsoft.com...

[...]

> The Download-function reads an entire jpeg image file into a memory buffer
> using _open, _read, _close functions. It reads in chunks of 1 MB.
> L_LoadBitmapMemory uncompresses the jpeg stream from this memory buffer.
> Convert copies from the uncompressed image buffer, that is pixel
> interleaved, i.e. RGBRGB ..., into a plane interleaved image.

Is it the same file all the time or different files? How big is the file or
files?

It could be that the two installations have different memory/cache policies:
one is optimised for cache, another for application working set, and your
application can be very sensitive to that.

S


From: CodeDoctor on
The files are all different in the case of the test run that generated the
data I read 50 different image files. Where do I find the policy settings you
mentioned?

M.

"Slava M. Usov" wrote:

> "CodeDoctor" <CodeDoctor(a)discussions.microsoft.com> wrote in message
> news:5B355583-3D5D-4D58-87C1-7261A9B8B93D(a)microsoft.com...
>
> [...]
>
> > The Download-function reads an entire jpeg image file into a memory buffer
> > using _open, _read, _close functions. It reads in chunks of 1 MB.
> > L_LoadBitmapMemory uncompresses the jpeg stream from this memory buffer.
> > Convert copies from the uncompressed image buffer, that is pixel
> > interleaved, i.e. RGBRGB ..., into a plane interleaved image.
>
> Is it the same file all the time or different files? How big is the file or
> files?
>
> It could be that the two installations have different memory/cache policies:
> one is optimised for cache, another for application working set, and your
> application can be very sensitive to that.
>
> S
>
>
>