Estou postando isso aqui porque o que descobri sobre o assunto está desatualizado, incompleto ou inadequado por diversos motivos.
Há muito tempo eu queria aprender como mapear vCPUs específicas para uma VM específica (que precisa do máximo desempenho de CPU possível e do menor bloqueio de CPU/switches de contexto possíveis), enquanto no mesmo nó existem outras VMs que não podem acessar os núcleos fixados (eles precisam ser acessíveis apenas à VM específica) e cuja alocação de CPU é feita pelo agendador como "por padrão".
Meu sistema atual de escolha é o Proxmox (usando apenas KVM), geralmente a versão mais recente no branch pvetest e o kernel 3.X mais recente.
Para minhas necessidades específicas, em vez de aprender como fazer isso em meu sistema atual, consideraria mudar para outros sistemas ou até mesmo hipervisores que permitam gerenciamento avançado de alocação de CPU para VMs. Meu orçamento para soluções pagas é quase nenhum, não excluindo todas elas desde o início, mas devem ser muito baratas para serem consideradas.
Muito obrigado antecipadamente e espero que as (muitas possíveis) respostas sejam úteis para muitas outras pessoas.
Este recurso pode ser útil para usuários/administradores de hosts de virtualização (por qualquer motivo, no meu caso porque eu uso sistemas operacionais diferentes) onde a maioria das VMs precisa de baixo tempo de CPU, mas há uma (ou algumas) que precisa de alto tempo de CPU garantido.
Responder1
Parece que o proxmox já tem algumas opções semelhantes.
https://forum.proxmox.com/threads/numa-config-option.21313/
Sim, fará uso de fixação de CPU (afinidade). Entendo que a ativação do NUMA alterará o algoritmo de agendamento de forma que ele agora esteja ciente dos nós NUMA na CPU física subjacente. Assim, tentaremos manter o agendamento de vCPU dentro do mesmo nó NUMA sempre que possível.