Don
Mon Feb 11 13:33:54 CST 2008
Up the priority and make it a real time process? Seriously, you are looking
at a huge amount of work to move this to the kernel, let alone make it fast.
And that does not count having a huge support problem with the undocumented
calls, or else rewriting your client to use something other than named
pipes.
--
Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Website:
http://www.windrvr.com
Blog:
http://msmvps.com/blogs/WinDrvr
Remove StopSpam to reply
"eric" <eselk@surfbest.net> wrote in message
news:cbd15df5-782e-4ecf-a974-80365e673150@h11g2000prf.googlegroups.com...
On Feb 8, 4:15 pm, "Don Burn" <b...@stopspam.windrvr.com> wrote:
> What do you think you would accomplish by moving it to the kernel? None of
> the named pipe functions are documented for the kernel (and the internet
> doc's of the undocumented calls have some big holes). Not only that but
> network support can be a pain in the kernel so you are making things
> imensely harder, and I can't see a reason behind this.
>
> --
> Don Burn (MVP, Windows DDK)
I'm hoping my code will run faster without the transitions from user
to kernel mode. I currently have a user mode process that pretty much
memics the network redirector (the device driver that handles file
sharing). Being at such a low level, it needs to process 1000s of
requests per second (like 1000 ReadFile requests). I know the
transition between the modes should be very minimal, but I've
profilied my current code and cannot see any other way to improve it.
I'm using I/O Completetion Routines at the server, I'm using
TransactNamedPipe on the client, and I've pretty much eliminated all
overhead in my code, to the point that both sides spend 99% of their
time waiting on pipe i/o... and using netmon I can tell that my
packets are the exact same size and number as going through the
network redirector. I've got my test code setup to easily switch the
client between using my server and direct file i/o to the shared
drive, and the direct i/o always wins (10% faster in most cases, but
on slower CPUs or when they are busy doing other things, then up to
400% faster). So all I can figure is the transition is slower *OR*
the "system" process (that the network redirector runs under) has a
higher priority than all others -- either way, I'd need my code to run
in that process to make it faster.