2009-11-26 5 views
0

est-il possible de forcer un script ruby ​​à utiliser jusqu'à une certaine quantité de CPU et de mémoire.possible de forcer, un script pour utiliser certaine quantité de CPU et de mémoire?

Je ne veux pas que le script soit tué quand il dépasse ce montant spécifié. Je veux juste qu'il fonctionne dans les limites données.

EDIT:

oui son une boucle récursive sans fin qui semble utiliser beaucoup de CPU. J'ai remarqué que faire return à la fin de chaque récursion provoque cela. après que je l'enlève, cette utilisation élevée de cpu est allée. Que puis-je utiliser pour terminer la boucle? Sortie ?

+0

Quelle est votre contrainte réelle? Y a-t-il d'autres tâches qui seront exécutées et concurrenceront pour les ressources? Quelles sont leurs exigences? – Novelocrat

+0

L'utilisation du processeur atteint 100% et les plantages de script. – ncvncvn

+1

L'utilisation de l'UC n'entraînerait pas le blocage du script. Il semble que le problème est en fait avec votre script; Puisque vous dites que c'est récursif, je dirais que vous débordez probablement la pile. Y at-il un message d'erreur lorsque le script se bloque? – Kieron

Répondre

2

Oui, l'appel d'une fonction de veille dans la plupart des systèmes de programmation (ruby inclus) provoquera l'attente du programme pendant ce laps de temps, en utilisant peu ou pas de puissance CPU. Alternativement, vous pouvez exécuter votre programme à une priorité inférieure (dans les systèmes * nix, ceci est fait avec nice ou renice).

0

Cela dépend vraiment de ce que vous faites dans votre script. S'il s'agit d'une sorte de boucle sans fin, vous ne faites que «hiberner» votre script et laisser passer moins de temps de traitement.

En résumé, "dormir" n'est pas une solution particulièrement propre ou appropriée. Il serait utile si vous avez posté des détails sur exactement ce que fait votre script, typiquement il y aurait une solution beaucoup plus raisonnable disponible.

1

sleep dormira le thread actuel pendant un certain temps. Votre charge de processeur tombe en panne car votre programme ne fait rien pendant ce temps. Le noyau devrait gérer en s'assurant que votre CPU dispose de suffisamment de temps pour tous les programmes en cours d'exécution.

0

Vous ne devriez presque jamais avoir besoin de faire cela. Pourquoi perdriez-vous ce temps à ne rien faire? Il n'y a rien de mal à ce que la CPU soit très utilisée. il n'a pas besoin de se reposer. Si plusieurs processus sont en cours d'exécution, le système d'exploitation gère la division du temps CPU entre eux.

Questions connexes