Domanda

Sono in esecuzione su un server condiviso NIX * (gestito da Site5). Ho uno script PHP che viene eseguito in background di tanto in tanto a fare qualche calcolo non in linea. Esso utilizza circa il 100% della CPU durante l'esecuzione. Ho provato bello-ing esso, in questo modo:

nice -n 19 php script.php

, ma che non sembra fare alcuna differenza.

È stato utile?

Soluzione

Si potrebbe spargere usleep (int $ micro_seconds) attraverso il vostro codice. Questo costringerà lo script di fermarsi per piccole quantità di tempo lasciando la CPU libera per altre cose.

Sara 'necessaria però? Se lo script ha una bassa priorità, importa che sta utilizzando il 100% della CPU ... Se altri processi con una priorità più alta necessaria la CPU non ottengono il tempo di cui avevano bisogno e lo script di ottenere il resto (fino a 100%)?

Altri suggerimenti

Anche niced, si userà il 100% della CPU, se disponibile. Tuttavia, il kernel darà priorità a qualsiasi altro (non niced) i processi che vengono insieme.

Fino a quando il sistema è reattivo, e siete in grado di ottenere un altro lavoro fatto mentre è in esecuzione, non mi preoccuperei su di esso. Ho eseguito una distribuita client computing sui miei sistemi, e assorbe eventuali cicli di CPU disponibili. Dal momento che viene eseguito con la priorità più bassa, qualsiasi e tutti gli altri processi saranno prevenire in base alle esigenze.

Per quanto il processo è sfondo, e utilizza il 100% della CPU sembra che il processo è cpu bound. Si tratta di background in modo utente legato non sarebbe previsto, quindi l'unica alternativa sarebbe IO legato. Se il processo non dovrebbe davvero fare interessante IO, lo script stesso ci si aspetterebbe di essere CPU bound, e non solo buggy.

I processi saranno sempre cercare di andare il più velocemente possibile. Se sono IO vincolati, useranno il 100% IO, se sono legato CPU, cercheranno di utilizzare il 100% della CPU. scheduler elaborare correttamente scritti mirano automaticamente per fornire un senso di equità a tutti i processi, il che significa che i processi più grandi hanno la priorità più bassa. È possibile ridurre ulteriormente la priorità con bella. Il fatto che l'utilizzo della CPU è ancora circa 100% significa che non ci sono altri processi che sono attualmente CPU bound, ma sono molto probabilmente in attesa di input dalla rete.

Nizza modifiche quanto spesso i risultati in php 100% della CPU, se ci sono notevoli processi di context-switch, non quanto.

Nel momento in cui un programma esegue una chiamata di sistema, il kernel può cedere la CPU a un altro processo prima di fare il lavoro vero e proprio. Il tuo PHP non sembra fare alcuna chiamata di sistema quando è in esecuzione piena velocità. Cioè, non stai facendo alcun blocco I / O (socket, file e così via) Vedi eventuale blocco di codice è bloccato in busy-attesa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top