Why should this class only available for kernel threads? There are
daemons ported from micro kernel platforms which act like a kernel
daemon but run in user land and could benefit from such a scheduler
class.

On Wed, Nov 11, 2009 at 1:00 AM, Darren J Moffat
<darrenm at sac.sfbay.sun.com> wrote:
> I'm submitting this as closed approved automatic, it has already been
> reviewed by core ZFS and kernel scheduling teams.   Given the taxonomy
> of the new interfaces I believe this is sufficient review and closed
> approved automatic is sufficient.  If any member disagrees then I'll
> set a fast-track timer.
>
> Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
> This information is Copyright 2009 Sun Microsystems
> 1. Introduction
>    1.1. Project/Component Working Name:
>         System Duty Cycle Scheduling Class and ZFS IO Observability
>    1.2. Name of Document Author/Supplier:
>         Author:  Jonathan Adams
>    1.3  Date of This Document:
>        10 November, 2009
> 4. Technical Description
>
> This case covers two user-visible changes associated with the bug:
>
> 6806882 need a less brutal I/O scheduler
>
> The changes are:
>
>        1. A new kernel-thread-only scheduling class, SDC
>           (System Duty Cycle) is introduced.  Since the
>           list of scheduling classes is user-visible through
>           dispadmin(1M) and priocntl(1), we feel an ARC case
>           is appropriate.
>
>           The new scheduling class is only used by kernel threads,
>           so the only manpage changes are a new SDC(7) page covering
>           the existence of the new loadable module, and an update
>           to the discussion of the SYS class in priocntl(2).
>
>           A new function "sysdc_thread_enter()", puts a kernel thread
>           into SDC.
>
>        2. In order to improve the observability of ZFS IO processing,
>           we introduce a new system process per-zpool, with a
>           u_comm and u_psargs of zpool-<poolname> (i.e. zpool-foo).
>           The LWPs in the process are kernel threads associated
>           with IO processing.  Since these threads have LWPs, they
>           get microstate accounting data.  Thus, CPU usage associated
>           with IO processing can be observed using prstat(1M) and ps(1).
>
>           This process will always be in the global zone, even if
>           the pool was imported into a local zone.
>
> These changes, while user-visible, are essentially implementation
> details, and are not committed interfaces.  We've tried to make this
> clear in the manpage changes.
>
>
> Interface Table
> ---------------
>
>        Interface                               Stability
>        --------------------------------------- -----------------
>        SDC module and scheduling class         Consolidation Private
>        sysdc_thread_enter()                    Consolidation Private
>        zpool-<poolname> process                Volatile
>
> We seek Micro/Patch binding for these interfaces.
>
> See Also
> --------
>
> 6806882 need a less brutal I/O scheduler
>
>
> Man Page Diffs
> --------------
>
> SDC(7)
> +Device and Network Interfaces                                  SDC(7)
> +
> +
> +NAME
> +     SDC - System Duty Cycle scheduling class
> +
> +DESCRIPTION
> +     The System Duty Cycle (SDC) scheduling class is used for some
> +     CPU-intensive kernel thread workloads.  Like the SYS class,
> +     it cannot be used for user processes.
> +
> +ATTRIBUTES
> +     See attributes(5) for descriptions of the  following  attri-
> +     butes:
> +     ____________________________________________________________
> +    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
> +    |_____________________________|_____________________________|
> +
> +SEE ALSO
> +     attributes(5)
> +
>
> priocntl(2)
> ...
>     that  class  and/or  when  setting class-specific scheduling
>     parameters.
>
>     Two special scheduling classes, SYS and SDC, exist for the purpose of     
> |
>     scheduling the execution of certain special system processes
>     (such as the swapper process). It is not possible to change
>     the class of any LWP to SYS or SDC. In addition, any processes in         
> |
>     the SYS or SDC classes that are included in a specified set of            
> |
>     processes are disregarded by priocntl(). For example, an
>     idtype of P_UID and an id value of 0 would specify all
>     processes with a user ID of 0 except processes in the SYS and             
> |
>     SDC classes and (if changing the parameters using PC_SETPARMS or          
> |
>     PC_SETXPARMS) the init(1M) process.
> ...
>
> zpool(1M)
> --- zpool.1m.dist       Tue Nov  3 14:00:53 2009
> +++ zpool.1m    Tue Nov  3 14:49:47 2009
> @@ -947,6 +947,15 @@
>                       version number, and only up  to  the  most
>                       recent version supported by this software.
>
> +PROCESSES
> +     Each imported pool has an associated process, named
> +     zpool-poolname.  The threads in this process are the
> +     pool's IO processing threads, which handle the compression,
> +     checksumming, and other tasks for all IO associated with the
> +     pool.  This process exists to provides visibility into the CPU
> +     utilization of the system's storage pools.  The existence
> +     of this process is an unstable interface.
> +
>  EXAMPLES
>      Example 1 Creating        a RAID-Z Storage Pool
>
>
> 6. Resources and Schedule
>    6.4. Steering Committee requested information
>        6.4.1. Consolidation C-team Name:
>                On
>    6.5. ARC review type: Automatic
>    6.6. ARC Exposure: open
>
> _______________________________________________
> opensolaris-arc mailing list
> opensolaris-arc at opensolaris.org
>



-- 
      ,   _                                    _   ,
     { \/`o;====-    Olga Kryzhanovska   -====;o`\/ }
.----'-/`-/     olga.kryzhanovska at gmail.com   \-`\-'----.
 `'-..-| /     Solaris/BSD//C/C++ programmer   \ |-..-'`
      /\/\                                     /\/\
      `--`                                      `--`

Reply via email to