Performance problem in USB storage, Windows 98

Hi,

I am struggling with a performance problem with a USB storage driver upon
Windows 98. The driver solution consists of a port driver (to fit in the
windows storage architecture) and a USB client driver (for sending URBs down
to bus driver).

The problem scenario is like this. I have an application that *repeatedly*
does the following:

  1. Copy a large file from hard disk to removable media
  2. Compare the source and destination files
  3. Delete the destination file

The file size is chosen to be almost the same as that of removable media. To
dilute any caching effect, another file of size more than the system RAM is
read in between the steps.

Observation: Upon running the application for a long time (5 hours), system
performance degrades significantly. (eg: mouse not responding). At this time
CPU load is at 100%, but there is enough memory left unallocated. Once we
stop the application, system regains normalcy. (mouse responding well, CPU
load normal)

I am totally in dark about where to start debugging this problem! If anybody
have encountered similar problems and/or can suggest any clue, please help…

TIA,
Unni Sankar
www.nesttech.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Pool fragmentation?
Heap fragmentation?

Max

----- Original Message -----
From: “UNNI SANKAR”
To: “NT Developers Interest List”
Sent: Thursday, November 22, 2001 1:09 PM
Subject: [ntdev] Performance problem in USB storage, Windows 98

> Hi,
>
> I am struggling with a performance problem with a USB storage driver upon
> Windows 98. The driver solution consists of a port driver (to fit in the
> windows storage architecture) and a USB client driver (for sending URBs down
> to bus driver).
>
> The problem scenario is like this. I have an application that repeatedly
> does the following:
> 1. Copy a large file from hard disk to removable media
> 2. Compare the source and destination files
> 3. Delete the destination file
>
> The file size is chosen to be almost the same as that of removable media. To
> dilute any caching effect, another file of size more than the system RAM is
> read in between the steps.
>
> Observation: Upon running the application for a long time (5 hours), system
> performance degrades significantly. (eg: mouse not responding). At this time
> CPU load is at 100%, but there is enough memory left unallocated. Once we
> stop the application, system regains normalcy. (mouse responding well, CPU
> load normal)
>
> I am totally in dark about where to start debugging this problem! If anybody
> have encountered similar problems and/or can suggest any clue, please help…
>
> TIA,
> Unni Sankar
> www.nesttech.com
>
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Max,

Thank you very much, for the clue. But I’m still clue-less with my bug!

Some funda doubts:

  1. Is it possible for the Windows 98 Non-Paged-Pool to get fragmented so
    fast (witihin 5 hours)? I thought ExAllocatePool employs a more robust
    algorithm.
  2. How can I ascertain whether it is a fragmentation problem ? (any
    tool/technique)
  3. Can these symptoms explained by my driver running at a higher IRQL than
    is needed most of the time? (so that GDI starves for CPU time)

More on my driver:
The USB function driver is built upon Numega DriverWorks classes. For each
request, URBs are allocated afresh (using operator new) in nonpaged pool and
send down to the underlying bus driver. The allocated memory is dutyfully
freed in callbacks.

One of the solutions (?) I consider is to allocate a chunk of non-paged pool
for my driver, and have the driver manage its own memory. Do you think it
helps?

Regards,
Unni Sankar
www.nesttech.com

-----Original Message-----
From: Maxim S. Shatskih [mailto:xxxxx@storagecraft.com]
Sent: Thursday, November 22, 2001 5:25 PM
To: NT Developers Interest List
Subject: [ntdev] Re: Performance problem in USB storage, Windows 98

Pool fragmentation?
Heap fragmentation?

Max

----- Original Message -----
From: “UNNI SANKAR”
To: “NT Developers Interest List”
Sent: Thursday, November 22, 2001 1:09 PM
Subject: [ntdev] Performance problem in USB storage, Windows 98

> Hi,
>
> I am struggling with a performance problem with a USB storage driver upon
> Windows 98. The driver solution consists of a port driver (to fit in the
> windows storage architecture) and a USB client driver (for sending URBs
down
> to bus driver).
>
> The problem scenario is like this. I have an application that repeatedly
> does the following:
> 1. Copy a large file from hard disk to removable media
> 2. Compare the source and destination files
> 3. Delete the destination file
>
> The file size is chosen to be almost the same as that of removable media.
To
> dilute any caching effect, another file of size more than the system RAM
is
> read in between the steps.
>
> Observation: Upon running the application for a long time (5 hours),
system
> performance degrades significantly. (eg: mouse not responding). At this
time
> CPU load is at 100%, but there is enough memory left unallocated. Once we
> stop the application, system regains normalcy. (mouse responding well, CPU
> load normal)
>
> I am totally in dark about where to start debugging this problem! If
anybody
> have encountered similar problems and/or can suggest any clue, please
help…
>
> TIA,
> Unni Sankar
> www.nesttech.com
>
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>


You are currently subscribed to ntdev as: xxxxx@nestec.net
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com