Question

Je suis en cours d'exécution sur un serveur partagé * NIX (géré par Site5). J'ai un script php qui fonctionne en arrière-plan faisant parfois quelques calculs hors ligne. Il utilise environ 100% du CPU pendant qu'il fonctionne. J'ai essayé belle-ing, comme ceci:

nice -n 19 php script.php

mais cela ne semble pas faire de différence.

Était-ce utile?

La solution

Vous pouvez disperser usleep (int micro_seconds de $) dans votre code. Cela forcera votre script à arrêter pour de petites quantités de temps en laissant le CPU libre pour d'autres choses.

Est-ce que nécessaire si? Si vous script a une faible priorité, est-ce que la matière qu'il utilise 100% de la CPU ... Si d'autres processus avec une priorité plus élevée avaient besoin de la CPU ne ils obtiennent le temps dont ils ont besoin et votre script obtenir le reste (jusqu'à 100%)?

Autres conseils

Même NICED, il utilisera 100% du CPU si disponible. Cependant, le noyau donnera la priorité à tout autre processus (non NICED) qui viennent.

Tant que le système est sensible, et vous êtes en mesure de faire un autre travail pendant qu'il est en cours d'exécution, je ne vous inquiétez pas. Je lance un client calcul distribué sur mes systèmes, et il absorbe les cycles de CPU disponibles. Comme il fonctionne avec la priorité la plus basse, tout et tous les autres processus seront préempter au besoin.

En tant que votre processus est arrière-plan, et utilise 100% du processeur, il semble que le processus est lié cpu. Il est donc fond ne serait pas attendu lié utilisateur, de sorte que la seule alternative serait IO lié. Si votre processus ne devrait pas vraiment faire IO intéressant, le script lui-même serait censé être lié CPU, et pas seulement buggy.

Les processus essaieront toujours d'aller aussi vite que possible. S'ils sont liés IO, ils utiliseront 100% IO, s'ils sont liés CPU, ils vont essayer d'utiliser 100% du CPU. visent automatiquement ordonnanceurs traiter correctement écrit pour fournir un sentiment d'équité à tous les processus, ce qui signifie que les plus grands processus ont la priorité inférieure. Vous pouvez encore réduire la priorité avec une belle. Le fait que l'utilisation du cpu est encore à 100% signifie qu'il n'y a pas d'autres processus qui sont actuellement liés CPU, mais attendent le plus probable pour l'entrée du réseau.

Nice changements à quelle fréquence vos résultats php dans 100% du CPU, il existe des processus importants au contexte commutateur, pas à quel point.

Le moment un programme exécute un appel système, le noyau peut donner la CPU à un autre processus avant de faire le vrai travail. Votre php ne semble pas faire un appel du système quand il tourne à plein régime. Autrement dit, vous ne faites pas de blocage E / S (socket, fichier, etc.) Voir si un bloc de code est bloqué en attente occupé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top