Re: which kind of driver to design for AoE protocol?



KOOLER wrote:
You have to process as many requests at raised interrupt level as you
can. If you'd queue SRBs to PASSIVE_LEVEL worker in some way just b/c
it's easier to implement such a model - it would be a engineering
failure... You would not get adequate performance if you'd exploit
context switches, memory copy operations etc etc etc.

Obviously there are wrong ways of doing things like memory copies,
context switches, and etc's. However, if you are able to efficiently
distribute processing across different threads of execution in an
overlapped fashion, then no matter what you are doing you stand to
enhance performance. For instance, having worker threads running at the
same time on different cpu cores could outrun a simplistic design
trying to process each request in a linear, sequential mode at raised
IRQL. In the past, drivers have been very concerned about overlapping
I/O operations. Now it is more important than ever to optimize
overlapping of CPU operations to really make things fly. Instead of
running things through an assembly line of 5 sequential steps, you do
all 5 steps at the same time to the greatest possible extent. Alas,
Intel will have 100 cores per cpu within 10 years but just 2 can make a
great performance advantage if you use them right.

Anyway, I guess the OP has been scared away by now. He is led to
believe it will take years and there are failures waiting at every
turn. It's kind of true I guess, but meanwhile about everyone
commenting knows they could get a solid driver up and running within a
few weeks.

.



Relevant Pages

  • Re: volatile char
    ... > when the main thread simply wants all worker threads to stop. ... It exploits a particular feature of x86 CPU family - strong cache ... Many modern CPUs, some of which can run Windows, exhibit weak cache ... even after one CPU writes to a memory ...
    (microsoft.public.vc.language)
  • [PATCH 19/19] workqueue: implement concurrency managed workqueue
    ... Currently each workqueue has its own dedicated worker pool. ... There is single global cpu workqueue (gcwq) for each cpu which serves ...
    (Linux-Kernel)
  • Re: Webserver with 2 processors
    ... Webgardening must be enabled if cpuMask is to be used. ... If you leave it at the default setting, only one CPU will be used. ... > The cpuMask attribute is ignored and only one worker process will run. ...
    (microsoft.public.dotnet.framework.aspnet)
  • Re: CPU scheduler question/problem
    ... place both tasks on the same cpu -- but will eventually pull them apart ... how long does a worker run for each received packet? ... if the data is cache affine for the issuing cpu, ...
    (Linux-Kernel)