
Estou usando o Ubuntu Server Edition 11.10 e tenho dois programas extremamente intensivos em CPU rodando no mesmo núcleo. Nenhum desses processos foi programado para processamento multinúcleo. Existe uma maneira de dizer ao processo A para ser executado no Core 1 e ao processo B para ser executado no Core 2?
Responder1
A resposta aceita pode ser um bom conselho, mas certamente não é uma resposta à sua pergunta. Sua pergunta também não indica que você não esteja qualificado para ouvir a resposta; na verdade, parece um bom exemplo de situação em que você gostaria de indicar especificamente quais processadores devem fazer o quê.
Indo direto ao ponto, o que você quer são conjuntos de CPU. Eles são suportados no Ubuntu 11.10, pois ele usa um kernel Linux recente o suficiente. Acredito que o Linux 2.6 seja necessário.
Você pode ler a página de manual do cpuset aqui:http://www.kernel.org/doc/man-pages/online/pages/man7/cpuset.7.html
Aqui está outra página para leitura geral:http://www.bullopensource.org/cpuset/
O Linux pode ser “ótimo” para decidir como alocar o tempo de CPU, mas não é perfeito.
Responder2
Espero que isso não pareça rude, mas se você fizer essa pergunta, nem deveria considerá-la. Essa é uma daquelas coisas que o Linux é muito bom em descobrir sozinho. Se você fizesse isso, provavelmente teria um impacto muito negativo no desempenho. Mesmo que o programa não seja projetado para usar mais processadores, o Linux irá movê-los para núcleos diferentes conforme necessário. O programa não notará.
Você pode querer dar a ambos nice
valores baixos com o nice
comando para dar-lhes prioridades mais altas.