<chapter id="rmpool.task-1"><title>Creating and Administering Resource Pools
(Tasks)</title><highlights><para>This chapter describes how to set up and administer resource pools on
your system.</para><para>For background information about resource pools, see <olink targetptr="rmpool-1" remap="internal">Chapter&nbsp;12, Resource Pools (Overview)</olink>.</para>
</highlights><sect1><title>Administering Resource Pools (Task Map)</title><informaltable frame="all"><tgroup cols="3" colsep="1" rowsep="1"><colspec colwidth="33*"/><colspec colwidth="33*"/><colspec colwidth="33*"/><thead><row><entry><para>Task</para>
</entry><entry><para>Description</para>
</entry><entry><para>For Instructions</para>
</entry>
</row>
</thead><tbody><row><entry><para>Enable or disable resource pools.</para>
</entry><entry><para>Activate or disable resource pools on your system.</para>
</entry><entry><para><olink targetptr="rmpool.task-57" remap="internal">Enabling and Disabling the Pools Facility</olink></para>
</entry>
</row><row><entry><para>Enable or disable dynamic resource pools.</para>
</entry><entry><para>Activate or disable dynamic resource pools facilities on your system.</para>
</entry><entry><para><olink targetptr="rmpool.task-57" remap="internal">Enabling and Disabling the Pools Facility</olink></para>
</entry>
</row><row><entry><para>Create a static resource pools configuration.</para>
</entry><entry><para>Create a static configuration file that matches the current dynamic
configuration.  For more information, see <olink targetptr="rmpool-12" remap="internal">Resource
Pools Framework</olink>.</para>
</entry><entry><para><olink targetptr="rmpool.task-84" remap="internal">How to Create a Static Configuration</olink></para>
</entry>
</row><row><entry><para>Modify a resource pools configuration.</para>
</entry><entry><para>Revise a pools configuration on your system, for example, by creating
additional pools.</para>
</entry><entry><para><olink targetptr="rmpool.task-15" remap="internal">How to Modify a Configuration</olink></para>
</entry>
</row><row><entry><para>Associate a resource pool with a scheduling class.</para>
</entry><entry><para>Associate a pool with a scheduling class so that all processes bound
to the pool use the specified scheduler.</para>
</entry><entry><para><olink targetptr="rmpool.task-22" remap="internal">How to Associate a Pool With a Scheduling
Class</olink></para>
</entry>
</row><row><entry><para>Set configuration constraints and define configuration objectives.</para>
</entry><entry><para>Specify objectives for <command>poold</command> to consider when taking
corrective action. For more information on configuration objectives, see <olink targetptr="rmpool-73" remap="internal">poold Overview</olink>.</para>
</entry><entry><para><olink targetptr="gcvwh" remap="internal">How to Set Configuration Constraints</olink> and <olink targetptr="rmpool.task-108" remap="internal">How to Define Configuration Objectives</olink></para>
</entry>
</row><row><entry><para>Set the logging level.</para>
</entry><entry><para>Specify the level of logging information that <command>poold</command> generates.</para>
</entry><entry><para><olink targetptr="rmpool.task-117" remap="internal">How to Set the poold Logging Level</olink></para>
</entry>
</row><row><entry><para>Use a text file with the <command>poolcfg</command> command.</para>
</entry><entry><para>The <command>poolcfg</command> command can take input from a text file.</para>
</entry><entry><para><olink targetptr="rmpool.task-27" remap="internal">How to Use Command Files With poolcfg</olink></para>
</entry>
</row><row><entry><para>Transfer resources in the kernel.</para>
</entry><entry><para>Transfer resources in the kernel. For example, transfer resources with
specific IDs to a target set.</para>
</entry><entry><para><olink targetptr="rmpool.task-80" remap="internal">Transferring Resources</olink></para>
</entry>
</row><row><entry><para>Activate a pools configuration.</para>
</entry><entry><para>Activate the configuration in the default configuration file.</para>
</entry><entry><para><olink targetptr="rmpool.task-33" remap="internal">How to Activate a Pools Configuration</olink></para>
</entry>
</row><row><entry><para>Validate a pools configuration before you commit the configuration.</para>
</entry><entry><para>Validate a pools configuration to test what will happen when the validation
occurs.</para>
</entry><entry><para><olink targetptr="rmpool.task-66" remap="internal">How to Validate a Configuration Before
Committing the Configuration</olink></para>
</entry>
</row><row><entry><para>Remove a pools configuration from your system.</para>
</entry><entry><para>All associated resources, such as processor sets, are returned to their
default status.</para>
</entry><entry><para><olink targetptr="rmpool.task-37" remap="internal">How to Remove a Pools Configuration</olink></para>
</entry>
</row><row><entry><para>Bind processes to a pool.</para>
</entry><entry><para>Manually associate a running process on your system with a resource
pool.</para>
</entry><entry><para><olink targetptr="rmpool.task-42" remap="internal">How to Bind Processes to a Pool</olink></para>
</entry>
</row><row><entry><para>Bind tasks or projects to a pool.</para>
</entry><entry><para>Associate tasks or projects with a resource pool.</para>
</entry><entry><para><olink targetptr="rmpool.task-46" remap="internal">How to Bind Tasks or Projects to a
Pool</olink></para>
</entry>
</row><row><entry><para>Bind new processes to a resource pool.</para>
</entry><entry><para>To automatically bind new processes in a project to a given pool, add
an attribute to each entry in the <filename>project</filename> database.</para>
</entry><entry><para><olink targetptr="rmpool.task-50" remap="internal">How to Set the project.pool Attribute
for a Project</olink></para>
</entry>
</row><row><entry><para>Use <literal>project</literal> attributes to bind a process to a different
pool.</para>
</entry><entry><para>Modify the pool binding for new processes that are started.</para>
</entry><entry><para><olink targetptr="rmpool.task-51" remap="internal">How to Use project Attributes to Bind
a Process to a Different Pool</olink></para>
</entry>
</row><row><entry><para>Use the <command>poolstat</command> utility to produce reports.</para>
</entry><entry><para>Produce multiple reports at specifed intervals.</para>
</entry><entry><para><olink targetptr="rmpool.task-106" remap="internal">Producing Multiple Reports at Specific
Intervals</olink></para>
</entry>
</row><row><entry><para>Report resource set statistics.</para>
</entry><entry><para>Use the <command>poolstat</command> utility to report statistics for
a pset resource set.</para>
</entry><entry><para><olink targetptr="rmpool.task-107" remap="internal">Reporting Resource Set Statistics</olink></para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1><sect1 id="rmpool.task-57"><title>Enabling and Disabling the Pools Facility</title><para>You can enable and disable the resource pools and dynamic resource
pools services on your system by using the <command>svcadm</command> command
described in the <olink targetdoc="group-refman" targetptr="svcadm-1m" remap="external"><citerefentry><refentrytitle>svcadm</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man
page.</para><para>You can also use the <command>pooladm</command> command described in
the <olink targetdoc="group-refman" targetptr="pooladm-1m" remap="external"><citerefentry><refentrytitle>pooladm</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man
page to perform the following tasks:</para><itemizedlist><listitem><para>Enable the pools facility so that pools can be manipulated</para>
</listitem><listitem><para>Disable the pools facility so that pools cannot be manipulated</para>
</listitem>
</itemizedlist><note><para>When a system is upgraded, if the resource pools framework is
enabled and an <literal>/etc/pooladm.conf</literal> file exists, the pools
service is enabled and the configuration contained in the file is applied
to the system.</para>
</note><task id="gbvca"><title>How to Enable the Resource Pools Service Using <command>svcadm</command></title><procedure><step id="gbvdc"><para>Become superuser, or assume a role that includes the
Process Management profile.</para><para>The System Administrator role includes
the Process Management profile. For more information about roles, see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step><para>Enable the resource pools service.</para><screen># <userinput>svcadm enable system/pools:default</userinput></screen>
</step>
</procedure>
</task><task id="gbvbg"><title>How to Disable the Resource Pools Service Using <command>svcadm</command></title><procedure><step id="gbvbh"><para>Become superuser, or assume a role that includes the
Process Management profile.</para><para>The System Administrator role includes
the Process Management profile. For more information about roles, see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step><para>Disable the resource pools service.</para><screen># <userinput>svcadm disable system/pools:default</userinput></screen>
</step>
</procedure>
</task><task id="gbvdw"><title>How to Enable the Dynamic Resource Pools Service Using <command>svcadm</command></title><procedure><step id="gbvdd"><para>Become superuser, or assume a role that includes the
Service Management rights profile.</para><para>Roles contain authorizations
and privileged commands. For more information about roles, see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step><para>Enable the dynamic resource pools service.</para><screen># <userinput>svcadm enable system/pools/dynamic:default</userinput></screen>
</step>
</procedure><example id="gbvvh"><title>Dependency of the Dynamic Resource Pools Service on the Resource Pools
Service</title><para>This example shows that you must first enable resource pools if you
want to run DRP.</para><para>There is a dependency between resource pools and dynamic resource pools.
DRP is now a dependent service of resource pools. DRP can be independently
enabled and disabled apart from resource pools.</para><para>The following display shows that both resource pools and dynamic resource
pools are currently disabled:</para><screen># <userinput>svcs *pool*</userinput>
STATE          STIME    FMRI
disabled       10:32:26 svc:/system/pools/dynamic:default
disabled       10:32:26 svc:/system/pools:default</screen><para>Enable dynamic resource pools :</para><screen># <userinput>svcadm enable svc:/system/pools/dynamic:default</userinput>
# svcs -a | grep pool
disabled       10:39:00 svc:/system/pools:default
offline        10:39:12 svc:/system/pools/dynamic:default</screen><para>Note that the DRP service is still offline.</para><para>Use the <option>x</option> option of the <command>svcs</command> command
to determine why the DRP service is offline:</para><screen># <userinput>svcs -x *pool*</userinput>
svc:/system/pools:default (resource pools framework)
 State: disabled since Wed 25 Jan 2006 10:39:00 AM GMT
Reason: Disabled by an administrator.
   See: http://sun.com/msg/SMF-8000-05
   See: libpool(3LIB)
   See: pooladm(1M)
   See: poolbind(1M)
   See: poolcfg(1M)
   See: poolstat(1M)
   See: /var/svc/log/system-pools:default.log
Impact: 1 dependent service is not running.  (Use -v for list.)

svc:/system/pools/dynamic:default (dynamic resource pools)
 State: offline since Wed 25 Jan 2006 10:39:12 AM GMT
Reason: Service svc:/system/pools:default is disabled.
   See: http://sun.com/msg/SMF-8000-GE
   See: poold(1M)
   See: /var/svc/log/system-pools-dynamic:default.log
Impact: This service is not running.</screen><para>Enable the resource pools service so that the DRP service can run:</para><screen># <userinput>svcadm enable svc:/system/pools:default</userinput></screen><para>When the <command>svcs *pool*</command> command is used, the system
displays:</para><screen># <userinput>svcs *pool*</userinput>
STATE          STIME    FMRI
online         10:40:27 svc:/system/pools:default
online         10:40:27 svc:/system/pools/dynamic:default</screen>
</example><example id="gbvxa"><title>Effect on Dynamic Resource Pools When the Resource Pools Service Is
Disabled</title><para>If both services are online and you disable the resource pools service:</para><screen># <userinput>svcadm disable svc:/system/pools:default</userinput> </screen><para>When the <command>svcs *pool*</command> command is used, the system
displays:</para><screen># <userinput>svcs *pool*</userinput>
STATE          STIME    FMRI
disabled       10:41:05 svc:/system/pools:default
online         10:40:27 svc:/system/pools/dynamic:default
# <userinput>svcs *pool*</userinput>
STATE          STIME    FMRI
disabled       10:41:05 svc:/system/pools:default
online         10:40:27 svc:/system/pools/dynamic:default</screen><para>But eventually, the DRP service moves to <literal>offline</literal> because
the resource pools service has been disabled:</para><screen># <userinput>svcs *pool*</userinput>
STATE          STIME    FMRI
disabled       10:41:05 svc:/system/pools:default
offline        10:41:12 svc:/system/pools/dynamic:default</screen><para>Determine why the DRP service is offline:</para><screen># <userinput>svcs -x *pool*</userinput>
svc:/system/pools:default (resource pools framework)
 State: disabled since Wed 25 Jan 2006 10:41:05 AM GMT
Reason: Disabled by an administrator.
   See: http://sun.com/msg/SMF-8000-05
   See: libpool(3LIB)
   See: pooladm(1M)
   See: poolbind(1M)
   See: poolcfg(1M)
   See: poolstat(1M)
   See: /var/svc/log/system-pools:default.log
Impact: 1 dependent service is not running.  (Use -v for list.)

svc:/system/pools/dynamic:default (dynamic resource pools)
 State: offline since Wed 25 Jan 2006 10:41:12 AM GMT
Reason: Service svc:/system/pools:default is disabled.
   See: http://sun.com/msg/SMF-8000-GE
   See: poold(1M)
   See: /var/svc/log/system-pools-dynamic:default.log
Impact: This service is not running.</screen><para>Resource pools must be started for DRP to work. For example, resource
pools could be started by using the <command>pooladm</command> command with
the <option>e</option> option:</para><screen># <userinput>pooladm -e</userinput></screen><para>Then the <command>svcs *pool*</command> command displays:</para><screen># <userinput>svcs *pool*</userinput>
STATE          STIME    FMRI
online         10:42:23 svc:/system/pools:default
online         10:42:24 svc:/system/pools/dynamic:default</screen>
</example>
</task><task id="gbvda"><title>How to Disable the Dynamic Resource Pools Service
Using <command>svcadm</command></title><procedure><step id="gbvcw"><para>Become superuser, or assume a role that includes the
Process Management profile.</para><para>The System Administrator role includes
the Process Management profile. For more information about roles, see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink></para>
</step><step><para>Disable the dynamic resource pools service.</para><screen># <userinput>svcadm disable system/pools/dynamic:default</userinput></screen>
</step>
</procedure>
</task><task id="rmpool.task-58"><title>How to Enable Resource Pools Using <command>pooladm</command></title><procedure><step id="rmpool.task-step-60"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-61"><para>Enable the pools facility.</para><screen># <userinput>pooladm -e</userinput></screen>
</step>
</procedure>
</task><task id="rmpool.task-62"><title>How to Disable Resource Pools Using <command>pooladm</command></title><procedure><step id="rmpool.task-step-64"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-65"><para>Disable the pools facility.</para><screen># <userinput>pooladm -d</userinput></screen>
</step>
</procedure>
</task>
</sect1><sect1 id="rmpool.task-2"><title>Configuring Pools</title><task id="rmpool.task-84"><title>How to Create a Static Configuration</title><tasksummary><para>Use the <option>s</option> option to <command>/usr/sbin/pooladm</command> to
create a static configuration file that matches the current dynamic configuration.
Unless a different file name is specified, the default location <filename>/etc/pooladm.conf</filename> is used.</para><para>Commit your configuration using the <command>pooladm</command> command
with the <option>c</option> option. Then, use the <command>pooladm</command> command
with the <option>s</option> option to update the static configuration to match
the state of the dynamic configuration.</para><note><para>The new functionality <command>pooladm</command> <option>s</option> is
preferred over the previous functionality <command>poolcfg</command> <option>c</option> <command>discover</command> for creating a new configuration that matches the dynamic configuration.</para>
</note>
</tasksummary><taskprerequisites><para>Enable pools on your system.</para>
</taskprerequisites><procedure><step id="rmpool.task-step-86"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-87"><para>Update the static configuration file
to match the current dynamic configuration.</para><screen># <userinput>pooladm -s</userinput></screen>
</step><step id="rmpool.task-step-88"><para>View the contents of the configuration
file in readable form.</para><para>Note that the configuration contains default
elements created by the system.</para><screen># <userinput>poolcfg -c info</userinput>
system tester
        string  system.comment
        int     system.version 1
        boolean system.bind-default true
        int     system.poold.pid 177916

        pool pool_default
                int     pool.sys_id 0
                boolean pool.active true
                boolean pool.default true
                int     pool.importance 1
                string  pool.comment 
                pset    pset_default

        pset pset_default
                int     pset.sys_id -1
                boolean pset.default true
                uint    pset.min 1
                uint    pset.max 65536
                string  pset.units population
                uint    pset.load 10
                uint    pset.size 4
                string  pset.comment 
                boolean testnullchanged true

                cpu
                        int     cpu.sys_id 3
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 2
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 1
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 0
                        string  cpu.comment 
                        string  cpu.status on-line</screen>
</step><step id="rmpool.task-step-91"><para>Commit the configuration at <literal>/etc/pooladm.conf</literal>.</para><screen># <userinput>pooladm -c</userinput></screen>
</step><step id="rmpool.task-step-96"><para>(Optional) To copy the dynamic configuration
to a static configuration file called <literal>/tmp/backup</literal>, type
the following:</para><screen># <userinput>pooladm -s /tmp/backup</userinput></screen>
</step>
</procedure>
</task><task id="rmpool.task-15"><title>How to Modify a Configuration</title><tasksummary><para>To enhance your configuration, create a processor set named <literal>pset_batch</literal> and a pool named <literal>pool_batch</literal>. Then join the pool
and the processor set with an association.</para><para>Note that you must quote subcommand arguments that contain white space.</para>
</tasksummary><procedure><step id="rmpool.task-step-17"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-18"><para>Create processor set <literal>pset_batch</literal>.</para><screen># <userinput>poolcfg -c 'create pset pset_batch (uint pset.min = 2; uint pset.max = 10)'</userinput></screen>
</step><step id="rmpool.task-step-19"><para>Create pool <literal>pool_batch</literal>.</para><screen># <userinput>poolcfg -c 'create pool pool_batch'</userinput></screen>
</step><step id="rmpool.task-step-20"><para>Join the pool and the processor set with
an association.</para><screen># <userinput>poolcfg -c 'associate pool pool_batch (pset pset_batch)'</userinput></screen>
</step><step id="rmpool.task-step-21"><para>Display the edited configuration.</para><screen># <userinput>poolcfg -c info</userinput>
system tester
        string  system.comment kernel state
        int     system.version 1
        boolean system.bind-default true
        int     system.poold.pid 177916

        pool pool_default
                int     pool.sys_id 0
                boolean pool.active true
                boolean pool.default true
                int     pool.importance 1
                string  pool.comment 
                pset    pset_default

        pset pset_default
                int     pset.sys_id -1
                boolean pset.default true
                uint    pset.min 1
                uint    pset.max 65536
                string  pset.units population
                uint    pset.load 10
                uint    pset.size 4
                string  pset.comment 
                boolean testnullchanged true

                cpu
                        int     cpu.sys_id 3
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 2
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 1
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 0
                        string  cpu.comment 
                        string  cpu.status on-line

        pool pool_batch
                boolean pool.default false
                boolean pool.active true
                int pool.importance 1
                string pool.comment
                pset pset_batch

        pset pset_batch
                int pset.sys_id -2
                string pset.units population
                boolean pset.default true
                uint pset.max 10
                uint pset.min 2
                string pset.comment
                boolean pset.escapable false
                uint pset.load 0
                uint pset.size 0

                cpu
                        int     cpu.sys_id 5
                        string  cpu.comment
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 4
                        string  cpu.comment
                        string  cpu.status on-line</screen>
</step><step id="rmpool.task-step-76"><para>Commit the configuration at <literal>/etc/pooladm.conf</literal>.</para><screen># <userinput>pooladm -c</userinput></screen>
</step><step id="rmpool.task-step-93"><para>(Optional) To copy the dynamic configuration
to a static configuration file named <literal>/tmp/backup</literal>, type
the following:</para><screen># <userinput>pooladm -s /tmp/backup</userinput></screen>
</step>
</procedure>
</task><task id="rmpool.task-22"><title>How to Associate a Pool With a Scheduling
Class</title><tasksummary><para>You can associate a pool with a scheduling class so that all processes
bound to the pool use this scheduler. To do this, set the <literal>pool.scheduler</literal> property to the name of the scheduler. This example associates
the pool <literal>pool_batch</literal> with the fair share scheduler (FSS).</para>
</tasksummary><procedure><step id="rmpool.task-step-24"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-25"><para>Modify pool <literal>pool_batch</literal> to
be associated with the FSS.</para><screen># <userinput>poolcfg -c 'modify pool pool_batch (string pool.scheduler="FSS")'</userinput></screen>
</step><step id="rmpool.task-step-26"><para>Display the edited configuration.</para><screen># <userinput>poolcfg -c info</userinput>
system tester
        string  system.comment
        int     system.version 1
        boolean system.bind-default true
        int     system.poold.pid 177916

        pool pool_default
                int     pool.sys_id 0
                boolean pool.active true
                boolean pool.default true
                int     pool.importance 1
                string  pool.comment 
                pset    pset_default

        pset pset_default
                int     pset.sys_id -1
                boolean pset.default true
                uint    pset.min 1
                uint    pset.max 65536
                string  pset.units population
                uint    pset.load 10
                uint    pset.size 4
                string  pset.comment 
                boolean testnullchanged true

                cpu
                        int     cpu.sys_id 3
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 2
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 1
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 0
                        string  cpu.comment 
                        string  cpu.status on-line

        pool pool_batch
                boolean pool.default false
                boolean pool.active true
                int pool.importance 1
                string pool.comment
                string pool.scheduler FSS
                pset batch

        pset pset_batch
                int pset.sys_id -2
                string pset.units population
                boolean pset.default true
                uint pset.max 10
                uint pset.min 2
                string pset.comment
                boolean pset.escapable false
                uint pset.load 0
                uint pset.size 0

                cpu
                        int     cpu.sys_id 5
                        string  cpu.comment
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 4
                        string  cpu.comment
                        string  cpu.status on-line</screen>
</step><step id="rmpool.task-step-77"><para>Commit the configuration at <literal>/etc/pooladm.conf</literal>:</para><screen># <userinput>pooladm -c</userinput></screen>
</step><step id="rmpool.task-step-95"><para>(Optional) To copy the dynamic configuration
to a static configuration file called <literal>/tmp/backup</literal>, type
the following:</para><screen># <userinput>pooladm -s /tmp/backup</userinput></screen>
</step>
</procedure>
</task><task id="gcvwh"><title>How to Set Configuration Constraints</title><tasksummary><para>Constraints affect the range of possible configurations by eliminating
some of the potential changes that could be made to a configuration. This
procedure shows how to set the <literal>cpu.pinned</literal> property.</para><para>In the following examples, <literal>cpuid</literal> is an integer.</para>
</tasksummary><procedure><step><para>Become superuser, or assume a role that includes the Process Management
profile.</para><para>The System Administrator role includes the Process Management
profile. For more information about roles, see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step><para>Modify the <literal>cpu.pinned</literal> property in the static
or dynamic configuration:</para><stepalternatives><step><para>Modify the boot-time (static) configuration:</para><screen># <userinput>poolcfg -c 'modify cpu &lt;cpuid> (boolean cpu.pinned = true)'</userinput></screen>
</step><step><para>Modify the running (dynamic) configuration without modifying the
boot-time configuration:</para><screen># <userinput>poolcfg -dc 'modify cpu &lt;cpuid> (boolean cpu.pinned = true)'</userinput></screen>
</step>
</stepalternatives>
</step>
</procedure>
</task><task id="rmpool.task-108"><title>How to Define Configuration Objectives</title><tasksummary><para>You can specify objectives for <command>poold</command> to consider
when taking corrective action.</para><para>In the following procedure, the <literal>wt-load</literal> objective
is being set so that <command>poold</command> tries to match resource allocation
to resource utilization. The <literal>locality</literal> objective is disabled
to assist in achieving this configuration goal.</para>
</tasksummary><procedure><step id="rmpool.task-step-110"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-111"><para>Modify system <literal>tester</literal> to
favor the <literal>wt-load</literal> objective.</para><screen># <userinput>poolcfg -c 'modify system tester (string system.poold.objectives="wt-load")'</userinput></screen>
</step><step id="rmpool.task-step-112"><para>Disable the <literal>locality</literal> objective
for the default processor set.</para><screen># <userinput>poolcfg -c 'modify pset pset_default (string pset.poold.objectives="locality <?SolBook linebreak?>none")'</userinput><lineannotation>one line</lineannotation></screen>
</step><step id="rmpool.task-step-113"><para>Disable the <literal>locality</literal> objective
for the <literal>pset_batch</literal> processor set.</para><screen># <userinput>poolcfg -c 'modify pset pset_batch (string pset.poold.objectives="locality <?SolBook linebreak?>none")'</userinput><lineannotation>one line</lineannotation></screen>
</step><step id="rmpool.task-step-114"><para>Display the edited configuration.</para><screen># <userinput>poolcfg -c info</userinput>
system tester
        string  system.comment
        int     system.version 1
        boolean system.bind-default true
        int     system.poold.pid 177916
        string  system.poold.objectives wt-load

        pool pool_default
                int     pool.sys_id 0
                boolean pool.active true
                boolean pool.default true
                int     pool.importance 1
                string  pool.comment 
                pset    pset_default

        pset pset_default
                int     pset.sys_id -1
                boolean pset.default true
                uint    pset.min 1
                uint    pset.max 65536
                string  pset.units population
                uint    pset.load 10
                uint    pset.size 4
                string  pset.comment 
                boolean testnullchanged true
                string  pset.poold.objectives locality none

                cpu
                        int     cpu.sys_id 3
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 2
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 1
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 0
                        string  cpu.comment 
                        string  cpu.status on-line

        pool pool_batch
                boolean pool.default false
                boolean pool.active true
                int pool.importance 1
                string pool.comment
                string pool.scheduler FSS
                pset batch

        pset pset_batch
                int pset.sys_id -2
                string pset.units population
                boolean pset.default true
                uint pset.max 10
                uint pset.min 2
                string pset.comment
                boolean pset.escapable false
                uint pset.load 0
                uint pset.size 0
                string  pset.poold.objectives locality none

                cpu
                        int     cpu.sys_id 5
                        string  cpu.comment
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 4
                        string  cpu.comment
                        string  cpu.status on-line</screen>
</step><step id="rmpool.task-step-115"><para>Commit the configuration at <literal>/etc/pooladm.conf</literal>.</para><screen># <userinput>pooladm -c</userinput></screen>
</step><step id="rmpool.task-step-116"><para>(Optional) To copy the dynamic configuration
to a static configuration file called <literal>/tmp/backup</literal>, type
the following:</para><screen># <userinput>pooladm -s /tmp/backup</userinput></screen>
</step>
</procedure>
</task><task id="rmpool.task-117"><title>How to Set the <command>poold</command> Logging
Level</title><tasksummary><para>To specify the level of logging information that <command>poold</command> generates,
set the <literal>system.poold.log-level</literal> property in the <command>poold</command> configuration.
The <command>poold</command> configuration is held in the <command>libpool</command> configuration.
For information, see <olink targetptr="rmpool-95" remap="internal">poold Logging Information</olink> and
the <olink targetdoc="group-refman" targetptr="poolcfg-1m" remap="external"><citerefentry><refentrytitle>poolcfg</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> and <olink targetdoc="group-refman" targetptr="libpool-3lib" remap="external"><citerefentry><refentrytitle>libpool</refentrytitle><manvolnum>3LIB</manvolnum></citerefentry></olink> man pages.</para><para>You can also use the <command>poold</command> command at the command
line to specify the level of logging information that <command>poold</command> generates.</para>
</tasksummary><procedure><step id="rmpool.task-step-119"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-120"><para>Set the logging level by using the <command>poold</command> command with the <option>l</option> option and a parameter,
for example, <literal>INFO</literal>.</para><screen># <userinput>/usr/lib/pool/poold -l INFO</userinput></screen><para>For information about available parameters, see <olink targetptr="rmpool-95" remap="internal">poold Logging Information</olink>. The default logging
level is <literal>NOTICE</literal>.</para>
</step>
</procedure>
</task><task id="rmpool.task-27"><title>How to Use Command Files With <command>poolcfg</command></title><tasksummary><para>The <command>poolcfg</command> command with the <option>f</option> option
can take input from a text file that contains <command>poolcfg</command> subcommand
arguments to the <option>c</option> option. This method is appropriate when
you want a set of operations to be performed. When processing multiple commands,
the configuration is only updated if all of the commands succeed. For large
or complex configurations, this technique can be more useful than per-subcommand
invocations.</para><para>Note that in command files,  the <literal>#</literal> character acts
as a comment mark for the rest of the line.</para>
</tasksummary><procedure><step id="rmpool.task-step-29"><para>Create the input file <filename>poolcmds.txt</filename>.</para><screen>$ <userinput>cat > poolcmds.txt</userinput>
<userinput>create system tester
create pset pset_batch (uint pset.min = 2; uint pset.max = 10)
create pool pool_batch
associate pool pool_batch (pset pset_batch)</userinput></screen>
</step><step id="rmpool.task-step-30"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-31"><para>Execute the command:</para><screen># <userinput>/usr/sbin/poolcfg -f poolcmds.txt</userinput></screen>
</step>
</procedure>
</task>
</sect1><sect1 id="rmpool.task-80"><title>Transferring Resources</title><para>Use the <command>transfer</command> subcommand argument to the <option>c</option> option
of <command>poolcfg</command> with the <option>d</option> option to transfer
resources in the kernel. The <option>d</option> option specifies that the
command operate directly on the kernel and not take input from a file.</para><para>The following procedure moves two CPUs from processor set <literal>pset1</literal> to
processor set <literal>pset2</literal> in the kernel.</para><task><title>How to Move CPUs Between Processor Sets</title><procedure><step id="rmpool.task-step-82"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-83"><para>Move two CPUs from <literal>pset1</literal> to <literal>pset2</literal>.</para><para>The <literal>from</literal> and <literal>to</literal> subclauses
can be used in any order. Only one <literal>to</literal> and <literal>from</literal> subclause
is supported per command.</para><screen># <userinput>poolcfg -dc 'transfer 2 from pset pset1 to pset2'</userinput></screen>
</step>
</procedure><example><title>Alternative Method to Move CPUs Between Procesor Sets</title><para>If specific known IDs of a resource type are to be transferred, an alternative
syntax is provided. For example, the following command assigns two CPUs with
IDs <literal>0</literal> and <literal>2</literal> to the <literal>pset_large</literal> processor
set:</para><screen># <userinput>poolcfg -dc "transfer to pset pset_large (cpu 0; cpu 2)"</userinput></screen>
</example><taskrelated-custom><title>Troubleshooting</title><para>If a transfer fails because there are not enough resources to match
the request or because the specified IDs cannot be located, the system displays
an error message.</para>
</taskrelated-custom>
</task>
</sect1><sect1 id="rmpool.task-32"><title>Activating and Removing Pool Configurations</title><para>Use the <command>pooladm</command> command to make a particular pool
configuration active or to remove the currently active pool configuration.
See the <olink targetdoc="group-refman" targetptr="pooladm-1m" remap="external"><citerefentry><refentrytitle>pooladm</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> man
page for more information about this command.</para><task id="rmpool.task-33"><title>How to Activate a Pools Configuration</title><tasksummary><para>To activate the configuration in the default configuration
file, <filename>/etc/pooladm.conf</filename>, invoke <command>pooladm</command> with
the <option>c</option> option, &ldquo;commit configuration.&rdquo;</para>
</tasksummary><procedure><step id="rmpool.task-step-35"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-74"><para>Commit the configuration at <literal>/etc/pooladm.conf</literal>.</para><screen># <userinput>pooladm -c</userinput></screen>
</step><step id="rmpool.task-step-94"><para>(Optional) Copy the dynamic configuration
to a static configuration file, for example, <literal>/tmp/backup</literal>.</para><screen># <userinput>pooladm -s /tmp/backup</userinput></screen>
</step>
</procedure>
</task><task id="rmpool.task-66"><title>How to Validate a Configuration Before Committing
the Configuration</title><tasksummary><para>You can use the <option>n</option> option with the <option>c</option> option
to test what will happen when the validation occurs. The configuration will
not actually be committed.</para><para>The following command attempts to validate the configuration contained
at <filename>/home/admin/newconfig</filename>. Any error conditions encountered
are displayed, but the configuration itself is not modified.</para>
</tasksummary><procedure><step id="rmpool.task-step-68"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-69"><para>Test the validity of the configuration
before committing it.</para><screen># <userinput>pooladm -n -c /home/admin/newconfig</userinput></screen>
</step>
</procedure>
</task><task id="rmpool.task-37"><title>How to Remove a Pools Configuration</title><tasksummary><para>To remove the current active configuration and return
all associated resources, such as processor sets, to their default status,
use the <option>x</option> option for &ldquo;remove configuration.&rdquo;</para>
</tasksummary><procedure><step id="rmpool.task-step-39"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-40"><para>Remove the current active configuration.</para><screen># <userinput>pooladm -x</userinput></screen><para>The <option>x</option> option to <command>pooladm</command> removes all user-defined elements
from the dynamic configuration. All resources revert to their default states,
and all pool bindings are replaced with a binding to the default pool.</para>
</step>
</procedure><taskrelated-custom><title>Mixing Scheduling Classes Within a Processor Set</title><para>You can safely mix processes in the TS and IA classes in the same processor
set. Mixing other scheduling classes within one processor set can lead to
unpredictable results. If the use of <command>pooladm</command> <option>x</option> results
in mixed scheduling classes within one processor set, use the <command>priocntl</command> command
to move running processes into a different scheduling class. See <olink targetptr="rmfss.task-7" remap="internal">How to Manually Move Processes From the TS Class
Into the FSS Class</olink>. Also see the <olink targetdoc="group-refman" targetptr="priocntl-1" remap="external"><citerefentry><refentrytitle>priocntl</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink> man page.</para>
</taskrelated-custom>
</task>
</sect1><sect1 id="rmpool.task-41"><title>Setting Pool Attributes and Binding to a
Pool</title><para>You
can set a <literal>project.pool</literal> attribute to associate a resource
pool with a project.</para><para>You
can bind a running process to a pool in two ways:</para><itemizedlist><listitem><para>You can use the <command>poolbind</command> command described
in <olink targetdoc="group-refman" targetptr="poolbind-1m" remap="external"><citerefentry><refentrytitle>poolbind</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink> command
to bind a specific process to a named resource pool.</para>
</listitem><listitem><para>You can use the <literal>project.pool</literal> attribute
in the <literal>project</literal> database to identify the pool binding for
a new login session or a task that is launched through the <command>newtask</command> command.
See the <olink targetdoc="group-refman" targetptr="newtask-1" remap="external"><citerefentry><refentrytitle>newtask</refentrytitle><manvolnum>1</manvolnum></citerefentry></olink>, <olink targetdoc="group-refman" targetptr="projmod-1m" remap="external"><citerefentry><refentrytitle>projmod</refentrytitle><manvolnum>1M</manvolnum></citerefentry></olink>, and <olink targetdoc="group-refman" targetptr="project-4" remap="external"><citerefentry><refentrytitle>project</refentrytitle><manvolnum>4</manvolnum></citerefentry></olink> man pages.</para>
</listitem>
</itemizedlist><task id="rmpool.task-42"><title>How to Bind Processes to a Pool</title><tasksummary><para>The following procedure uses <command>poolbind</command> with the <option>p</option> option to manually bind a process (in this case, the current shell)
to a pool named <literal>ohare</literal>.</para>
</tasksummary><procedure><step id="rmpool.task-step-44"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-45"><para>Manually bind a process to a pool:</para><screen># <userinput>poolbind -p ohare $$</userinput></screen>
</step><step id="rmpool.task-step-103"><para>Verify the pool binding for the process
by using <command>poolbind</command> with the <option>q</option> option.</para><screen>$ <userinput>poolbind -q $$</userinput>
155509 ohare</screen><para>The system displays the process ID and the pool binding.</para>
</step>
</procedure>
</task><task id="rmpool.task-46"><title>How to Bind Tasks or Projects to a Pool</title><tasksummary><para>To bind tasks or projects to a pool, use the <command>poolbind</command> command
with the <option>i</option> option. The following example binds all processes
in the <literal>airmiles</literal> project to the <literal>laguardia</literal> pool.</para>
</tasksummary><procedure><step id="rmpool.task-step-48"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-49"><para>Bind all processes in the <literal>airmiles</literal> project
to the <literal>laguardia</literal> pool.</para><screen># <userinput>poolbind -i project -p laguardia airmiles</userinput></screen>
</step>
</procedure>
</task><task id="rmpool.task-50"><title>How to Set the <literal>project.pool</literal> Attribute
for a Project</title><tasksummary><para>You can set the <literal>project.pool</literal> attribute to bind a
project's processes to a resource pool.</para>
</tasksummary><procedure><step id="rmpool.task-step-123"><para>Become superuser, or assume a role that
includes the Process Management profile.</para><para>The System Administrator
role includes the Process Management profile. For more information about roles,
see <olink targetdoc="sysadv1" targetptr="smcover-95" remap="external"><citetitle remap="section">Using the Solaris Management Tools With RBAC (Task Map)</citetitle> in <citetitle remap="book">System Administration Guide: Basic Administration</citetitle></olink>.</para>
</step><step id="rmpool.task-step-124"><para>Add a <literal>project.pool</literal> attribute
to each entry in the <filename>project</filename> database.</para><screen># <userinput>projmod -a -K project.pool=<replaceable>poolname</replaceable> <replaceable>project</replaceable></userinput></screen>
</step>
</procedure>
</task><task id="rmpool.task-51"><title>How to Use <literal>project</literal> Attributes
to Bind a Process to a Different Pool</title><tasksummary><para>Assume you have a configuration with two pools that are named <literal>studio</literal> and <literal>backstage</literal>. The <filename>/etc/project</filename> file
has the following contents:</para><screen>user.paul:1024::::project.pool=studio
user.george:1024::::project.pool=studio
user.ringo:1024::::project.pool=backstage
passes:1027::paul::project.pool=backstage</screen><para>With this configuration, processes that are started by user <literal>paul</literal> are
bound by default to the <literal>studio</literal> pool.</para><para>User <literal>paul</literal> can modify the pool binding for processes
he starts. <literal>paul</literal> can use <command>newtask</command> to bind
work to the <literal>backstage</literal> pool as well, by launching in the <literal>passes</literal> project.</para>
</tasksummary><procedure><step id="rmpool.task-step-53"><para>Launch a process in the <literal>passes</literal> project.</para><screen>$ <userinput>newtask -l -p passes</userinput></screen>
</step><step id="rmpool.task-step-54"><para>Use the <command>poolbind</command> command
with the <option>q</option> option to verify the pool binding for the process.
Also use a double dollar sign (<literal>$$</literal>) to pass the process
number of the parent shell to the command.</para><screen>$ <userinput>poolbind -q $$</userinput>
6384  pool backstage</screen><para>The system displays the process ID and the pool binding.</para>
</step>
</procedure>
</task>
</sect1><sect1 id="rmpool.task-104"><title>Using <command>poolstat</command> to Report
Statistics for Pool-Related Resources</title><para>The <command>poolstat</command> command is
used to display statistics for pool-related resources. See <olink targetptr="rmpool-107" remap="internal">Using poolstat to Monitor the Pools Facility and Resource
Utilization</olink> and the <citerefentry><refentrytitle>poolstat</refentrytitle><manvolnum>1M</manvolnum></citerefentry> man page for more information.</para><para>The following subsections use examples to illustrate how to produce
reports for specific purposes.</para><sect2 id="rmpool.task-105"><title>Displaying Default <command>poolstat</command> Output</title><para>Typing <command>poolstat</command> without arguments outputs a header
line and a line of information for each pool. The information line shows the
pool ID, the name of the pool, and resource statistics for the processor set
attached to the pool.</para><screen>machine% <userinput>poolstat</userinput>
                              pset
       id pool           size used load
        0 pool_default      4  3.6  6.2
        1 pool_sales        4  3.3  8.4</screen>
</sect2><sect2 id="rmpool.task-106"><title>Producing Multiple Reports at Specific
Intervals</title><para>The following command produces three reports at 5-second sampling intervals.</para><screen>machine% <userinput>poolstat 5 3</userinput>
                               pset
 id pool                 size used load
 46 pool_sales              2  1.2  8.3
  0 pool_default            2  0.4  5.2
                              pset
 id pool                 size used load
 46 pool_sales              2  1.4  8.4
  0 pool_default            2  1.9  2.0
                              pset
 id pool                 size used load
 46 pool_sales              2  1.1  8.0
  0 pool_default            2  0.3  5.0  </screen>
</sect2><sect2 id="rmpool.task-107"><title>Reporting Resource Set Statistics</title><para>The following example uses the <command>poolstat</command> command with
the <option>r</option> option to report statistics for the processor set resource
set. Note that the resource set <literal>pset_default</literal> is attached
to more than one pool, so this processor set is listed once for each pool
membership.</para><screen>machine% <userinput>poolstat -r pset</userinput>
      id pool          type rid rset          min  max size used load
       0 pool_default  pset  -1 pset_default    1  65K    2  1.2  8.3
       6 pool_sales    pset   1 pset_sales      1  65K    2  1.2  8.3
       2 pool_other    pset  -1 pset_default    1  10K    2  0.4  5.2</screen>
</sect2>
</sect1>
</chapter>