Hyper Threading e Prioridade de Processo

2

Existem métodos (opções de kernel do Linux, configurações de sysctl ou módulos de agendador configuráveis) que podem fazer com que um processo / thread de alta prioridade seja executado em um núcleo de processador físico com o segundo núcleo virtual (hyper-threading) não programado para maximizar desempenho de thread (evitando situações competitivas, não compartilhando o cache L1 e o possível uso do clock máximo da cpu - Turbo Boost), enquanto executa processos / threads de baixa prioridade em ambos os núcleos virtuais de outros núcleos físicos com clock cpu menor para maximizar o rendimento total do sistema?

Em outras palavras: é possível desativar o hyper-threading dinamicamente com base na prioridade?

Caso haja alguma CPU usando a prioridade de processo / encadeamento para decidir qual dos dois encadeamentos em um núcleo de encadeamento ativo pode progredir primeiro em uma situação competitiva, o kernel do linux pode programar processos / encadeamentos de alta prioridade? de tal forma que eles compartilham o núcleo físico apenas com processos / threads de prioridade muito baixa, a fim de minimizar seu efeito sobre o outro segmento?

Enquanto o processo de alta prioridade está inativo, os núcleos virtuais de seu antigo núcleo físico devem se tornar novamente disponíveis para processos de prioridade mais baixa, o que torna inadequado usar taskset para excluir um núcleo físico da máscara de afinidade de CPU de todos os outros processos.

    
por Juergen 24.08.2017 / 14:50

0 respostas