# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-06-01 06:19+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "sched_setaffinity" msgstr "" #. type: TH #: archlinux debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "" #. type: TH #: archlinux debian-unstable #, no-wrap msgid "Linux man-pages 6.8" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "sched_setaffinity, sched_getaffinity - set and get a thread's CPU affinity " "mask" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "LIBRARY" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "Standard C library (I, I<-lc>)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n" "B<#include Esched.hE>\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "BIB<, size_t >IB<,>\n" "B< const cpu_set_t *>IB<);>\n" "BIB<, size_t >IB<,>\n" "B< cpu_set_t *>IB<);>\n" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A thread's CPU affinity mask determines the set of CPUs on which it is " "eligible to run. On a multiprocessor system, setting the CPU affinity mask " "can be used to obtain performance benefits. For example, by dedicating one " "CPU to a particular thread (i.e., setting the affinity mask of that thread " "to specify a single CPU, and setting the affinity mask of all other threads " "to exclude that CPU), it is possible to ensure maximum execution speed for " "that thread. Restricting a thread to run on a single CPU also avoids the " "performance cost caused by the cache invalidation that occurs when a thread " "ceases to execute on one CPU and then recommences execution on a different " "CPU." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A CPU affinity mask is represented by the I structure, a \"CPU " "set\", pointed to by I. A set of macros for manipulating CPU sets is " "described in B(3)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() sets the CPU affinity mask of the thread whose ID is " "I to the value specified by I. If I is zero, then the " "calling thread is used. The argument I is the length (in bytes) " "of the data pointed to by I. Normally this argument would be " "specified as I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "If the thread specified by I is not currently running on one of the " "CPUs specified in I, then that thread is migrated to one of the CPUs " "specified in I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() writes the affinity mask of the thread whose ID is " "I into the I structure pointed to by I. The " "I argument specifies the size (in bytes) of I. If I " "is zero, then the mask of the calling thread is returned." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "RETURN VALUE" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On success, B() and B() return 0 " "(but see \"C library/kernel differences\" below, which notes that the " "underlying B() differs in its return value). On " "failure, -1 is returned, and I is set to indicate the error." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ERRORS" msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "A supplied memory address was invalid." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The affinity bit mask I contains no processors that are currently " "physically on the system and permitted to the thread according to any " "restrictions that may be imposed by I cgroups or the \"cpuset\" " "mechanism described in B(7)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B() and, before Linux 2.6.9, B()) " "I is smaller than the size of the affinity mask used by the " "kernel." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "(B()) The calling thread does not have appropriate " "privileges. The caller needs an effective user ID equal to the real user ID " "or effective user ID of the thread identified by I, or it must possess " "the B capability in the user namespace of the thread I." msgstr "" #. type: TP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "B" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The thread whose ID is I could not be found." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "STANDARDS" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "Linux." msgstr "" #. type: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "HISTORY" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "Linux 2.5.8, glibc 2.3." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Initially, the glibc interfaces included a I argument, typed as " "I. In glibc 2.3.3, the I argument was removed, " "but was then restored in glibc 2.3.4, with type I." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NOTES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "After a call to B(), the set of CPUs on which the thread " "will actually run is the intersection of the set specified in the I " "argument and the set of CPUs actually present on the system. The system may " "further restrict the set of CPUs on which the thread runs if the \"cpuset\" " "mechanism described in B(7) is being used. These restrictions on " "the actual set of CPUs on which the thread will run are silently imposed by " "the kernel." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "There are various ways of determining the number of CPUs available on the " "system, including: inspecting the contents of I; using " "B(3) to obtain the values of the B<_SC_NPROCESSORS_CONF> and " "B<_SC_NPROCESSORS_ONLN> parameters; and inspecting the list of CPU " "directories under I." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B(7) has a description of the Linux scheduling scheme." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The affinity mask is a per-thread attribute that can be adjusted " "independently for each of the threads in a thread group. The value returned " "from a call to B(2) can be passed in the argument I. " "Specifying I as 0 will set the attribute for the calling thread, and " "passing the value returned from a call to B(2) will set the " "attribute for the main thread of the thread group. (If you are using the " "POSIX threads API, then use B(3) instead of " "B().)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The I boot option can be used to isolate one or more CPUs at boot " "time, so that no processes are scheduled onto those CPUs. Following the use " "of this boot option, the only way to schedule processes onto the isolated " "CPUs is via B() or the B(7) mechanism. For " "further information, see the kernel source file I. As noted in that file, I is the preferred " "mechanism of isolating CPUs (versus the alternative of manually setting the " "CPU affinity of all processes on the system)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "A child created via B(2) inherits its parent's CPU affinity mask. " "The affinity mask is preserved across an B(2)." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "C library/kernel differences" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This manual page describes the glibc interface for the CPU affinity calls. " "The actual system call interface is slightly different, with the I " "being typed as I, reflecting the fact that the underlying " "implementation of CPU sets is a simple bit mask." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "On success, the raw B() system call returns the number " "of bytes placed copied into the I buffer; this will be the minimum of " "I and the size (in bytes) of the I data type that is " "used internally by the kernel to represent the CPU set bit mask." msgstr "" #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Handling systems with large CPU affinity masks" msgstr "" #. FIXME . See https://sourceware.org/bugzilla/show_bug.cgi?id=15630 #. and https://sourceware.org/ml/libc-alpha/2013-07/msg00288.html #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The underlying system calls (which represent CPU masks as bit masks of type " "I) impose no restriction on the size of the CPU mask. " "However, the I data type used by glibc has a fixed size of 128 " "bytes, meaning that the maximum CPU number that can be represented is 1023. " "If the kernel CPU affinity mask is larger than 1024, then calls of the form:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "sched_getaffinity(pid, sizeof(cpu_set_t), &mask);\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "fail with the error B, the error produced by the underlying system " "call for the case where the I size specified in I is " "smaller than the size of the affinity mask used by the kernel. (Depending " "on the system CPU topology, the kernel affinity mask can be substantially " "larger than the number of active CPUs in the system.)" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "When working on systems with large kernel CPU affinity masks, one must " "dynamically allocate the I argument (see B(3)). Currently, " "the only way to do this is by probing for the size of the required mask " "using B() calls with increasing mask sizes (until the " "call does not fail with the error B)." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Be aware that B(3) may allocate a slightly larger CPU set than " "requested (because CPU sets are implemented as bit masks allocated in units " "of I). Consequently, B() can set bits " "beyond the requested allocation size, because the kernel sees a few " "additional bits. Therefore, the caller should iterate over the bits in the " "returned set, counting those which are set, and stop upon reaching the value " "returned by B(3) (rather than iterating over the number of bits " "requested to be allocated)." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The program below creates a child process. The parent and child then each " "assign themselves to a specified CPU and execute identical loops that " "consume some CPU time. Before terminating, the parent waits for the child " "to complete. The program takes three command-line arguments: the CPU number " "for the parent, the CPU number for the child, and the number of loop " "iterations that both processes should perform." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "As the sample runs below demonstrate, the amount of real and CPU time " "consumed when running the program will depend on intra-core caching effects " "and whether the processes are using the same CPU." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "We first employ B(1) to determine that this (x86) system has two " "cores, each with two CPUs:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "$ B\n" "Thread(s) per core: 2\n" "Core(s) per socket: 2\n" "Socket(s): 1\n" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "We then time the operation of the example program for three cases: both " "processes running on the same CPU; both processes running on different CPUs " "on the same core; and both processes running on different CPUs on different " "cores." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "$ B