A execução de grandes cálculos faz com que meu computador fique atrasado

0

Estou executando um programa em Java que escrevi que chama Gurobi (um software de otimização para programas lineares). Quando estou executando um programa grande que leva ~ 20 horas para ser concluído, até tarefas simples (por exemplo, abrir uma nova guia no Google Chrome) levam de cinco a dez segundos. O programa java que eu escrevi é um aplicativo único, mas Gurobi usa múltiplos núcleos. Meu computador é um iMac executando o OS X 10.7, que tem 4 núcleos de CPU.

Gostaria de poder executar grandes cálculos enquanto ainda é capaz de fazer um trabalho normal no computador.

Perguntas:

  1. Como faço para verificar qual é o gargalo: a CPU ou a memória?
  2. É possível fazer o java rodar usando uma única CPU, para que o computador não diminua drasticamente?
  3. Como reduzo o impacto dos grandes cálculos na usabilidade normal do computador?

Atualização: Consegui que os grandes cálculos fossem executados sem problemas em segundo plano dizendo a Gurobi para usar apenas um único núcleo de CPU, e usando nice para dar baixa prioridade.

    
por I Like to Code 17.09.2014 / 17:47

2 respostas

2

Antes de mais nada, determine qual é o problema. É, na verdade, um problema em que Java / Gurobi rouba a CPU, ou a CPU está boa e usa quase toda a memória? Ou é limite de E / S?

Se estiver ligado à CPU, verifique os comandos unix " nice "e" renice " ou defina a afinidade da CPU .

Se usar toda a memória, tente configurar o Java para usar menos (ou compre mais RAM). (Veja este post no site da irmã sobre como fazer isso).

Se estiver vinculado a E / S, forneça seu próprio disco (por exemplo, armazene os dados em um segundo HDD ou em um pen drive), acelere o acesso ao disco (por exemplo, usando um SSD) ou configure de alguma forma Prioridade de E / S. Eu não tenho idéia de como fazer o último no OSX.

    
por 17.09.2014 / 18:25
1

Primeiro, você deve determinar qual é o gargalo, pode usar o Monitor de atividade do sistema operacional para analisar o uso de recursos do sistema e, com sorte, determinar o que está maximizando seu uso e causando a lentidão.

Para reduzir o uso da CPU, existe um programa no OS X chamado nice , que permite definir a prioridade de agendamento para o processo. Tente ligar para Gurobi com o comando:

nice -n 20 Gurobi

Onde Gurobi é o caminho para o executável do programa que você está tentando executar.

A configuração de -n 20 definirá o Gurobi como a prioridade de agendamento mais baixa possível no seu computador. Isso fará com que a execução demore mais, mas significará que outros processos serão mais responsivos. Você pode modificar o valor de -n para estar entre -20 e 20, onde 20 é a prioridade mais baixa e -20 é a mais alta, então ajuste-a conforme desejar.

    
por 17.09.2014 / 18:25

Tags