Why don't you rename the class to zfsiosched If the class is tailored to support zfs only or kerneliosched if the class is tailored to support kernel io only?
In my eyes its is a clear design fault to restrict such a class to kernel threads only. You are locking out user land daemons which have similar duties as the zfs threads you describe in this case. On Wed, Nov 11, 2009 at 7:59 PM, Jonathan Adams <jonathan.adams at sun.com> wrote: > 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 \ |-..-'` >> /\/\ /\/\ >> `--` `--` > -- , _ _ , { \/`o;====- Olga Kryzhanovska -====;o`\/ } .----'-/`-/ olga.kryzhanovska at gmail.com \-`\-'----. `'-..-| / Solaris/BSD//C/C++ programmer \ |-..-'` /\/\ /\/\ `--` `--`