Linux x86_64Memória#237
mbind
Define a política de alocação NUMA (Non-Uniform Memory Access) para uma região de memória.
Descrição
Em máquinas com múltiplos nós NUMA, controla de qual nó de memória física as páginas dessa região devem ser alocadas — crítico para desempenho em bancos de dados e cargas de alto desempenho sensíveis à localidade de memória.
Header:
numaif.hman 2Assinatura
long mbind(
void * addr,
unsigned long len,
int mode,
const unsigned long * nodemask,
unsigned long maxnode,
unsigned int flags
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| addr | void * | Início da região, alinhado ao tamanho de página. |
| len | unsigned long | Tamanho da região. |
| mode | int | MPOL_DEFAULT, MPOL_BIND, MPOL_INTERLEAVE, MPOL_PREFERRED, etc. |
| nodemask | const unsigned long * | Máscara de bits dos nós NUMA elegíveis. |
| maxnode | unsigned long | Número de bits válidos em `nodemask`. |
| flags | unsigned int | MPOL_MF_STRICT, MPOL_MF_MOVE, MPOL_MF_MOVE_ALL. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | addrvoid * |
| rsi | argumento 2 | lenunsigned long |
| rdx | argumento 3 | modeint |
| r10 | argumento 4 | nodemaskconst unsigned long * |
| r8 | argumento 5 | maxnodeunsigned long |
| r9 | argumento 6 | flagsunsigned int |
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.
- EIO(5)
- Erro de E/S físico.
- ENOMEM(12)
- Memória insuficiente para completar a operação.