On Wed, Nov 11, 2009 at 06:57:20PM +0100, ????? ???????????? wrote: > 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.
Because it is modeled on the SYS class, which is also not available to user threads. Supporting user threads involves a bunch of additional work which isn't relevant to the problem at hand. Cheers, - jonathan > 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 \ |-..-'` > /\/\ /\/\ > `--` `--`