CPU Affinity em processadores ARM

2

Estou usando algumas placas RaspberryPI para um sistema de aquisição de dados. Eles são bons conselhos, com bastante apoio da comunidade, mas são muito lentos. Estou pensando em substituí-los gradualmente com placas multicore ODROID , com os processadores Samsung Exynos.

Eu tenho alguma experiência usando o taskset para definir a afinidade de CPU em meus servidores, pois estou sempre executando aplicativos Node.js que são, por definição, segmentados em uma única linha.

Agora, é possível fazer isso em uma placa ARM? Eu não vejo por que isso não aconteceria em teoria, mas tenho dúvidas sobre o quão bem isso vai funcionar.

Alguém tem experiência com esse tipo de hack? Além disso, gostaria de receber quaisquer comentários sobre CPUs ARM e como eles diferem do x86.

    
por dsljanus 28.10.2013 / 13:28

2 respostas

1

Sim, é possível.
taskset é uma função de nível de sistema operacional: não importa qual arquitetura de CPU você está usando (dentro da razão), você está apenas dizendo o kernel onde ele pode e não pode executar as coisas.

As diferenças entre ARM e x86 são praticamente irrelevantes aqui, então eu não vou entrar neles em qualquer nível de detalhe (embora você deva estar ciente deles e suas implicações para o seu caso de uso particular - este é um projeto de pesquisa para você no seu tempo livre).

Não, você não deve fazer isso.
Não tente enganar o agendador.
O agendador é mais esperto do que você imagina.
Na maioria dos casos, o agendador é mais inteligente do que você.

O planejador foi projetado por pessoas que entendem completamente os componentes internos do sistema operacional. Essas pessoas têm muita experiência no mundo real, otimizando sistemas, e eles despejaram essa experiência (junto com pouca quantidade de sangue, suor, lágrimas e profanidade) no algoritmo de agendamento do seu sistema operacional.

Como David disse , usando taskset ou outras ferramentas para < em> manualmente força a afinidade (ou qualquer outra configuração do agendador) pode fazer sentido se e somente se você souber por um fato que sua situação é "especial" e o agendador fará a Coisa Errada se for deixado para seus próprios dispositivos.
Estas são ferramentas cirúrgicas projetadas para conjuntos de circunstâncias muito específicos e muito restritos. Usar as ferramentas incorretamente acabará matando pessoas prejudicando o desempenho.

    
por 29.10.2013 / 16:08
2

because I am always running Node.js applications that are by definition single threaded

erm .... não tenho certeza de taskset é realmente a solução ideal. Certamente, há uma vantagem em manter uma tarefa associada ao mesmo cache l2 - se você estiver usando o CFS, definir um valor mais alto para sched_migration_cost pode ser mais apropriado.

AFAIK não deve haver diferença entre os chips ARM e Intel para o conjunto de tarefas (ou outro material de programação, com a exceção óbvia do hyper-threading). Mas eu não brinquei com o hacking de ARMs multi-core.

    
por 28.10.2013 / 13:37

Tags