CPU nicht voll auslasten?

Hallo wieder einmal :)

Ich habe mir gerade die Frage gestellt, wie ich ein Perl Script ausführen kann, so dass es nicht 99% der CPU Leistung braucht und ich damit ein Load von >1 bekomme. Das Perl Script generiert verschiedene Statistiken und führt Wartungs und Backupaufgaben durch und braucht dadurch auch einige Minuten bis es fertig ist. Ich will jedoch vermeiden, dass der Server in dieser Zeit eine so enorme Auslastung hat. Das Script mit einem Nice Level von 19 auszuführen brachte leider nichts, es hat damit zwar keine Priorität mehr, aber es braucht immer noch 99% CPU Leistung.

Das einzige was ich zu diesem Thema sonst noch fand sind Limits, die ich in /etc/security/limits.conf setzen könnte. Jedoch sehe ich dabei nur eine Begrenzung der CPU Zeit und das wäre nicht das was ich brauche, denn das Script soll auf keinen Fall einfach gekillt werden.

Ich suche also eine Lösung um bestimmte Programme oder alles von einem Benutzer mit z.B. max. 25% CPU Auslastung ausführen zu können. Gibt es dafür noch andere Lösung außer einfach einmal sleep() mehrfach ins Perl Script zu schreiben oder eine eigene VMWare o.ä. wo zu installieren? Das ganze sollte auf einem vServer realisierbar sein ;)

Danke schon im Voraus für eure Antworten. Ich hoffe, dass ich mich verständlich ausgedrückt habe, falls nicht - einfach nachfragen :)


MfG Christian
 
Englisch ist leider nicht meine Stärke, da habe ich wohl einfach die falschen Suchbegriffe verwendet :o
Danke für den Link, werde ich einmal testen :)

EDIT: Das Programm cpulimit meldet immer nur Speicherzugriffsfehler :(
Und twar genau bei der C Codezeile perclimit=atoi(optarg);

EDIT2: Version 1.0 funktioniert jedoch, werde morgen einmal versuchen den Source Code selbst anzupassen, um den Fehler zu bereinigen...


MfG Christian
 
Last edited by a moderator:
Ein einfaches nice sollte doch reichen...
Ansonsten ein paar sleep() o.ä. einstreuen.

Lass es sich doch 99% genehmigen, wenn das System ansonsten doch nur zu 99% im Leerlauf trampeln würde.
 
Oder einfach die Prirität mit nice ändern. So hat das Script die max Power, gibt sie aber frei, wenn ein anderes Programm diese Power braucht. Dürfte das einfachste sein. Und wenn das Script trotz nice die gesamte Leistung zieht, dann heisst das nicht, dass nice nicht geht, sondern dass dein Server absolut nichts zu tun hat :-)
 
Wenn alles nichts hilft: Bauste halt in das Auswertungsscript ein paar Wartezyklen ein, dürfte nicht das Problem sein :)
 
Danke für eure Antworten und Tipps :)
Ich hatte mir gestern einmal die aktuellste CVS Version von cpulimit heruntergeladen und diese funktioniert ohne Probleme. Entweder waren die Dateien im Downloadpaket beschädigt oder es handelte sich wirklich um einen Bug. Mit der neuesten CVS Version gabs jedenfalls keine Probleme mehr, das Programm ist echt ein Geheimtipp :D

btw: Hat seinen Grund, warum es nicht die volle Leistung verwenden soll, auch wenn sie verfügbar wäre ;)
Sonst hätte ich eh einfach nice genommen...



MfG Christian
 
Back
Top