Question

J'ai écrit un script de traitement d'image en php qui est exécuté comme une tâche programmée cron (sous OSX). Pour éviter de surcharger le système, le script vérifie la charge du système (à l'aide de 'uptime') et ne s'exécute que lorsque la charge est inférieure à un seuil prédéfini.

Je l'ai maintenant transféré sous Windows (2003 Server) et je recherche une fonction de ligne de commande similaire pour signaler la charge du système sous forme d'entier ou de type flottant.

Était-ce utile?

La solution

Vous pouvez essayer ceci en ligne de commande Windows. Cela fonctionne dans XP, obtenez beaucoup d'autres informations aussi.

CPU wmic

Autres conseils

N'utilisez pas de charge ...

La charge du système n’est pas un bon indicateur dans ce cas. Sous Unix, cela vous indique essentiellement combien de processus sont prêts et attendent d'être exécutés pour le moment. Mais comme il existe de nombreuses raisons pour lesquelles un processus peut devoir attendre, votre script peut en réalité être capable de s'exécuter sans que cela ne coûte à un autre processus aucune performance, même si le paramètre "load" sur le système est élevé.

... utilisez bien

Vous devez utiliser nice (1) sous Unix et l'équivalent sous Windows ("Process Priority"), afin que le système d'exploitation puisse décider quand exécuter votre script!

Si vous définissez la priorité de votre script sur la priorité absolue la plus basse possible, le planificateur l'exécutera uniquement lorsqu'il n'y a rien d'autre à faire pour le moment.

Vous devrez probablement mettre en place un mécanisme permettant d'empêcher l'exécution simultanée de plusieurs instances de votre script, au cas où l'exécution de ce script prend plus de temps que l'intervalle entre les invocations ne dure.

Vous pouvez utiliser un utilitaire de ligne de commande appelé pv pour afficher le nom du processus. % d'utilisation du processeur sur une période donnée (500 ms par défaut) à l'aide de cette ligne de commande:

pve.exe -o"%n\t%c"

De l'aide est fournie pour utiliser le commutateur -? décrivant les paramètres disponibles.

Cela nécessitera un peu plus de travail que la disponibilité sur OSX / linux, car il vous faudrait additionner les nombres de la première colonne (ou omettre le nom du processus et simplement additionner la valeur de chaque ligne de sortie) pour obtenir le total. (en%) utilisation du processeur.

L'avantage, c'est qu'avec un peu plus de travail, vous pourriez obtenir la quantité spécifique de CPU utilisée par votre processus d'exécution, plutôt que la consommation globale de la CPU du système.

Les tests de performance WMI couvrent à peu près tout dans Windows, y compris la charge du système.

J'ai trouvé un sujet à ce sujet .

Utilisez simplement les API Win32 standard (GTC)

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