Главная » 2017 » Ноябрь » 19 » man 2 getcpu
22:13
man 2 getcpu

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


getcpu - определяет ЦП и узел NUMA, на котором выполняется вызывающая нить



ОБЗОР


#include <linux/getcpu.h>

int getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *tcache);

Замечание: в glibc нет обёрточной функции для данного системного вызова; смотрите
ЗАМЕЧАНИЯ.



ОПИСАНИЕ


Системный вызов getcpu() определяет процессор и узел, на котором вызывающая нить
или процесс выполняются в данный момент и записывает их в виде целых чисел в
память, на которую указывают аргументы cpu и node. Процессор представляется в виде
уникального малого целого числа, закреплённого за определённым ЦП. Узел
представляется в виде уникального идентификатора, закреплённого за определённым
узлом NUMA. Если значение cpu или node равно NULL, то по соответствующему
указателю ничего не записывается.

Третий аргумент этого системного вызова в настоящее время не используется и
указываться как NULL, не требуется переносимость на Linux 2.6.23 или более младшие
версии (смотрите ЗАМЕЧАНИЯ).

Информация, помещаемая в cpu, будет находиться там только на время вызова: unless
the CPU affinity has been fixed using sched_setaffinity(2), the kernel might
change the CPU at any time. (Normally this does not happen because the scheduler
tries to minimize movements between CPUs to keep caches hot, but it is possible.)
Достоверность информации, помещаемой в cpu, гарантируется только на момент
вызова: если привязка ЦП не была изменена с помощью sched_setaffinity(2), то ядро
может сменить ЦП в любой момент (обычно этого не происходит, так как планировщик
пытается минимизировать перемещения задач между процессорами для поддержания
актуальности кэша,но всё же это возможно). Вызывающий должен быть готов к
ситуации, что информация, возвращённая в cpu и node, может потерять актуальность
уже после возврата из вызова.



ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ


При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno
устанавливается в соответствующее значение.



ОШИБКИ


EFAULT Аргументы указывают за пределы адресного пространства вызывающего процесса.



ВЕРСИИ


Вызов getcpu() был добавлен в ядро 2.6.19 для x86-64 и i386.



СООТВЕТСТВИЕ СТАНДАРТАМ


Вызов getcpu() есть только в Linux.



ЗАМЕЧАНИЯ


Linux старается выполнить данный вызов как можно быстрее. Предназначение getcpu()
— позволить программам оптимизировать обработку данных на разных ЦП или выполнить
оптимизации NUMA.

В glibc нет обёртки для данного системного вызова; выполняйте его с помощью
syscall(2); или используйте вместо него sched_getcpu(3).



СМОТРИТЕ ТАКЖЕ


mbind(2), sched_setaffinity(2), set_mempolicy(2), sched_getcpu(3), cpuset(7),
vdso(7)



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 629 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar