Pergunta

Eu estou rodando em um servidor * NIX compartilhada (dirigido por Site5). Eu tenho um script php que é executado em segundo plano, ocasionalmente, fazer alguns cálculos off-line. Ele utiliza cerca de 100% da CPU enquanto ele é executado. Eu tentei agradável-ing-lo, como este:

nice -n 19 php script.php

mas isso não parece fazer qualquer diferença.

Foi útil?

Solução

Você poderia dispersão usleep (int $ micro_seconds) através de seu código. Isto irá forçar o seu script para parada para pequenas quantidades de tempo deixando a CPU livre para outras coisas.

será isso que é necessário? Se você script tem uma baixa prioridade, importa que ele está usando 100% da CPU ... Se outros processos com uma maior prioridade necessária a CPU que não iria ficar o tempo que for necessário e seu script ficando o restante (até 100%)?

Outras dicas

Mesmo niced, ele vai usar 100% da CPU, se disponível. No entanto, o kernel irá dar prioridade a quaisquer outros processos (não-niced) que vêm junto.

Enquanto o sistema é sensível, e você é capaz de conseguir outro trabalho feito enquanto ele está funcionando, eu não me preocuparia com isso. Eu corro um computação distribuída cliente em meus sistemas, e que absorve quaisquer ciclos de CPU disponíveis. Como é executado com a prioridade mais baixa, todos e quaisquer outros processos vai antecipar-lo conforme necessário.

Como o processo é fundo, e usa 100% da CPU parece que o processo está vinculado à CPU. É fundo assim que o usuário obrigado não seria de esperar, então a única alternativa seria IO bound. Se o seu processo não deve realmente interessante IO, o próprio script seria esperado para ser vinculado à CPU, e não apenas buggy.

Processos irá sempre tentar ir o mais rápido possível. Se eles são IO ligados, eles vão usar 100% IO, se eles estão vinculados à CPU, eles vão tentar usar 100% da CPU. Corretamente programadores processo escrito apontar automaticamente para proporcionar uma sensação de justiça para todos os processos, o que significa que os processos maiores têm prioridade mais baixa. Você pode baixar ainda mais a prioridade com agradável. O fato de que o uso da CPU ainda é cerca de 100% significa que não existem outros processos que estão atualmente vinculado à CPU, mas é mais provável de espera para a entrada da rede.

Nice muda a forma como muitas vezes os resultados php em 100% da CPU, se existem processos consideráveis ??para context-switch, não quanto.

O momento em que um programa executa uma chamada de sistema, o kernel pode ceder a CPU para outro processo antes de fazer o trabalho real. Seu php não parece fazer qualquer chamada de sistema quando ele está correndo a toda velocidade. Isto é, você não está fazendo nenhum bloqueio de I / Os (soquete, arquivo, etc.) Veja se algum bloco de código é preso na movimentada em espera.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top