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 \ |-..-'` /\/\ /\/\ `--` `--`