#, fuzzy msgid "" msgstr "" "Project-Id-Version: man-pages-l10n VERSION\n" "POT-Creation-Date: 2014-07-17 17:57+0900\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: man-pages/man7/cpuset.7:25 #, no-wrap msgid "CPUSET" msgstr "" #. type: TH #: man-pages/man7/cpuset.7:25 #, no-wrap msgid "2014-05-21" msgstr "" #. type: TH #: man-pages/man7/cpuset.7:25 #, no-wrap msgid "Linux" msgstr "" #. type: TH #: man-pages/man7/cpuset.7:25 #, no-wrap msgid "Linux Programmer's Manual" msgstr "" #. type: SH #: man-pages/man7/cpuset.7:26 #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:28 msgid "cpuset - confine processes to processor and memory node subsets" msgstr "" #. type: SH #: man-pages/man7/cpuset.7:28 #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:35 msgid "" "The cpuset filesystem is a pseudo-filesystem interface to the kernel cpuset " "mechanism, which is used to control the processor placement and memory " "placement of processes. It is commonly mounted at I." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:52 msgid "" "On systems with kernels compiled with built in support for cpusets, all " "processes are attached to a cpuset, and cpusets are always present. If a " "system supports cpusets, then it will have the entry B in the " "file I. By mounting the cpuset filesystem (see the " "B section below), the administrator can configure the cpusets on a " "system to control the processor and memory placement of processes on that " "system. By default, if the cpuset configuration on a system is not modified " "or if the cpuset filesystem is not even mounted, then the cpuset mechanism, " "though present, has no affect on the system's behavior." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:54 msgid "A cpuset defines a list of CPUs and memory nodes." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:63 msgid "" "The CPUs of a system include all the logical processing units on which a " "process can execute, including, if present, multiple processor cores within " "a package and Hyper-Threads within a processor core. Memory nodes include " "all distinct banks of main memory; small and SMP systems typically have just " "one memory node that contains all the system's main memory, while NUMA (non-" "uniform memory access) systems have multiple memory nodes." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:73 msgid "" "Cpusets are represented as directories in a hierarchical pseudo-filesystem, " "where the top directory in the hierarchy (I) represents the " "entire system (all online CPUs and memory nodes) and any cpuset that is the " "child (descendant) of another parent cpuset contains a subset of that " "parent's CPUs and memory nodes. The directories and files representing " "cpusets have normal filesystem permissions." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:84 msgid "" "Every process in the system belongs to exactly one cpuset. A process is " "confined to run only on the CPUs in the cpuset it belongs to, and to " "allocate memory only on the memory nodes in that cpuset. When a process " "B(2)s, the child process is placed in the same cpuset as its parent. " "With sufficient privilege, a process may be moved from one cpuset to another " "and the allowed CPUs and memory nodes of an existing cpuset may be changed." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:92 msgid "" "When the system begins booting, a single cpuset is defined that includes all " "CPUs and memory nodes on the system, and all processes are in that cpuset. " "During the boot process, or later during normal system operation, other " "cpusets may be created, as subdirectories of this top cpuset, under the " "control of the system administrator, and processes may be placed in these " "other cpusets." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:114 msgid "" "Cpusets are integrated with the B(2) scheduling affinity " "mechanism and the B(2) and B(2) memory-placement " "mechanisms in the kernel. Neither of these mechanisms let a process make " "use of a CPU or memory node that is not allowed by that process's cpuset. " "If changes to a process's cpuset placement conflict with these other " "mechanisms, then cpuset placement is enforced even if it means overriding " "these other mechanisms. The kernel accomplishes this overriding by silently " "restricting the CPUs and memory nodes requested by these other mechanisms to " "those allowed by the invoking process's cpuset. This can result in these " "other calls returning an error, if for example, such a call ends up " "requesting an empty set of CPUs or memory nodes, after that request is " "restricted to the invoking process's cpuset." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:120 msgid "" "Typically, a cpuset is used to manage the CPU and memory-node confinement " "for a set of cooperating processes such as a batch scheduler job, and these " "other mechanisms are used to manage the placement of individual processes or " "memory regions within that set or job." msgstr "" #. type: SH #: man-pages/man7/cpuset.7:120 #, no-wrap msgid "FILES" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:125 msgid "" "Each directory below I represents a cpuset and contains a fixed " "set of pseudo-files describing the state of that cpuset." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:135 msgid "" "New cpusets are created using the B(2) system call or the " "B(1) command. The properties of a cpuset, such as its flags, " "allowed CPUs and memory nodes, and attached processes, are queried and " "modified by reading or writing to the appropriate file in that cpuset's " "directory, as listed below." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:141 msgid "" "The pseudo-files in each cpuset directory are automatically created when the " "cpuset is created, as a result of the B(2) invocation. It is not " "possible to directly add or remove these pseudo-files." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:149 msgid "" "A cpuset directory that contains no child cpuset directories, and has no " "attached processes, can be removed using B(2) or B(1). It is " "not necessary, or possible, to remove the pseudo-files inside the directory " "before removing it." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:163 msgid "" "The pseudo-files in each cpuset directory are small text files that may be " "read and written using traditional shell utilities such as B(1), and " "B(1), or from a program by using file I/O library functions or system " "calls, such as B(2), B(2), B(2), and B(2)." msgstr "" #. ====================== tasks ====================== #. type: Plain text #: man-pages/man7/cpuset.7:168 msgid "" "The pseudo-files in a cpuset directory represent internal kernel state and " "do not have any persistent image on disk. Each of these per-cpuset files is " "listed and described below." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:168 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:178 msgid "" "List of the process IDs (PIDs) of the processes in that cpuset. The list is " "formatted as a series of ASCII decimal numbers, each followed by a newline. " "A process may be added to a cpuset (automatically removing it from the " "cpuset that previously contained it) by writing its PID to that cpuset's " "I file (with or without a trailing newline)." msgstr "" #. =================== notify_on_release =================== #. type: Plain text #: man-pages/man7/cpuset.7:186 msgid "" "B only one PID may be written to the I file at a time. If " "a string is written that contains more than one PID, only the first one will " "be used." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:186 #, no-wrap msgid "I" msgstr "" #. ====================== cpus ====================== #. type: Plain text #: man-pages/man7/cpuset.7:195 msgid "" "Flag (0 or 1). If set (1), that cpuset will receive special handling after " "it is released, that is, after all processes cease using it (i.e., terminate " "or are moved to a different cpuset) and all child cpuset directories have " "been removed. See the B section, below." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:195 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:202 msgid "" "List of the physical numbers of the CPUs on which processes in that cpuset " "are allowed to execute. See B below for a description of the " "format of I." msgstr "" #. ==================== cpu_exclusive ==================== #. type: Plain text #: man-pages/man7/cpuset.7:208 msgid "" "The CPUs allowed to a cpuset may be changed by writing a new list to its " "I file." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:208 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:215 msgid "" "Flag (0 or 1). If set (1), the cpuset has exclusive use of its CPUs (no " "sibling or cousin cpuset may overlap CPUs). By default this is off (0). " "Newly created cpusets also initially default this to off (0)." msgstr "" #. ====================== mems ====================== #. type: Plain text #: man-pages/man7/cpuset.7:237 msgid "" "Two cpusets are I cpusets if they share the same parent cpuset in " "the I hierarchy. Two cpusets are I cpusets if neither " "is the ancestor of the other. Regardless of the I setting, " "if one cpuset is the ancestor of another, and if both of these cpusets have " "nonempty I, then their I must overlap, because the I of " "any cpuset are always a subset of the I of its parent cpuset." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:237 #, no-wrap msgid "I" msgstr "" #. ==================== mem_exclusive ==================== #. type: Plain text #: man-pages/man7/cpuset.7:245 msgid "" "List of memory nodes on which processes in this cpuset are allowed to " "allocate memory. See B below for a description of the format " "of I." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:245 #, no-wrap msgid "I" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:253 msgid "" "Flag (0 or 1). If set (1), the cpuset has exclusive use of its memory nodes " "(no sibling or cousin may overlap). Also if set (1), the cpuset is a " "B cpuset (see below). By default this is off (0). Newly created " "cpusets also initially default this to off (0)." msgstr "" #. ==================== mem_hardwall ==================== #. type: Plain text #: man-pages/man7/cpuset.7:261 msgid "" "Regardless of the I setting, if one cpuset is the ancestor of " "another, then their memory nodes must overlap, because the memory nodes of " "any cpuset are always a subset of the memory nodes of that cpuset's parent " "cpuset." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:261 #, no-wrap msgid "I (since Linux 2.6.26)" msgstr "" #. ==================== memory_migrate ==================== #. type: Plain text #: man-pages/man7/cpuset.7:272 msgid "" "Flag (0 or 1). If set (1), the cpuset is a B cpuset (see below). " "Unlike B, there is no constraint on whether cpusets marked " "B may have overlapping memory nodes with sibling or cousin " "cpusets. By default this is off (0). Newly created cpusets also initially " "default this to off (0)." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:272 #, no-wrap msgid "I (since Linux 2.6.16)" msgstr "" #. ==================== memory_pressure ==================== #. type: Plain text #: man-pages/man7/cpuset.7:279 msgid "" "Flag (0 or 1). If set (1), then memory migration is enabled. By default " "this is off (0). See the B section, below." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:279 #, no-wrap msgid "I (since Linux 2.6.16)" msgstr "" #. ================= memory_pressure_enabled ================= #. type: Plain text #: man-pages/man7/cpuset.7:292 msgid "" "A measure of how much memory pressure the processes in this cpuset are " "causing. See the B section, below. Unless " "I is enabled, always has value zero (0). This file " "is read-only. See the B section, below." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:292 #, no-wrap msgid "I (since Linux 2.6.16)" msgstr "" #. ================== memory_spread_page ================== #. type: Plain text #: man-pages/man7/cpuset.7:304 msgid "" "Flag (0 or 1). This file is present only in the root cpuset, normally I. If set (1), the I calculations are enabled " "for all cpusets in the system. By default this is off (0). See the " "B section, below." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:304 #, no-wrap msgid "I (since Linux 2.6.17)" msgstr "" #. ================== memory_spread_slab ================== #. type: Plain text #: man-pages/man7/cpuset.7:314 msgid "" "Flag (0 or 1). If set (1), pages in the kernel page cache (filesystem " "buffers) are uniformly spread across the cpuset. By default this is off (0) " "in the top cpuset, and inherited from the parent cpuset in newly created " "cpusets. See the B section, below." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:314 #, no-wrap msgid "I (since Linux 2.6.17)" msgstr "" #. ================== sched_load_balance ================== #. type: Plain text #: man-pages/man7/cpuset.7:325 msgid "" "Flag (0 or 1). If set (1), the kernel slab caches for file I/O (directory " "and inode structures) are uniformly spread across the cpuset. By default " "this is off (0) in the top cpuset, and inherited from the parent cpuset in " "newly created cpusets. See the B section, below." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:325 #, no-wrap msgid "I (since Linux 2.6.24)" msgstr "" #. ================== sched_relax_domain_level ================== #. type: Plain text #: man-pages/man7/cpuset.7:339 msgid "" "Flag (0 or 1). If set (1, the default) the kernel will automatically load " "balance processes in that cpuset over the allowed CPUs in that cpuset. If " "cleared (0) the kernel will avoid load balancing processes in this cpuset, " "I some other cpuset with overlapping CPUs has its " "I flag set. See B, below, for " "further details." msgstr "" #. type: TP #: man-pages/man7/cpuset.7:339 #, no-wrap msgid "I (since Linux 2.6.26)" msgstr "" #. ================== proc cpuset ================== #. type: Plain text #: man-pages/man7/cpuset.7:359 msgid "" "Integer, between -1 and a small positive value. The " "I controls the width of the range of CPUs over " "which the kernel scheduler performs immediate rebalancing of runnable tasks " "across CPUs. If I is disabled, then the setting of " "I does not matter, as no such load balancing is " "done. If I is enabled, then the higher the value of the " "I, the wider the range of CPUs over which " "immediate load balancing is attempted. See B, " "below, for further details." msgstr "" #. ================== proc status ================== #. type: Plain text #: man-pages/man7/cpuset.7:367 msgid "" "In addition to the above pseudo-files in each directory below I, each process has a pseudo-file, IpidE/cpuset>, that " "displays the path of the process's cpuset directory relative to the root of " "the cpuset filesystem." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:378 msgid "" "Also the IpidE/status> file for each process has four added " "lines, displaying the process's I (on which CPUs it may be " "scheduled) and I (on which memory nodes it may obtain memory), " "in the two formats B and B (see below) as shown " "in the following example:" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:385 #, no-wrap msgid "" "Cpus_allowed: ffffffff,ffffffff,ffffffff,ffffffff\n" "Cpus_allowed_list: 0-127\n" "Mems_allowed: ffffffff,ffffffff\n" "Mems_allowed_list: 0-63\n" msgstr "" #. ================== EXTENDED CAPABILITIES ================== #. type: Plain text #: man-pages/man7/cpuset.7:391 msgid "" "The \"allowed\" fields were added in Linux 2.6.24; the \"allowed_list\" " "fields were added in Linux 2.6.26." msgstr "" #. type: SH #: man-pages/man7/cpuset.7:391 #, no-wrap msgid "EXTENDED CAPABILITIES" msgstr "" #. ================== Exclusive Cpusets ================== #. type: Plain text #: man-pages/man7/cpuset.7:399 msgid "" "In addition to controlling which I and I a process is allowed to " "use, cpusets provide the following extended capabilities." msgstr "" #. type: SS #: man-pages/man7/cpuset.7:399 #, no-wrap msgid "Exclusive cpusets" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:406 msgid "" "If a cpuset is marked I or I, no other cpuset, " "other than a direct ancestor or descendant, may share any of the same CPUs " "or memory nodes." msgstr "" #. ================== Hardwall ================== #. type: Plain text #: man-pages/man7/cpuset.7:432 msgid "" "A cpuset that is I restricts kernel allocations for buffer " "cache pages and other internal kernel data pages commonly shared by the " "kernel across multiple users. All cpusets, whether I or not, " "restrict allocations of memory for user space. This enables configuring a " "system so that several independent jobs can share common kernel data, while " "isolating each job's user allocation in its own cpuset. To do this, " "construct a large I cpuset to hold all the jobs, and " "construct child, non-I cpusets for each individual job. Only " "a small amount of kernel memory, such as requests from interrupt handlers, " "is allowed to be placed on memory nodes outside even a I " "cpuset." msgstr "" #. type: SS #: man-pages/man7/cpuset.7:432 #, no-wrap msgid "Hardwall" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:447 msgid "" "A cpuset that has I or I set is a I " "cpuset. A I cpuset restricts kernel allocations for page, buffer, " "and other data commonly shared by the kernel across multiple users. All " "cpusets, whether I or not, restrict allocations of memory for user " "space." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:458 msgid "" "This enables configuring a system so that several independent jobs can share " "common kernel data, such as filesystem pages, while isolating each job's " "user allocation in its own cpuset. To do this, construct a large " "I cpuset to hold all the jobs, and construct child cpusets for " "each individual job which are not I cpusets." msgstr "" #. ================== Notify On Release ================== #. type: Plain text #: man-pages/man7/cpuset.7:464 msgid "" "Only a small amount of kernel memory, such as requests from interrupt " "handlers, is allowed to be taken outside even a I cpuset." msgstr "" #. type: SS #: man-pages/man7/cpuset.7:464 #, no-wrap msgid "Notify on release" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:476 msgid "" "If the I flag is enabled (1) in a cpuset, then whenever " "the last process in the cpuset leaves (exits or attaches to some other " "cpuset) and the last child cpuset of that cpuset is removed, the kernel " "will run the command I, supplying the pathname " "(relative to the mount point of the cpuset filesystem) of the abandoned " "cpuset. This enables automatic removal of abandoned cpusets." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:484 msgid "" "The default value of I in the root cpuset at system boot " "is disabled (0). The default value of other cpusets at creation is the " "current value of their parent's I setting." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:492 msgid "" "The command I is invoked, with the name (I relative path) of the to-be-released cpuset in I." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:496 msgid "" "The usual contents of the command I is simply " "the shell script:" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:501 #, no-wrap msgid "#!/bin/sh\n" "rmdir /dev/cpuset/$1\n" msgstr "" #. ================== Memory Pressure ================== #. type: Plain text #: man-pages/man7/cpuset.7:509 msgid "" "As with other flag values below, this flag can be changed by writing an " "ASCII number 0 or 1 (with optional trailing newline) into the file, to " "clear or set the flag, respectively." msgstr "" #. type: SS #: man-pages/man7/cpuset.7:509 #, no-wrap msgid "Memory pressure" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:515 msgid "" "The I of a cpuset provides a simple per-cpuset running " "average of the rate that the processes in a cpuset are attempting to free up " "in-use memory on the nodes of the cpuset to satisfy additional memory " "requests." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:519 msgid "" "This enables batch managers that are monitoring jobs running in dedicated " "cpusets to efficiently detect what level of memory pressure that job is " "causing." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:526 msgid "" "This is useful both on tightly managed systems running a wide mix of " "submitted jobs, which may choose to terminate or reprioritize jobs that are " "trying to use more memory than allowed on the nodes assigned them, and with " "tightly coupled, long-running, massively parallel scientific computing jobs " "that will dramatically fail to meet required performance goals if they start " "to use more memory than allowed to them." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:531 msgid "" "This mechanism provides a very economical way for the batch manager to " "monitor a cpuset for signs of memory pressure. It's up to the batch manager " "or other user code to decide what action to take if it detects signs of " "memory pressure." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:538 msgid "" "Unless memory pressure calculation is enabled by setting the pseudo-file I, it is not computed for any " "cpuset, and reads from any I always return zero, as " "represented by the ASCII string \"0\\en\". See the B section, " "below." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:540 msgid "A per-cpuset, running average is employed for the following reasons:" msgstr "" #. type: IP #: man-pages/man7/cpuset.7:540 man-pages/man7/cpuset.7:545 man-pages/man7/cpuset.7:550 man-pages/man7/cpuset.7:726 man-pages/man7/cpuset.7:730 man-pages/man7/cpuset.7:927 man-pages/man7/cpuset.7:930 man-pages/man7/cpuset.7:934 man-pages/man7/cpuset.7:938 man-pages/man7/cpuset.7:942 #, no-wrap msgid "*" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:545 msgid "" "Because this meter is per-cpuset rather than per-process or per virtual " "memory region, the system load imposed by a batch scheduler monitoring this " "metric is sharply reduced on large systems, because a scan of the tasklist " "can be avoided on each set of queries." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:550 msgid "" "Because this meter is a running average rather than an accumulating counter, " "a batch scheduler can detect memory pressure with a single read, instead of " "having to read and accumulate results for a period of time." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:556 msgid "" "Because this meter is per-cpuset rather than per-process, the batch " "scheduler can obtain the key information\\(emmemory pressure in a " "cpuset\\(emwith a single read, rather than having to query and accumulate " "results over all the (dynamically changing) set of processes in the cpuset." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:564 msgid "" "The I of a cpuset is calculated using a per-cpuset simple " "digital filter that is kept within the kernel. For each cpuset, this filter " "tracks the recent rate at which processes attached to that cpuset enter the " "kernel direct reclaim code." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:573 msgid "" "The kernel direct reclaim code is entered whenever a process has to satisfy " "a memory page request by first finding some other page to repurpose, due to " "lack of any readily available already free pages. Dirty filesystem pages " "are repurposed by first writing them to disk. Unmodified filesystem buffer " "pages are repurposed by simply dropping them, though if that page is needed " "again, it will have to be reread from disk." msgstr "" #. ================== Memory Spread ================== #. type: Plain text #: man-pages/man7/cpuset.7:581 msgid "" "The I file provides an integer number representing " "the recent (half-life of 10 seconds) rate of entries to the direct reclaim " "code caused by any process in the cpuset, in units of reclaims attempted per " "second, times 1000." msgstr "" #. type: SS #: man-pages/man7/cpuset.7:581 #, no-wrap msgid "Memory spread" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:589 msgid "" "There are two Boolean flag files per cpuset that control where the kernel " "allocates pages for the filesystem buffers and related in-kernel data " "structures. They are called I and I." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:596 msgid "" "If the per-cpuset Boolean flag file I is set, " "then the kernel will spread the filesystem buffers (page cache) evenly over " "all the nodes that the faulting process is allowed to use, instead of " "preferring to put those pages on the node where the process is running." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:604 msgid "" "If the per-cpuset Boolean flag file I is set, " "then the kernel will spread some filesystem-related slab caches, such as " "those for inodes and directory entries, evenly over all the nodes that the " "faulting process is allowed to use, instead of preferring to put those pages " "on the node where the process is running." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:609 msgid "" "The setting of these flags does not affect the data segment (see B(2)) " "or stack segment pages of a process." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:617 msgid "" "By default, both kinds of memory spreading are off and the kernel prefers to " "allocate memory pages on the node local to where the requesting process is " "running. If that node is not allowed by the process's NUMA memory policy or " "cpuset configuration or if there are insufficient free memory pages on that " "node, then the kernel looks for the nearest node that is allowed and has " "sufficient free memory." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:620 msgid "" "When new cpusets are created, they inherit the memory spread settings of " "their parent." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:635 msgid "" "Setting memory spreading causes allocations for the affected page or slab " "caches to ignore the process's NUMA memory policy and be spread instead. " "However, the effect of these changes in memory placement caused by cpuset-" "specified memory spreading is hidden from the B(2) or " "B(2) calls. These two NUMA memory policy calls always " "appear to behave as if no cpuset-specified memory spreading is in effect, " "even if it is. If cpuset memory spreading is subsequently turned off, the " "NUMA memory policy most recently specified by these calls is automatically " "reapplied." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:644 msgid "" "Both I and I are " "Boolean flag files. By default they contain \"0\", meaning that the feature " "is off for that cpuset. If a \"1\" is written to that file, that turns the " "named feature on." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:647 msgid "" "Cpuset-specified memory spreading behaves similarly to what is known (in " "other contexts) as round-robin or interleave memory placement." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:650 msgid "" "Cpuset-specified memory spreading can provide substantial performance " "improvements for jobs that:" msgstr "" #. type: IP #: man-pages/man7/cpuset.7:650 #, no-wrap msgid "a)" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:654 msgid "" "need to place thread-local data on memory nodes close to the CPUs which are " "running the threads that most frequently access that data; but also" msgstr "" #. type: IP #: man-pages/man7/cpuset.7:654 #, no-wrap msgid "b)" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:657 msgid "" "need to access large filesystem data sets that must to be spread across the " "several nodes in the job's cpuset in order to fit." msgstr "" #. ================== Memory Migration ================== #. type: Plain text #: man-pages/man7/cpuset.7:664 msgid "" "Without this policy, the memory allocation across the nodes in the job's " "cpuset can become very uneven, especially for jobs that might have just a " "single thread initializing or reading in the data set." msgstr "" #. type: SS #: man-pages/man7/cpuset.7:664 #, no-wrap msgid "Memory migration" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:673 msgid "" "Normally, under the default setting (disabled) of I, " "once a page is allocated (given a physical page of main memory), then that " "page stays on whatever node it was allocated, so long as it remains " "allocated, even if the cpuset's memory-placement policy I subsequently " "changes." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:679 msgid "" "When memory migration is enabled in a cpuset, if the I setting of the " "cpuset is changed, then any memory page in use by any process in the cpuset " "that is on a memory node that is no longer allowed will be migrated to a " "memory node that is allowed." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:685 msgid "" "Furthermore, if a process is moved into a cpuset with I " "enabled, any memory pages it uses that were on memory nodes allowed in its " "previous cpuset, but which are not allowed in its new cpuset, will be " "migrated to a memory node allowed in the new cpuset." msgstr "" #. ================== Scheduler Load Balancing ================== #. type: Plain text #: man-pages/man7/cpuset.7:693 msgid "" "The relative placement of a migrated page within the cpuset is preserved " "during these migration operations if possible. For example, if the page was " "on the second valid node of the prior cpuset, then the page will be placed " "on the second valid node of the new cpuset, if possible." msgstr "" #. type: SS #: man-pages/man7/cpuset.7:693 #, no-wrap msgid "Scheduler load balancing" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:700 msgid "" "The kernel scheduler automatically load balances processes. If one CPU is " "underutilized, the kernel will look for processes on other more overloaded " "CPUs and move those processes to the underutilized CPU, within the " "constraints of such placement mechanisms as cpusets and " "B(2)." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:713 msgid "" "The algorithmic cost of load balancing and its impact on key shared kernel " "data structures such as the process list increases more than linearly with " "the number of CPUs being balanced. For example, it costs more to load " "balance across one large set of CPUs than it does to balance across two " "smaller sets of CPUs, each of half the size of the larger set. (The precise " "relationship between the number of CPUs being balanced and the cost of load " "balancing depends on implementation details of the kernel process scheduler, " "which is subject to change over time, as improved kernel scheduler " "algorithms are implemented.)" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:719 msgid "" "The per-cpuset flag I provides a mechanism to suppress " "this automatic scheduler load balancing in cases where it is not needed and " "suppressing it would have worthwhile performance benefits." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:723 msgid "" "By default, load balancing is done across all CPUs, except those marked " "isolated using the kernel boot time \"isolcpus=\" argument. (See " "B, below, to change this default.)" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:726 msgid "" "This default load balancing across all CPUs is not well suited to the " "following two situations:" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:730 msgid "" "On large systems, load balancing across many CPUs is expensive. If the " "system is managed using cpusets to place independent jobs on separate sets " "of CPUs, full load balancing is unnecessary." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:734 msgid "" "Systems supporting real-time on some CPUs need to minimize system overhead " "on those CPUs, including avoiding process load balancing if that is not " "needed." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:744 msgid "" "When the per-cpuset flag I is enabled (the default " "setting), it requests load balancing across all the CPUs in that cpuset's " "allowed CPUs, ensuring that load balancing can move a process (not otherwise " "pinned, as by B(2)) from any CPU in that cpuset to any " "other." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:753 msgid "" "When the per-cpuset flag I is disabled, then the " "scheduler will avoid load balancing across the CPUs in that cpuset, " "I in so far as is necessary because some overlapping cpuset has " "I enabled." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:761 msgid "" "So, for example, if the top cpuset has the flag I " "enabled, then the scheduler will load balance across all CPUs, and the " "setting of the I flag in other cpusets has no effect, as " "we're already fully load balancing." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:766 msgid "" "Therefore in the above two situations, the flag I should " "be disabled in the top cpuset, and only some of the smaller, child cpusets " "would have this flag enabled." msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:774 msgid "" "When doing this, you don't usually want to leave any unpinned processes in " "the top cpuset that might use nontrivial amounts of CPU, as such processes " "may be artificially constrained to some subset of CPUs, depending on the " "particulars of this flag setting in descendant cpusets. Even if such a " "process could use spare CPU cycles in some other CPUs, the kernel scheduler " "might not consider the possibility of load balancing that process to the " "underused CPU." msgstr "" #. ================== Scheduler Relax Domain Level ================== #. type: Plain text #: man-pages/man7/cpuset.7:780 msgid "" "Of course, processes pinned to a particular CPU can be left in a cpuset that " "disables I as those processes aren't going anywhere else " "anyway." msgstr "" #. type: SS #: man-pages/man7/cpuset.7:780 #, no-wrap msgid "Scheduler relax domain level" msgstr "" #. type: Plain text #: man-pages/man7/cpuset.7:801 msgid "" "The kernel scheduler performs immediate load balancing whenever a CPU " "becomes free or another task becomes runnable. This load balancing works to " "ensure that as many CPUs as possible are usefully employed running tasks. " "The kernel also performs periodic load balancing off the software clock " "described in B