Cum să atribuiți nucleele procesorului cu setul de activități în Linux

Como atribuir núcleos de CPU com Taskset no Linux

⌛ Reading Time: 4 minutes

O processamento de vários núcleos pode ter vantagens e desvantagens e, às vezes, você precisa atribuir manualmente núcleos de CPU a programas (também conhecido como “afinidade de CPU”) para obter o melhor desempenho. No Linux, a ferramenta principal é conjunto de tarefas. Isso parece potencialmente assustador, mas vamos dividi-lo em etapas fáceis para simplificar o processo.

Noções básicas do conjunto de tarefas

O uso do conjunto de tarefas pode ser dividido em duas partes: afinidade da CPU com programas a serem executados e com programas já em execução. Iniciar programas é o mais fácil dos dois, então começaremos por aí. Um comando de inicialização tem a seguinte aparência:

Antes de inserir o número do núcleo da CPU que deseja atribuir, não se esqueça de que um esquema de numeração Unix normalmente começa em 0, portanto, seu primeiro núcleo será 0, o segundo será 1 e assim por diante. Assim, uma máquina dual-core terá núcleos 0 e 1, e uma máquina quad-core terá núcleos 0, 1, 2 e 3.

Digamos que você deseja executar o Audacity em um sistema dual-core e deseja executá-lo em seu segundo núcleo. Esse comando seria:

Usando múltiplos núcleos

Em uma de nossas máquinas, o Chrome às vezes perdia quadros durante o streaming de vídeo, mas se comportava quando atribuído a dois núcleos. Se você quiser tentar a mesma coisa em um sistema quad-core e desejar atribuir o Chrome aos núcleos três e quatro, o comando seria:

Você não precisa atribuir afinidade de CPU a núcleos sequenciais – você pode escolher qualquer núcleo (s) aleatoriamente. Digamos que você tenha uma máquina de seis núcleos e queira usar o Chrome nos núcleos dois e seis. Você digitaria o comando:

Você também pode usar um traço para espalhar um aplicativo por vários núcleos. Por exemplo, muitos programas mais antigos ou funções do sistema serão padronizados em seu primeiro núcleo. E se você quisesse deixar o primeiro núcleo o mais livre possível enquanto espalha um grande aplicativo por todos os outros núcleos?

Digamos que você tenha um sistema de oito núcleos e deseja executar o Steam do segundo ao oitavo. Esse comando seria:

Mudança de afinidade para um programa que já foi lançado

O Taskset não se limita simplesmente a iniciar aplicativos. Você também pode alterar a afinidade da CPU para um programa que já está em execução. No entanto, antes de alterar a afinidade de um aplicativo, você primeiro precisa saber seu ID de processo (ou PID para abreviar).

Para descobrir o PID do seu aplicativo, você pode tentar usar o monitor do sistema do seu desktop, mas a maneira mais rápida é apenas usar top. Sem surpresa, ele usa o comando:

Os nomes de todos os comandos em execução estão no lado direito da tela. Os IDs de processo correspondentes estão à esquerda.

Anote seu PID, pois você o usará em alguns instantes. Neste exemplo, usaremos o VLC, que está reproduzindo um vídeo Matroska de alta definição em um PC antigo com seis núcleos. Estamos experimentando diferentes afinidades de CPU para obter o melhor desempenho do VLC.

Para alterar a afinidade de um processo existente, a sintaxe se parece com esta:

Se você pode ver nossa captura de tela acima, o ID do processo do VLC é 20485. Vamos tentar executar o VLC no quarto, quinto e sexto núcleos, que na numeração Unix será 3-5. Depois de tudo isso, o comando será:

Mas e se você quiser verificar a afinidade existente antes de alterá-la? Para isso, não insira nenhum número de núcleo e o conjunto de tarefas dirá como a afinidade é atribuída. Portanto, se alterarmos o último comando para:

isso nos mostra que o VLC está espalhado por todos os núcleos.

Conjunto de tarefas para encontrar afinidade

Vamos tentar novamente com um programa diferente. Digamos que rodemos um grande Matroska com SMPlayer, e o SMPlayer já foi lançado. Top diz que o PID é 16058.

Top Smplayer do Taskset

Mas primeiro queremos saber sua afinidade existente. Usando o comando com o -cp mudar, mas sem números de núcleo, podemos ver que a afinidade está atualmente espalhada por todos os núcleos.

Afinidade do Smplayer do Taskset

Agora podemos tentar espalhar o SMPlayer pelos mesmos três núcleos do experimento VLC com o comando:

Isso é fácil, não é? Se você está procurando um benchmark de seu PC, confira nosso guia em 8 ferramentas úteis para testar sua CPU.

Relacionado:

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.