Apfelinsel
Mac-Software => Thema gestartet von: Sascha am Mai 05, 2008, 08:43:23
-
Für mein Studium benötige ich u.a. Lightwave 9.2, welches mir glücklicherweise samt Dongle von meiner FH zur Verfügung gestellt wird. Läuft auch wunderbar auf meinen Macs (iMac 20", 2.4GHz intel C2D und MBP 15", 2.5GHz intel C2D).
Jetzt habe ich aber meine ersten aufwändigeren Renderaufgaben (2k Fulldomevideos für den Mediendom) zu erledigen und schon gibt es Probleme: Rendern dauert, das weiß ich (vor allem mit derzeit nur 2GB RAM, Nachschub ist geordert), deswegen wollte ich den iMac die Nacht durch rendern lassen. Hat leider nicht ganz geklappt, denn er ist nach der eingestellten Zeit (glücklicherweise auf 3 Stunden stehen gehabt) einfach in den Ruhezustand gegangen und hat aufgehört zu rendern. Vorhergesagt hatte er knapp 5 Stunden Dauer, heute morgen waren es nach dem "Aufwecken" noch knapp 2 Stunden (er rendert immer noch, sitze am MBP).
Eigentlich ging ich bisher immer davon aus, dass laufende Programme das Betriebssystem davon abhalten, in den Ruhezustand zu gehen. Lightwave macht das offensichtlich nicht, sondern lässt sich einfach unterbrechen. Das finde ich sehr unangenehm. Ich möchte schon, dass der iMac fertig rendert, und sich nach Beendigung des Vorgangs in den Ruhezustand begibt, damit er nicht die ganze Nacht durch läuft (wenn es halt so ein kleiner Renderauftrag ist). Mein Strom ist immerhin nicht kostenlos (aber wenigstens von Lichtblick).
Habe ich irgendeine Einstellung übersehen?
-
Rendern dauert, das weiß ich (vor allem mit derzeit nur 2GB RAM, Nachschub ist geordert)
Die RAM-Größe hat auf Rendering-Vorgänge üblicherweise keine Auswirkungen.
Eigentlich ging ich bisher immer davon aus, dass laufende Programme das Betriebssystem davon abhalten, in den Ruhezustand zu gehen.
Nein, "Laufen" alleine reicht nicht. In Mac OS X laufen ständig mindestens 20 Programme, da würde das System nie in den Ruhezustand gehen.
Damit das System wach bleibt, muss entweder Benutzeraktivität da sein (Tastatur- oder Mausverwendung) oder es muss gerade ein Programm laufen, das ausdrücklich eine Sperre des Ruhezustands anfordert. Das machen in der Regel aber nur "Medien-Brennprogramme".
Lightwave 9 kenne ich nicht. Möglicherweise kann man da irgendwo einstellen, dass das System beim Rendering wachgehalten werden soll. Ansonsten musst Du in den Energiespareinstellungen von Mac OS X den Ruhezustand abschalten.
-
Rendern dauert, das weiß ich (vor allem mit derzeit nur 2GB RAM, Nachschub ist geordert)
Die RAM-Größe hat auf Rendering-Vorgänge üblicherweise keine Auswirkungen.
Warum das? Unsere Renderfarmen und -rechner an der FH profitieren messbar von der alleinigen Erhöhung des Arbeitsspeichers. Sind größtenteils auch Intel C2D, laufen aber unter Windows.
[...] oder es muss gerade ein Programm laufen, das ausdrücklich eine Sperre des Ruhezustands anfordert.
Kann man denn nicht irgendwie OS X (10.5.2) mitteilen, dass er nicht ruhen soll, wenn Lightwave läuft?
Lightwave 9 kenne ich nicht. Möglicherweise kann man da irgendwo einstellen, dass das System beim Rendering wachgehalten werden soll.
Da habe ich bisher nichts gefunden, aber ich suche weiter.
Ansonsten musst Du in den Energiespareinstellungen von Mac OS X den Ruhezustand abschalten.
Genau das will ich ja vermeiden. Nach dem Rendern darf er ja gerne schlafen gehen.
-
Vielleicht hilft Jiggler (http://www.sticksoftware.com/software/Jiggler.html):
"keep your Mac awake ... when your machine is busy working"
oder
http://lightheadsw.com/caffeine/
http://blog.tice.de/software.php?page=TheTimer
-
Habe auch noch was gefunden, was helfen könnte: Lights Out
http://www.northernsoftworks.com/lightsout.html
Das wird auch bei Apple (http://www.apple.com/downloads/macosx/icons_screensavers/lightsout.html) gelistet. Dort allerdings unter der Rubrik "Screensavers" ???
-
Leute, das sind alles keine Lösungen.
Es kann nur ein einziges Programm geben, das entscheiden kann, ob Lightwave noch beschäftigt ist oder nicht und das ist Lightwave selber. Nur so kann der Ruhezustand gesteuert werden, wie Sascha sich das vorstellt.
-
Ja, perfekt ist das nicht. Man muß halt die Renderdauer von Lightwave abschätzen und kann dann mit großzügiger Reserve, z. b. per Caffeine, dem Mac sagen wann er sich schlafen legen darf. Ist doch besser als nix?
-
Naja, wenn es keine andere Lösung gibt:
Man könnte ein Skript schreiben, welches alle 5 Minuten aufgerufen wird, dann nachschaut, ob Lightwave oder ein untergeordneter Prozess noch viel Rechenzeit bezieht und im negativen Fall den Rechner schlafen schickt.
-
Ja, perfekt ist das nicht. Man muß halt die Renderdauer von Lightwave abschätzen und kann dann mit großzügiger Reserve, z. b. per Caffeine, dem Mac sagen wann er sich schlafen legen darf. Ist doch besser als nix?
Ja, das ist erstmal ein gangbarer Weg. Lightwave kann nach dem ersten Frame glücklicherweise recht exakt vorhersagen, wie lange es noch brauchen wird. Das plus etwas Toleranz und es sollte gehen. Danke.
Naja, wenn es keine andere Lösung gibt:
Man könnte ein Skript schreiben, welches alle 5 Minuten aufgerufen wird, dann nachschaut, ob Lightwave oder ein untergeordneter Prozess noch viel Rechenzeit bezieht und im negativen Fall den Rechner schlafen schickt.
Und das werde ich später mal in Angriff nehmen, wenn ich nicht zufällig irgendwo ein derartiges Programm finde. Ich dachte ja eigentlich, es gäbe kein Programm, das nicht schon geschrieben worden wäre. ;-)
-
Kannst Du denn Lightwave immerhin so konfigurieren, dass es sich selbst beendet nach getaner Arbeit? (Ich denke, so wäre ein Skript einfacher realisierbar.)
-
Unter der Voraussetzung, dass sich Lightwave automatisch beenden lässt, mal so rein Brainstorm-mässig ein Entwurf, auf dem sich ev. aufbauen lässt. Nicht getestet und absolut nicht garantiert, dass schon fehlerfrei und lauffähig.
Das da kommt in eine Datei "goodNight.command", die mit chmod 755 ausführbar gemacht und nach ~/Library/Scripts gelegt wird:#!/bin/bash
ps aux | grep Light >> /tmp/light.txt
cat /tmp/light.txt | grep Lightwave >> /tmp/light2.txt
LIGHTWAVE_RUNNING=`cat /tmp/light2.txt`
if [ "$LIGHTWAVE_RUNNING" == "" ]; then
osascript <<GoodNight
tell application "System Events" to sleep
GoodNight
fi
rm /tmp/light.txt
rm /tmp/light2.txt
Das da kommt in eine Datei "lightwave-good-night.plist", die nach ~/Library/LaunchAgents gelegt wird:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>lightwave-good-night</string>
<key>ProgramArguments</key>
<array>
<string>~/Library/Scripts/goodNight.command</string>
</array>
<key>Disabled</key>
<true/>
<key>RunAtLoad</key>
<false/>
<key>StartInterval</key>
<integer>300</integer>
</dict>
</plist>
Wenn LightWave läuft startest Du die Überwachung mit:
launchctl load -w ~/Library/LaunchAgents/lightwave-good-night.plist
Und nach dem Aufwecken musst Du es wieder abschalten mit:
launchctl unload -w ~/Library/LaunchAgents/lightwave-good-night.plist
Verbesserungsvorschläge etc. willkommen.
-
Und noch eine überarbeitete Variante von goodNight.Command, die auch funktionieren könnte, wenn sich Lightwave nach getaner Arbeit nicht selbst beenden lässt:
#!/bin/bash
ps ax -o "cpu,command" | grep Light >> /tmp/light.txt
cat /tmp/light.txt | grep Lightwave >> /tmp/light2.txt
LIGHTWAVE_RUNNING=`cat /tmp/light2.txt`
if [ "$LIGHTWAVE_RUNNING" == "" ] || [ "${LIGHTWAVE_RUNNING:0:3}" == " 0" ]; then
osascript <<GoodNight
tell application "System Events" to sleep
GoodNight
fi
rm /tmp/light.txt
rm /tmp/light2.txt
-
Bzw. wäre es so dann wohl besser. So riskiert man keinen ungewollt schlafenden Mac, wenn Lightwave nicht gestartet ist.
#!/bin/bash
ps ax -o "cpu,command" | grep Light >> /tmp/light.txt
cat /tmp/light.txt | grep Lightwave >> /tmp/light2.txt
LIGHTWAVE_RUNNING=`cat /tmp/light2.txt`
if [ "$LIGHTWAVE_RUNNING" != "" ] && [ "${LIGHTWAVE_RUNNING:0:3}" == " 0" ]; then
osascript <<GoodNight
tell application "System Events" to sleep
GoodNight
fi
rm /tmp/light.txt
rm /tmp/light2.txt