Quantos processos devo executar para ser o mais eficiente possível?

2

Aqui está a situação:

Estou processando imagens, transformando-as de tif para ecw e reprojetando-as.

O software que estou usando usa um processo e apenas um núcleo parece. Quando executo uma operação em lote, tudo o que vejo é 13% da CPU usada.

Minhas especificações são as seguintes:

i7 3770K 16 GB de ram 2 TB sata 7200 HD

O programa processa arquivo por arquivo e eu tenho cerca de um milhão de arquivos para transformar.

Para tentar ser mais eficiente, separei todos os arquivos em 8 pastas e executei as operações em lote separadamente. Dessa forma, eu sou capaz de atingir 100% da CPU.

Como cada processo também lê o arquivo e grava um novo, fiquei com medo de que a E / S possa ser um problema, mas pelo que entendi no gerenciador de tarefas, isso não é um problema? (não tenho certeza)

Minha pergunta é: esse é o melhor caminho a percorrer? Eu estou realmente me atrasando, executando 8 lotes ou devo correr ainda mais?

Obrigado.

att. gerenciador de tarefas:

    
por Enriquev 28.06.2013 / 19:35

2 respostas

3

Se o programa que você está usando não suporta nativamente multithreading, e apenas um único thread faz todo o trabalho (nesse caso, a conversão da imagem), então você veria aproximadamente 1 / 8 do seu processador sendo usado (ou 12,5%) na melhor das hipóteses.

De fato, se este for o caso, você pode obter um throughput muito mais alto gerando vários desses processos em paralelo, assumindo que eles não fazem muito E / S de disco (que é afetada pelo acesso a vários arquivos simultaneamente) - mas na captura de tela que você forneceu, parece que as tarefas são limitadas pela CPU e não são limitadas pelo disco; nenhum processo ultrapassa a taxa de leitura / gravação de 0,5 MB / s.

Apenas observe que, no seu caso particular, isso também fará com que o uso médio de RAM para o programa aumente em oito vezes, assim você pode ter que executar menos se o uso da memória se tornar um fator limitante. Se você achar que a experiência do seu sistema se torna muito lenta, você também pode definir os processos para serem executados em uma prioridade mais baixa.

    
por 28.06.2013 / 19:57
0

Olhando para esses gráficos, eu concordo com Aaron Miller que parece mais um gargalo da CPU do que um gargalo de IO. Eu diria para remover lotes para que você seja no máximo 90% utilizado na CPU, e você deve ser bom. A taxa de transferência na unidade parece boa, embora o tempo de resposta seja terrível, mas a única maneira de realmente ajudar é executar menos lotes ou dividir o trabalho em várias unidades (que você parece não ter).

    
por 28.06.2013 / 19:52