Linux x86_64Escalonamento#203
sched_setaffinity
Define a máscara de afinidade de CPU de um processo, restringindo em quais CPUs ele pode ser executado.
Descrição
Fixa (pin) um processo/thread a um subconjunto de CPUs, técnica usada para reduzir cache misses e jitter em cargas sensíveis a latência, ou para particionar CPUs entre workloads.
Header:
sched.hman 2Assinatura
int sched_setaffinity(pid_t pid, size_t cpusetsize, const cpu_set_t * mask);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| pid | pid_t | PID alvo; 0 significa o chamador. |
| cpusetsize | size_t | Tamanho em bytes da máscara `mask`. |
| mask | const cpu_set_t * | Conjunto de CPUs permitidas. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | pidpid_t |
| rsi | argumento 2 | cpusetsizesize_t |
| rdx | argumento 3 | maskconst cpu_set_t * |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EFAULT(14)
- Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
- EINVAL(22)
- Argumento inválido.
- EPERM(1)
- Operação não permitida (falta de privilégio).
- ESRCH(3)
- Processo inexistente.