>How can we get the same performance i userspace? For me it is the
>processor/OS schedule that gives the limit for that, and in kernel we
>get
>the hardware as the limit.

there are two things done by the sequencer:

     a) routing/multiplexing
        
        this is mostly a matter of code design and memory management,
        and can be handled just as well in user space as in the
        kernel, perhaps even better (other libs can be used, for
        instance). there is almost nothing i can think of relating to
        this work that requires or even benefits from a kernel side
        location. 

     b) scheduling
     
        the kernel has no special access to system hardware for timing
        that is not available to a root-enabled or CAP_RESOURCE-enabled 
        task. the default system timer that the vast majority of
        sequencer users will use is of much worse resolution than some
        of the alternatives such as the RTC and a PCM audio
        clock.  

        however, both of these sources (as well as the default system
        timer) are available to user space processes. there is a
        small overhead involved, on the order of 2-10 microseconds, if
        that. 

        Since the sequencer would have to run with these permissions
        to be useful, as a user space process it has the same
        scheduling capabilities as it does in the kernel (for our
        purposes; obviously, it can't schedule processes in the same
        way as the OS task scheduler, but then for that matter,
        neither can the existing kernel sequencer).

        the processor has no part to play in scheduling except for
        executing code. fast processors don't schedule faster other
        than in the sense that they execute the scheduling code
        (whether its in user space or not) more or less quickly.
        
By putting the sequencer in user space we:

  a) remove a large and necessarily complex piece of code from the
       kernel, nearly always a good thing
  b) allow it to be developed more flexibly (code errors don't
       cause system panics or hangs)
  c) can make it more modular
  d) can port it to non-Linux systems more easily
  e) can extend it to work within or alongside other designs more easily

--p

_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to