Thumbnailerzeugung beschleunigen

Aus
Version vom 21. Mai 2012, 20:06 Uhr von Jahlives (Diskussion | Beiträge) (Änderung 4425 von Jahlives (Diskussion) rückgängig gemacht.)

Einleitung

Im folgenden möchte ich beschreiben, wie man auf einer DS ohne Copozessor die Thumbnailerzeugung der Photo Station beschleunigen kann. Ansonsten kann man beim Einspielen von Fotos auf "kleinen" DS, wie meiner DS210j Tage mit 100% Prozessorlast warten. Alle Hintergrundinfos dazu gibt es hier: http://forum.synology.com/enu/viewtopic.php?f=17&t=37379 und hier: http://forum.synology.com/enu/viewtopic.php?f=17&t=24083 Alles was ich gemacht habe, ist einen Autostart geschrieben, der meiner Meinung nach den besten Weg automatisiert. Bewirken sollte die Änderung, dass bei der Berechnung weniger Floatingpoint-Berechnungen durchgeführt werden, worin die einfachen DS ohne Coprozessor ziemlich langsam sind. Das Skript entfernt hierzu die "unsharp"-option aus den Berechnungsparametern der Thumbnailberechnung. Hier ein Performancevergleich auf einer 110j aus den obigen Quellen (hier):

time convert -size 800x800 -unsharp 0.5x0.5+1.25+0.0 picture.jpeg picture-converted.jpeg
real    1m 17.04s
time convert -size 800x800 picture.jpeg picture-converted.jpeg
real    0m 4.88s

Das Skript entfernt die unsharp-option automatisch und wiederholt diese Aktion, wenn die Parameter durch ein Update wieder wie vorher sind. Eine weitere Optimierung könnte noch sein, die großen "Thumbnail"-Definitionen zu entfernen. Nachteil ist, dass die Qualität der Thumbnails wohl schlechter wird - habe ich noch nicht getestet, wäre für mich aber im Moment von untergeordneter Bedeutung.


Das alles ist noch beta, Tester und Feedback willkommen!

Voraussetzungen

Je nach Ort der Autostart-Datei evtl.:

  • optware/IPKG installiert

Dienst einrichten

alles was zu tun ist, ist im Verzeichnis /opt/etc/init.d eine Datei z.B. namens S99thumb.sh mit folgendem Inhalt erstellen:

#!/bin/sh

case $1 in
start)
        cd /usr/syno/etc.defaults
        grep -q 'unsharp' thumb.conf 
        if [[ $? -eq 0 ]] 
        then 
         echo gefunden
         mv thumb.conf thumb.conf.old
         grep -v unsharp thumb.conf.old > thumb.conf
        fi
        grep -q 'unsharp' thumb_high.conf
        if [[ $? -eq 0 ]]
        then
         echo high gefunden
         mv thumb_high.conf thumb_high.conf.old
         grep -v unsharp thumb_high.conf.old > thumb_high.conf
        fi
         /usr/syno/etc/rc.d/S77synomkthumbd.sh stop
         /usr/syno/etc/rc.d/S77synomkthumbd.sh start
 
        ;;
stop)
        cd /usr/syno/etc.defaults
        if [  -f thumb.conf.old ]
        then
        rm thumb.conf
        mv thumb.conf.old thumb.conf
        else
         echo restoring thumb.conf.old failed, file not found!
        fi
        if [  -f thumb_high.conf.old ]
        then
        rm thumb_high.conf
        mv thumb_high.conf.old thumb_high.conf
        else
         echo restoring thumb_high.conf.old failed, file not found!
        fi

        /usr/syno/etc/rc.d/S77synomkthumbd.sh stop
        /usr/syno/etc/rc.d/S77synomkthumbd.sh start

        ;;
*)
        echo "Usage: $0 [start|stop]"
        ;;
esac

Das Skript braucht die Rechte "755", z.B. mit

chmod 755 S99thumb.sh

Wenn das o.g. Verzeichnis nicht vorhanden ist, könnte man es auch unter /usr/syno/etc.defaults/rc.d/ oder /usr/local/etc/rc.d/ ablegen. Ich weiß nicht, in wie weit der Inhalt dieser Verzeichnisse bei einem Diskstation update erhalten bleibt. Also kontrollieren!


Bei anderen Fragen/Problemen (oder Erfolgsmeldungen) bitte hier http://www.synology-forum.de/showthread.html?25372-Fragen-Diskussion-Feedback-zu-Wikieintrag-Thumbnailerzeugung-convert-beschleunigen&p=204758#post204758 posten.

Quellen

siehe oben.