Browse Prior Art Database

Tuning Knobs for User Scheduler

IP.com Disclosure Number: IPCOM000123231D
Original Publication Date: 1998-Jul-01
Included in the Prior Art Database: 2005-Apr-04
Document File: 2 page(s) / 68K

Publishing Venue

IBM

Related People

Browning, LM: AUTHOR

Abstract

A method for controlling the scalability of multi-threaded applications is disclosed. Several tuning knobs are described that control the interaction of kernel and user threads.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 53% of the total text.

Tuning Knobs for User Scheduler

   A method for controlling the scalability of multi-threaded
applications is disclosed.  Several tuning knobs are described that
control the interaction of kernel and user threads.

   The AIX user scheduler provides the following environment
variables to control the scheduling algorithms of pthreads.
  o  AIXTHREAD_SCOPE={P|S}
       This can be used to alter the scheduling mode of the
     default pthread attribute, which indirectly allows
     applications to take advantage of M:N scheduling without
     having to make code changes.  A value of "P" enables the
     user scheduler to multiplex user threads over kernel
     threads (M:N).
       A value of "S" means associate a dedicated kernel thread
     with each pthread (1:1).  The symbols "P" and "S" were
     derived from the POSIX terms PTHREAD_SCOPE_PROCESS and
     PTHREAD_SCOPE_SYSTEM.
  o  AIXTHREAD_MNRATIO=P :K
       This can be used to control the scaling factor of the
     user scheduler.  It defines the overall ratio of pthreads
     to kernel threads and thus is instrumental in providing
     application scalability.  It is generally used at pthread
     creation time to determine whether another kernel thread
     needs to be allocated.
       It takes the form of P:K, where P is the number of
     pthreads and K is the number of kernel threads.  A ratio of
     2:1 means for every two pthreads create a kernel thread.
  o  AIXTHREAD_SLPRATIO=K
       This controls the size of the available pool of kernel
     threads.  When a pthread sleeps, it releases its kernel
     thread so that it can be used to schedule another
     pthread.  When there are no runnable pthreads, the
     kernel thread is put into a pool of available kernel
     threads.  Generally this is a sign that there are extra
     kernel threads and it is quite likely that when the
     pthreads are woken they will be woken one at a time to
 ...