Eu não tenho uma resposta para sua pergunta, mas pelo menos posso aliviar sua dor.
Se você iniciar cada VM a partir da linha de comando, por exemplo, como
VBoxManage startvm Name_of_VM --type headless
o comando top com a opção -c
exibirá também o comando completo que iniciou o processo. Desta forma, você pode identificar imediatamente o processo culpado, e matá-lo com a opção k
dentro do próprio top
(você terá que fornecer o número do processo que você quer matar, que você acabou de identificar).
O bom é , isso funciona mesmo se você iniciar todas as suas VMs a partir da GUI, não da CLI.
EDITAR:
Pensando bem, talvez eu saiba a resposta para sua pergunta. Eu não tenho certeza se isso é realmente o que você está procurando, neste caso pls apenas me diga isso.
O utilitário Linux para confinar a execução de um processo a um núcleo pré-especificado é taskset
. Você deve tê-lo por padrão, se não verificar o pacote util-linux
. Você pode exibir o processo afinidade ( isto é, , a lista de CPUs em que é permitido executar) por meio de
taskset -cp Process_ID
(o sinal p
especifica que o que segue é um número de processo, o c
sinalizador substitui uma cadeia de caracteres pela representação hexadecimal dos núcleos da CPU que seria o padrão).
Você pode atribuir um processo já em execução para ser executado apenas nos núcleos 0 e 1, por exemplo, por meio de
taskset -cp 0,1 Process_ID
ou inicie um novo programa no núcleo 0 somente por meio de:
taskset -c 0 VBoxManage startvm Name_of_VM --type headless
Duas ressalvas: primeiro, o fato de você ter confinado o processo para rodar em uma única CPU não significa que será o único processo em execução: todos os processos cuja afinidade inclui essa CPU serão executados, por alguma fração da CPU. tempo, sobre ele. Se você quiser reservar uma determinada CPU para o uso exclusivo de um processo que você define com taskset
, você terá que usar o parâmetro isolcpus
que Isola a CPU dada pelo agendador do kernel . Basta adicionar o parâmetro isolcpus = [cpu_number] à linha de comando do kernel do Linux para o gerenciador de inicialização.
Além disso, você deve ser avisado que limitar um processo a uma única CPU não precisa ser o total solution
que você parece pensar. As CPUs usam periféricos de qualquer tipo e, sob certas circunstâncias, podem ficar paralisados porque o periférico em questão fica indisponível, o que faz com que a CPU faça um loop em suas solicitações, e o barramento e talvez o periférico ficam sobrecarregados com as solicitações. Um exemplo? Eu uso o controlador Sonos em execução no Wine; quando eu ativo uma VPN, ela se desconecta de sua base na Califórnia e continua inundando meu sistema com solicitações de rede. Isso não tem nada a ver com o confinamento de uma única CPU.