17db96d56Sopenharmony_ci:mod:`resource` --- Resource usage information
27db96d56Sopenharmony_ci==============================================
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci.. module:: resource
57db96d56Sopenharmony_ci   :platform: Unix
67db96d56Sopenharmony_ci   :synopsis: An interface to provide resource usage information on the current process.
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_ci.. moduleauthor:: Jeremy Hylton <jeremy@alum.mit.edu>
97db96d56Sopenharmony_ci.. sectionauthor:: Jeremy Hylton <jeremy@alum.mit.edu>
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci--------------
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ciThis module provides basic mechanisms for measuring and controlling system
147db96d56Sopenharmony_ciresources utilized by a program.
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ci.. include:: ../includes/wasm-notavail.rst
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ciSymbolic constants are used to specify particular system resources and to
197db96d56Sopenharmony_cirequest usage information about either the current process or its children.
207db96d56Sopenharmony_ci
217db96d56Sopenharmony_ciAn :exc:`OSError` is raised on syscall failure.
227db96d56Sopenharmony_ci
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci.. exception:: error
257db96d56Sopenharmony_ci
267db96d56Sopenharmony_ci   A deprecated alias of :exc:`OSError`.
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci   .. versionchanged:: 3.3
297db96d56Sopenharmony_ci      Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci
327db96d56Sopenharmony_ciResource Limits
337db96d56Sopenharmony_ci---------------
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ciResources usage can be limited using the :func:`setrlimit` function described
367db96d56Sopenharmony_cibelow. Each resource is controlled by a pair of limits: a soft limit and a hard
377db96d56Sopenharmony_cilimit. The soft limit is the current limit, and may be lowered or raised by a
387db96d56Sopenharmony_ciprocess over time. The soft limit can never exceed the hard limit. The hard
397db96d56Sopenharmony_cilimit can be lowered to any value greater than the soft limit, but not raised.
407db96d56Sopenharmony_ci(Only processes with the effective UID of the super-user can raise a hard
417db96d56Sopenharmony_cilimit.)
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ciThe specific resources that can be limited are system dependent. They are
447db96d56Sopenharmony_cidescribed in the :manpage:`getrlimit(2)` man page.  The resources listed below
457db96d56Sopenharmony_ciare supported when the underlying operating system supports them; resources
467db96d56Sopenharmony_ciwhich cannot be checked or controlled by the operating system are not defined in
477db96d56Sopenharmony_cithis module for those platforms.
487db96d56Sopenharmony_ci
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci.. data:: RLIM_INFINITY
517db96d56Sopenharmony_ci
527db96d56Sopenharmony_ci   Constant used to represent the limit for an unlimited resource.
537db96d56Sopenharmony_ci
547db96d56Sopenharmony_ci
557db96d56Sopenharmony_ci.. function:: getrlimit(resource)
567db96d56Sopenharmony_ci
577db96d56Sopenharmony_ci   Returns a tuple ``(soft, hard)`` with the current soft and hard limits of
587db96d56Sopenharmony_ci   *resource*. Raises :exc:`ValueError` if an invalid resource is specified, or
597db96d56Sopenharmony_ci   :exc:`error` if the underlying system call fails unexpectedly.
607db96d56Sopenharmony_ci
617db96d56Sopenharmony_ci
627db96d56Sopenharmony_ci.. function:: setrlimit(resource, limits)
637db96d56Sopenharmony_ci
647db96d56Sopenharmony_ci   Sets new limits of consumption of *resource*. The *limits* argument must be a
657db96d56Sopenharmony_ci   tuple ``(soft, hard)`` of two integers describing the new limits. A value of
667db96d56Sopenharmony_ci   :data:`~resource.RLIM_INFINITY` can be used to request a limit that is
677db96d56Sopenharmony_ci   unlimited.
687db96d56Sopenharmony_ci
697db96d56Sopenharmony_ci   Raises :exc:`ValueError` if an invalid resource is specified, if the new soft
707db96d56Sopenharmony_ci   limit exceeds the hard limit, or if a process tries to raise its hard limit.
717db96d56Sopenharmony_ci   Specifying a limit of :data:`~resource.RLIM_INFINITY` when the hard or
727db96d56Sopenharmony_ci   system limit for that resource is not unlimited will result in a
737db96d56Sopenharmony_ci   :exc:`ValueError`.  A process with the effective UID of super-user can
747db96d56Sopenharmony_ci   request any valid limit value, including unlimited, but :exc:`ValueError`
757db96d56Sopenharmony_ci   will still be raised if the requested limit exceeds the system imposed
767db96d56Sopenharmony_ci   limit.
777db96d56Sopenharmony_ci
787db96d56Sopenharmony_ci   ``setrlimit`` may also raise :exc:`error` if the underlying system call
797db96d56Sopenharmony_ci   fails.
807db96d56Sopenharmony_ci
817db96d56Sopenharmony_ci   VxWorks only supports setting :data:`RLIMIT_NOFILE`.
827db96d56Sopenharmony_ci
837db96d56Sopenharmony_ci   .. audit-event:: resource.setrlimit resource,limits resource.setrlimit
847db96d56Sopenharmony_ci
857db96d56Sopenharmony_ci
867db96d56Sopenharmony_ci.. function:: prlimit(pid, resource[, limits])
877db96d56Sopenharmony_ci
887db96d56Sopenharmony_ci   Combines :func:`setrlimit` and :func:`getrlimit` in one function and
897db96d56Sopenharmony_ci   supports to get and set the resources limits of an arbitrary process. If
907db96d56Sopenharmony_ci   *pid* is 0, then the call applies to the current process. *resource* and
917db96d56Sopenharmony_ci   *limits* have the same meaning as in :func:`setrlimit`, except that
927db96d56Sopenharmony_ci   *limits* is optional.
937db96d56Sopenharmony_ci
947db96d56Sopenharmony_ci   When *limits* is not given the function returns the *resource* limit of the
957db96d56Sopenharmony_ci   process *pid*. When *limits* is given the *resource* limit of the process is
967db96d56Sopenharmony_ci   set and the former resource limit is returned.
977db96d56Sopenharmony_ci
987db96d56Sopenharmony_ci   Raises :exc:`ProcessLookupError` when *pid* can't be found and
997db96d56Sopenharmony_ci   :exc:`PermissionError` when the user doesn't have ``CAP_SYS_RESOURCE`` for
1007db96d56Sopenharmony_ci   the process.
1017db96d56Sopenharmony_ci
1027db96d56Sopenharmony_ci   .. audit-event:: resource.prlimit pid,resource,limits resource.prlimit
1037db96d56Sopenharmony_ci
1047db96d56Sopenharmony_ci   .. availability:: Linux >= 2.6.36 with glibc >= 2.13.
1057db96d56Sopenharmony_ci
1067db96d56Sopenharmony_ci   .. versionadded:: 3.4
1077db96d56Sopenharmony_ci
1087db96d56Sopenharmony_ci
1097db96d56Sopenharmony_ciThese symbols define resources whose consumption can be controlled using the
1107db96d56Sopenharmony_ci:func:`setrlimit` and :func:`getrlimit` functions described below. The values of
1117db96d56Sopenharmony_cithese symbols are exactly the constants used by C programs.
1127db96d56Sopenharmony_ci
1137db96d56Sopenharmony_ciThe Unix man page for :manpage:`getrlimit(2)` lists the available resources.
1147db96d56Sopenharmony_ciNote that not all systems use the same symbol or same value to denote the same
1157db96d56Sopenharmony_ciresource.  This module does not attempt to mask platform differences --- symbols
1167db96d56Sopenharmony_cinot defined for a platform will not be available from this module on that
1177db96d56Sopenharmony_ciplatform.
1187db96d56Sopenharmony_ci
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_ci.. data:: RLIMIT_CORE
1217db96d56Sopenharmony_ci
1227db96d56Sopenharmony_ci   The maximum size (in bytes) of a core file that the current process can create.
1237db96d56Sopenharmony_ci   This may result in the creation of a partial core file if a larger core would be
1247db96d56Sopenharmony_ci   required to contain the entire process image.
1257db96d56Sopenharmony_ci
1267db96d56Sopenharmony_ci
1277db96d56Sopenharmony_ci.. data:: RLIMIT_CPU
1287db96d56Sopenharmony_ci
1297db96d56Sopenharmony_ci   The maximum amount of processor time (in seconds) that a process can use. If
1307db96d56Sopenharmony_ci   this limit is exceeded, a :const:`SIGXCPU` signal is sent to the process. (See
1317db96d56Sopenharmony_ci   the :mod:`signal` module documentation for information about how to catch this
1327db96d56Sopenharmony_ci   signal and do something useful, e.g. flush open files to disk.)
1337db96d56Sopenharmony_ci
1347db96d56Sopenharmony_ci
1357db96d56Sopenharmony_ci.. data:: RLIMIT_FSIZE
1367db96d56Sopenharmony_ci
1377db96d56Sopenharmony_ci   The maximum size of a file which the process may create.
1387db96d56Sopenharmony_ci
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ci.. data:: RLIMIT_DATA
1417db96d56Sopenharmony_ci
1427db96d56Sopenharmony_ci   The maximum size (in bytes) of the process's heap.
1437db96d56Sopenharmony_ci
1447db96d56Sopenharmony_ci
1457db96d56Sopenharmony_ci.. data:: RLIMIT_STACK
1467db96d56Sopenharmony_ci
1477db96d56Sopenharmony_ci   The maximum size (in bytes) of the call stack for the current process.  This only
1487db96d56Sopenharmony_ci   affects the stack of the main thread in a multi-threaded process.
1497db96d56Sopenharmony_ci
1507db96d56Sopenharmony_ci
1517db96d56Sopenharmony_ci.. data:: RLIMIT_RSS
1527db96d56Sopenharmony_ci
1537db96d56Sopenharmony_ci   The maximum resident set size that should be made available to the process.
1547db96d56Sopenharmony_ci
1557db96d56Sopenharmony_ci
1567db96d56Sopenharmony_ci.. data:: RLIMIT_NPROC
1577db96d56Sopenharmony_ci
1587db96d56Sopenharmony_ci   The maximum number of processes the current process may create.
1597db96d56Sopenharmony_ci
1607db96d56Sopenharmony_ci
1617db96d56Sopenharmony_ci.. data:: RLIMIT_NOFILE
1627db96d56Sopenharmony_ci
1637db96d56Sopenharmony_ci   The maximum number of open file descriptors for the current process.
1647db96d56Sopenharmony_ci
1657db96d56Sopenharmony_ci
1667db96d56Sopenharmony_ci.. data:: RLIMIT_OFILE
1677db96d56Sopenharmony_ci
1687db96d56Sopenharmony_ci   The BSD name for :const:`RLIMIT_NOFILE`.
1697db96d56Sopenharmony_ci
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_ci.. data:: RLIMIT_MEMLOCK
1727db96d56Sopenharmony_ci
1737db96d56Sopenharmony_ci   The maximum address space which may be locked in memory.
1747db96d56Sopenharmony_ci
1757db96d56Sopenharmony_ci
1767db96d56Sopenharmony_ci.. data:: RLIMIT_VMEM
1777db96d56Sopenharmony_ci
1787db96d56Sopenharmony_ci   The largest area of mapped memory which the process may occupy.
1797db96d56Sopenharmony_ci
1807db96d56Sopenharmony_ci
1817db96d56Sopenharmony_ci.. data:: RLIMIT_AS
1827db96d56Sopenharmony_ci
1837db96d56Sopenharmony_ci   The maximum area (in bytes) of address space which may be taken by the process.
1847db96d56Sopenharmony_ci
1857db96d56Sopenharmony_ci
1867db96d56Sopenharmony_ci.. data:: RLIMIT_MSGQUEUE
1877db96d56Sopenharmony_ci
1887db96d56Sopenharmony_ci   The number of bytes that can be allocated for POSIX message queues.
1897db96d56Sopenharmony_ci
1907db96d56Sopenharmony_ci   .. availability:: Linux >= 2.6.8.
1917db96d56Sopenharmony_ci
1927db96d56Sopenharmony_ci   .. versionadded:: 3.4
1937db96d56Sopenharmony_ci
1947db96d56Sopenharmony_ci
1957db96d56Sopenharmony_ci.. data:: RLIMIT_NICE
1967db96d56Sopenharmony_ci
1977db96d56Sopenharmony_ci   The ceiling for the process's nice level (calculated as 20 - rlim_cur).
1987db96d56Sopenharmony_ci
1997db96d56Sopenharmony_ci   .. availability:: Linux >= 2.6.12.
2007db96d56Sopenharmony_ci
2017db96d56Sopenharmony_ci   .. versionadded:: 3.4
2027db96d56Sopenharmony_ci
2037db96d56Sopenharmony_ci
2047db96d56Sopenharmony_ci.. data:: RLIMIT_RTPRIO
2057db96d56Sopenharmony_ci
2067db96d56Sopenharmony_ci   The ceiling of the real-time priority.
2077db96d56Sopenharmony_ci
2087db96d56Sopenharmony_ci   .. availability:: Linux >= 2.6.12.
2097db96d56Sopenharmony_ci
2107db96d56Sopenharmony_ci   .. versionadded:: 3.4
2117db96d56Sopenharmony_ci
2127db96d56Sopenharmony_ci
2137db96d56Sopenharmony_ci.. data:: RLIMIT_RTTIME
2147db96d56Sopenharmony_ci
2157db96d56Sopenharmony_ci   The time limit (in microseconds) on CPU time that a process can spend
2167db96d56Sopenharmony_ci   under real-time scheduling without making a blocking syscall.
2177db96d56Sopenharmony_ci
2187db96d56Sopenharmony_ci   .. availability:: Linux >= 2.6.25.
2197db96d56Sopenharmony_ci
2207db96d56Sopenharmony_ci   .. versionadded:: 3.4
2217db96d56Sopenharmony_ci
2227db96d56Sopenharmony_ci
2237db96d56Sopenharmony_ci.. data:: RLIMIT_SIGPENDING
2247db96d56Sopenharmony_ci
2257db96d56Sopenharmony_ci   The number of signals which the process may queue.
2267db96d56Sopenharmony_ci
2277db96d56Sopenharmony_ci   .. availability:: Linux >= 2.6.8.
2287db96d56Sopenharmony_ci
2297db96d56Sopenharmony_ci   .. versionadded:: 3.4
2307db96d56Sopenharmony_ci
2317db96d56Sopenharmony_ci.. data:: RLIMIT_SBSIZE
2327db96d56Sopenharmony_ci
2337db96d56Sopenharmony_ci   The maximum size (in bytes) of socket buffer usage for this user.
2347db96d56Sopenharmony_ci   This limits the amount of network memory, and hence the amount of mbufs,
2357db96d56Sopenharmony_ci   that this user may hold at any time.
2367db96d56Sopenharmony_ci
2377db96d56Sopenharmony_ci   .. availability:: FreeBSD.
2387db96d56Sopenharmony_ci
2397db96d56Sopenharmony_ci   .. versionadded:: 3.4
2407db96d56Sopenharmony_ci
2417db96d56Sopenharmony_ci.. data:: RLIMIT_SWAP
2427db96d56Sopenharmony_ci
2437db96d56Sopenharmony_ci   The maximum size (in bytes) of the swap space that may be reserved or
2447db96d56Sopenharmony_ci   used by all of this user id's processes.
2457db96d56Sopenharmony_ci   This limit is enforced only if bit 1 of the vm.overcommit sysctl is set.
2467db96d56Sopenharmony_ci   Please see
2477db96d56Sopenharmony_ci   `tuning(7) <https://man.freebsd.org/cgi/man.cgi?query=tuning&sektion=7>`__
2487db96d56Sopenharmony_ci   for a complete description of this sysctl.
2497db96d56Sopenharmony_ci
2507db96d56Sopenharmony_ci   .. availability:: FreeBSD.
2517db96d56Sopenharmony_ci
2527db96d56Sopenharmony_ci   .. versionadded:: 3.4
2537db96d56Sopenharmony_ci
2547db96d56Sopenharmony_ci.. data:: RLIMIT_NPTS
2557db96d56Sopenharmony_ci
2567db96d56Sopenharmony_ci   The maximum number of pseudo-terminals created by this user id.
2577db96d56Sopenharmony_ci
2587db96d56Sopenharmony_ci   .. availability:: FreeBSD.
2597db96d56Sopenharmony_ci
2607db96d56Sopenharmony_ci   .. versionadded:: 3.4
2617db96d56Sopenharmony_ci
2627db96d56Sopenharmony_ci.. data:: RLIMIT_KQUEUES
2637db96d56Sopenharmony_ci
2647db96d56Sopenharmony_ci   The maximum number of kqueues this user id is allowed to create.
2657db96d56Sopenharmony_ci
2667db96d56Sopenharmony_ci   .. availability:: FreeBSD >= 11.
2677db96d56Sopenharmony_ci
2687db96d56Sopenharmony_ci   .. versionadded:: 3.10
2697db96d56Sopenharmony_ci
2707db96d56Sopenharmony_ciResource Usage
2717db96d56Sopenharmony_ci--------------
2727db96d56Sopenharmony_ci
2737db96d56Sopenharmony_ciThese functions are used to retrieve resource usage information:
2747db96d56Sopenharmony_ci
2757db96d56Sopenharmony_ci
2767db96d56Sopenharmony_ci.. function:: getrusage(who)
2777db96d56Sopenharmony_ci
2787db96d56Sopenharmony_ci   This function returns an object that describes the resources consumed by either
2797db96d56Sopenharmony_ci   the current process or its children, as specified by the *who* parameter.  The
2807db96d56Sopenharmony_ci   *who* parameter should be specified using one of the :const:`RUSAGE_\*`
2817db96d56Sopenharmony_ci   constants described below.
2827db96d56Sopenharmony_ci
2837db96d56Sopenharmony_ci   A simple example::
2847db96d56Sopenharmony_ci
2857db96d56Sopenharmony_ci      from resource import *
2867db96d56Sopenharmony_ci      import time
2877db96d56Sopenharmony_ci
2887db96d56Sopenharmony_ci      # a non CPU-bound task
2897db96d56Sopenharmony_ci      time.sleep(3)
2907db96d56Sopenharmony_ci      print(getrusage(RUSAGE_SELF))
2917db96d56Sopenharmony_ci
2927db96d56Sopenharmony_ci      # a CPU-bound task
2937db96d56Sopenharmony_ci      for i in range(10 ** 8):
2947db96d56Sopenharmony_ci         _ = 1 + 1
2957db96d56Sopenharmony_ci      print(getrusage(RUSAGE_SELF))
2967db96d56Sopenharmony_ci
2977db96d56Sopenharmony_ci   The fields of the return value each describe how a particular system resource
2987db96d56Sopenharmony_ci   has been used, e.g. amount of time spent running is user mode or number of times
2997db96d56Sopenharmony_ci   the process was swapped out of main memory. Some values are dependent on the
3007db96d56Sopenharmony_ci   clock tick internal, e.g. the amount of memory the process is using.
3017db96d56Sopenharmony_ci
3027db96d56Sopenharmony_ci   For backward compatibility, the return value is also accessible as a tuple of 16
3037db96d56Sopenharmony_ci   elements.
3047db96d56Sopenharmony_ci
3057db96d56Sopenharmony_ci   The fields :attr:`ru_utime` and :attr:`ru_stime` of the return value are
3067db96d56Sopenharmony_ci   floating point values representing the amount of time spent executing in user
3077db96d56Sopenharmony_ci   mode and the amount of time spent executing in system mode, respectively. The
3087db96d56Sopenharmony_ci   remaining values are integers. Consult the :manpage:`getrusage(2)` man page for
3097db96d56Sopenharmony_ci   detailed information about these values. A brief summary is presented here:
3107db96d56Sopenharmony_ci
3117db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3127db96d56Sopenharmony_ci   | Index  | Field               | Resource                              |
3137db96d56Sopenharmony_ci   +========+=====================+=======================================+
3147db96d56Sopenharmony_ci   | ``0``  | :attr:`ru_utime`    | time in user mode (float seconds)     |
3157db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3167db96d56Sopenharmony_ci   | ``1``  | :attr:`ru_stime`    | time in system mode (float seconds)   |
3177db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3187db96d56Sopenharmony_ci   | ``2``  | :attr:`ru_maxrss`   | maximum resident set size             |
3197db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3207db96d56Sopenharmony_ci   | ``3``  | :attr:`ru_ixrss`    | shared memory size                    |
3217db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3227db96d56Sopenharmony_ci   | ``4``  | :attr:`ru_idrss`    | unshared memory size                  |
3237db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3247db96d56Sopenharmony_ci   | ``5``  | :attr:`ru_isrss`    | unshared stack size                   |
3257db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3267db96d56Sopenharmony_ci   | ``6``  | :attr:`ru_minflt`   | page faults not requiring I/O         |
3277db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3287db96d56Sopenharmony_ci   | ``7``  | :attr:`ru_majflt`   | page faults requiring I/O             |
3297db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3307db96d56Sopenharmony_ci   | ``8``  | :attr:`ru_nswap`    | number of swap outs                   |
3317db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3327db96d56Sopenharmony_ci   | ``9``  | :attr:`ru_inblock`  | block input operations                |
3337db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3347db96d56Sopenharmony_ci   | ``10`` | :attr:`ru_oublock`  | block output operations               |
3357db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3367db96d56Sopenharmony_ci   | ``11`` | :attr:`ru_msgsnd`   | messages sent                         |
3377db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3387db96d56Sopenharmony_ci   | ``12`` | :attr:`ru_msgrcv`   | messages received                     |
3397db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3407db96d56Sopenharmony_ci   | ``13`` | :attr:`ru_nsignals` | signals received                      |
3417db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3427db96d56Sopenharmony_ci   | ``14`` | :attr:`ru_nvcsw`    | voluntary context switches            |
3437db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3447db96d56Sopenharmony_ci   | ``15`` | :attr:`ru_nivcsw`   | involuntary context switches          |
3457db96d56Sopenharmony_ci   +--------+---------------------+---------------------------------------+
3467db96d56Sopenharmony_ci
3477db96d56Sopenharmony_ci   This function will raise a :exc:`ValueError` if an invalid *who* parameter is
3487db96d56Sopenharmony_ci   specified. It may also raise :exc:`error` exception in unusual circumstances.
3497db96d56Sopenharmony_ci
3507db96d56Sopenharmony_ci
3517db96d56Sopenharmony_ci.. function:: getpagesize()
3527db96d56Sopenharmony_ci
3537db96d56Sopenharmony_ci   Returns the number of bytes in a system page. (This need not be the same as the
3547db96d56Sopenharmony_ci   hardware page size.)
3557db96d56Sopenharmony_ci
3567db96d56Sopenharmony_ciThe following :const:`RUSAGE_\*` symbols are passed to the :func:`getrusage`
3577db96d56Sopenharmony_cifunction to specify which processes information should be provided for.
3587db96d56Sopenharmony_ci
3597db96d56Sopenharmony_ci
3607db96d56Sopenharmony_ci.. data:: RUSAGE_SELF
3617db96d56Sopenharmony_ci
3627db96d56Sopenharmony_ci   Pass to :func:`getrusage` to request resources consumed by the calling
3637db96d56Sopenharmony_ci   process, which is the sum of resources used by all threads in the process.
3647db96d56Sopenharmony_ci
3657db96d56Sopenharmony_ci
3667db96d56Sopenharmony_ci.. data:: RUSAGE_CHILDREN
3677db96d56Sopenharmony_ci
3687db96d56Sopenharmony_ci   Pass to :func:`getrusage` to request resources consumed by child processes
3697db96d56Sopenharmony_ci   of the calling process which have been terminated and waited for.
3707db96d56Sopenharmony_ci
3717db96d56Sopenharmony_ci
3727db96d56Sopenharmony_ci.. data:: RUSAGE_BOTH
3737db96d56Sopenharmony_ci
3747db96d56Sopenharmony_ci   Pass to :func:`getrusage` to request resources consumed by both the current
3757db96d56Sopenharmony_ci   process and child processes.  May not be available on all systems.
3767db96d56Sopenharmony_ci
3777db96d56Sopenharmony_ci
3787db96d56Sopenharmony_ci.. data:: RUSAGE_THREAD
3797db96d56Sopenharmony_ci
3807db96d56Sopenharmony_ci   Pass to :func:`getrusage` to request resources consumed by the current
3817db96d56Sopenharmony_ci   thread.  May not be available on all systems.
3827db96d56Sopenharmony_ci
3837db96d56Sopenharmony_ci   .. versionadded:: 3.2
384