Thumbnailerzeugung beschleunigen: Unterschied zwischen den Versionen

Aus
Keine Bearbeitungszusammenfassung
 
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:
== Einleitung ==
== Einleitung ==


ACHTUNG BAUSTELLE, EINTRAG WIRD ÜBERARBEITET!
Viele ARM-basierte Synology Diskstations haben keinen numerischen Koprozessor und sind daher sehr langsam bei der Erzeugung der Thumbnails.


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.
Früher habe ich hier gezeigt, wie man die Thumbnailerzeugung beschleunigen kann, in dem man z.B. die kleineren Thumbnails aus den größeren berechnen lässt oder indem man Thumbnails gar nicht erst erzeugt sondern durch Links auf andere Thumbnails oder das Original ersetzt.
Alle Hintergrundinfos dazu gibt es hier:
[http://forum.synology.com/enu/viewtopic.php?f=17&t=37379 http://forum.synology.com/enu/viewtopic.php?f=17&t=37379]
und hier:
[http://forum.synology.com/enu/viewtopic.php?f=17&t=24083 http://forum.synology.com/enu/viewtopic.php?f=17&t=24083]


Es gibt hierzu verschiedene Möglichkeiten, die ich kurz aufzählen möchte:
Leider hat sich die Umsetzung mit den einzelnen DSM Versionen immer wieder verändert und manche Dinge hat Synology auch selbst ersetzt.


- Entfernung der "unsharp"-option aus den Berechnungsparametern der Thumbnailberechnung.
Mir fehlt die Zeit, die Skripte zu aktualisieren und vielleicht bin ich auch geduldiger geworden, mit einer Ausnahme:
Wenn man auf einmal sehr viele Bilder auf die Syno kopiert oder aus einer Datensicherung wieder herstellt.
Kurz, wenn man plötzlich viele tausend Thumbnails zu erzeugen hat.


- Hinzufügen des Parameters "-filter point" (was wohl das Bild weicher macht, bisher nicht groß bemerkt)
Die o.g. Optimierungen wirken da eher homöopatisch, vielleicht halbieren sie auch die Zeit, aber von vielen auf wenige Wochen.


- Statt Berechnung eines Thumbnails einfach die Verlinkung auf die Orginal-Datei oder den nächst größeren Thumbnail. (Nebenwirkungen sind zu prüfen)
Daher möchte ich hier nur noch auf die verschiedenen Wege hinweisen, die ich im Internet gefunden habe, um mit einem PC o.ä. die Thumbnails zu erzeugen.


- Zur Berechnung des Thumbnails nicht die (mehrere MB große) Orginal-Datei nutzen, sondern den nächst größeren Thumbnail. Ab DSM 4.1 ist das teilweise schon umgesetzt. Die DS erzeugt zunächst die XL Thumbnails, und daraus alle anderen.
== Thumbnailerzeugung mit dem Synology Photo Station Uploader  ==


Man kann die o.g. Software von Synology nicht nur zur Übertragung verwenden, sondern auch um Thumbnails zu erzeugen für bereits auf der Syno abgelegte Bilder.
Allerdings werden dabei alle Bilder nochmal geschrieben, das ist nicht so schön, verändert das Schreibdatum und macht das ganze wieder langsam .
Vorteil: Man kann es einfach unter Windows machen.


Ich folgende Skript setzt alle diese Wege um, um den Geschwindigkeitsgewinn zu maximieren. Auch wenn dabei eine Beschleunigung um den Faktor 5 zu erreichen ist, kann die Erzeugung immer noch Tage oder Wochen dauern, aber immer noch besser wie Monate. Es ist offensichtlich, dass sich manche Optionen gegenseitig ausschließen, daher sollte das den Wünschen entsprechend konfiguriert werden.
Die Quelle ist hier: [https://forum.synology.com/enu/viewtopic.php?t=95049 https://forum.synology.com/enu/viewtopic.php?t=95049]
Welche Thumbnailgröße für was benötigt wird kann man oben nachlesen und das reiche if evtl. auch noch hier nach.


Bewirken sollen die Änderungen, dass bei der Berechnung weniger Floatingpoint-Berechnungen durchgeführt werden, worin die einfachen DS ohne Coprozessor ziemlich langsam sind.
== Thumbnailerzeugung mit synothumb.py ==
Es liegt auch ein Script zur Performance-Messung bei, so dass man direkt Prüfen kann, wo man mit seinen Parametern steht. Ihr könnt gerne auch ein paar Benchmarks im Forum posten.


Alles was jetzt kommt habe ich auf einer DS212+ mit DSM4.0 getestet und es scheint zu funktionieren. Ob dies auch in anderen Situationen funktioniert kann ich im Moment nicht sagen. Die Installationsroutine lässt sich aber auch zur Deinstallation verwenden.
Eine gute Beschreibung findet sich hier:


Die Anwendung erfolgt jedoch auf eigenes Risiko, schließlich mache ich das hier nur als Hobby!
[http://www.fatlemon.co.uk/2016/12/creating-thumbnails-for-the-synology-dsm-photostation/ http://www.fatlemon.co.uk/2016/12/creating-thumbnails-for-the-synology-dsm-photostation/]


Das alles ist noch beta, Tester und Feedback willkommen!
Die Quellen sind hier:


== Voraussetzungen ==
[https://github.com/phillips321/synothumbs https://github.com/phillips321/synothumbs]
Je nach Ort der Autostart-Datei evtl.:
*optware/IPKG installiert


== Skripte installieren ==
== Ein weiteres Skript, ungetestet ==
Bitte die Skripte als Paket hier runter laden:


[http://db.tt/UlJyUZvB Link]
[https://www.onderka.com/inhalt/synology-ds414/synology-dsm5-thumbnail-erzeugung-deaktivieren-oder-beschleunigen/ https://www.onderka.com/inhalt/synology-ds414/synology-dsm5-thumbnail-erzeugung-deaktivieren-oder-beschleunigen/]
 
und den inhalt in der public-Freigabe unter Windows in folgendes Verzeichnis
 
<pre>
root\convert
</pre>
 
oder auf der Syno unter
 
<pre>
\volume1\public\root\convert
</pre>
 
entpacken.
 
was die Routine macht kann mit einem Editor nachgelesen werden.
 
Für mich ist der Vorteil, dass Skript hier abzulegen, dass ich die Konfiguration mit einem Linux-tauglichen Editor ändern kann. (Bitte nicht Notepad).
 
Jetzt über SSH/Telnet auf der Syno einloggen und in das o.g. Verzeichnis wechseln und die Installationsroutine ausführbar machen und ausführen:
 
<pre>
cd \volume1\public\root\convert
chmod 755 S99convpatch.sh
./S99convpatch.sh start
</pre>
 
Damit ist sie "Umleitung" über die installierte PERL-Routine für den convert "eingehängt"
 
 
AB HIER ALT, BITTE NICHT BERÜCKSICHTIGEN, weiter geht es bei Konfiguration!
 
 
alles was zu tun ist, ist im Verzeichnis /opt/etc/init.d eine Datei z.B. namens S99thumb.sh mit folgendem Inhalt erstellen:
<pre>
#!/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
</pre>
 
Das Skript braucht die Rechte "755", z.B. mit
<pre>
chmod 755 S99thumb.sh
</pre>
 
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!
 
== Konfiguration ==
 
Jetzt kann die Funktion des Patches noch individuell eingerichtet werden.
 
Ich zum Beispiel nutze die Möglichkeit der Verlinkung nicht, da ich ein iPad nutze und daher z.B. die XL-Thumbnails gerne erzeuge, um den Datentransfer zum iPad kein zu halten.
Wer aber weiß, was er braucht, könnte durch ein einfachen Verlinken der XL-Thumbnails die Erzeugung nochmals beschleunigen und Speicherplatz auf der Platte sparen.
 
Alle Einstellungen erfolgen in der Datei /root/convert/convert_patch.pl
 
Sie können während der Thumbnail-Erzeugung geändert werden und werden direkt aktiv.
Aber Achtung, keinen Syntax-Fehler einbauen, sonst scheitern die Thumbnails!
 
Dir Konfiguration erfolgt in den ersten 30 Zeilen:
 
<pre>
 
#!/usr/bin/perl -w
 
# Convert-patch V0.81, 2.9.2012 by Anna Konda
# Made for DSM 4.1
 
@new_args = ("-filter","point"); # Where we are going to copy the arguments
#@new_args = ();
$doLnk = 0;    # Flag meaning that we can generate a symbolic link to the original file
$chgSource = 0; # Flag meaning that we have to change the source to the next larger thumbnail.
$copyPath = ""; # The path where we are generation the thumbnails. It comes in the  registry:temporary-path parameter
$date=`date +\%m-\%d`;
$logfile = "/volume1/public/_logs/conv.txt"; # Logfile for warnings
$isRaw=0;      # for RAW-Files no links, since original is no jpg!
$refFile="";    # Reference file for source change.
$targetFile="";
$debug=1;
 
#push @new_args,"-filter";
#push @new_args,"point";
 
for $arg(@ARGV) {
  #Detect the folder of the thumbnails
  if($arg =~ m/^registry.temporary.path./) {
    $copyPath = $arg;
    $copyPath =~ s/^registry.temporary.path.//;
  }
  elsif($arg =~ m/THUMB_RAW.jpg$/){ $isRaw = 1; }
 
#              thumb size  link/calc    change source  to what
  elsif($arg eq "1280x1280"){ $doLnk = 0; $chgSource = 0; $refFile="ORG";                    $targetFile="/SYNOPHOTO:THUMB_XL.jpg"; }     
  elsif($arg eq "800x800")  { $doLnk = 0; $chgSource = 0; $refFile="/SYNOPHOTO:THUMB_XL.jpg"; $targetFile="/SYNOPHOTO:THUMB_L.jpg"; }
  elsif($arg eq "640x640")  { $doLnk = 0; $chgSource = 0; $refFile="/SYNOPHOTO:THUMB_L.jpg";  $targetFile="/SYNOPHOTO:THUMB_B.jpg"; }   
  elsif($arg eq "320x320")  { $doLnk = 0; $chgSource = 0; $refFile="/SYNOPHOTO:THUMB_B.jpg";  $targetFile="/SYNOPHOTO:THUMB_M.jpg";}       
  elsif($arg eq "120x120")  { $doLnk = 0; $chgSource = 0; $refFile="/SYNOPHOTO:THUMB_M.jpg";  $targetFile="/SYNOPHOTO:THUMB_S.jpg"; }                                                           
#  elsif($arg eq "-size") { $arg = "-sample"; } #makes no sense in my optinion and causes bad quality!
 
  push @new_args, $arg;
}
 
</pre>
 
Der aktuelle Stand des Skriptes mag leicht abweichen.
 
Die Zeile mit -filter point setzt einen schnelleren Umrechungsalgo, wenn die Bilder zu schlecht scheinen, dass diese Zeile auskommentiert und die folgende einkommentiert werden.


== Hilfe/Fragen ==
== Hilfe/Fragen ==

Aktuelle Version vom 17. September 2017, 17:05 Uhr

Einleitung

Viele ARM-basierte Synology Diskstations haben keinen numerischen Koprozessor und sind daher sehr langsam bei der Erzeugung der Thumbnails.

Früher habe ich hier gezeigt, wie man die Thumbnailerzeugung beschleunigen kann, in dem man z.B. die kleineren Thumbnails aus den größeren berechnen lässt oder indem man Thumbnails gar nicht erst erzeugt sondern durch Links auf andere Thumbnails oder das Original ersetzt.

Leider hat sich die Umsetzung mit den einzelnen DSM Versionen immer wieder verändert und manche Dinge hat Synology auch selbst ersetzt.

Mir fehlt die Zeit, die Skripte zu aktualisieren und vielleicht bin ich auch geduldiger geworden, mit einer Ausnahme: Wenn man auf einmal sehr viele Bilder auf die Syno kopiert oder aus einer Datensicherung wieder herstellt. Kurz, wenn man plötzlich viele tausend Thumbnails zu erzeugen hat.

Die o.g. Optimierungen wirken da eher homöopatisch, vielleicht halbieren sie auch die Zeit, aber von vielen auf wenige Wochen.

Daher möchte ich hier nur noch auf die verschiedenen Wege hinweisen, die ich im Internet gefunden habe, um mit einem PC o.ä. die Thumbnails zu erzeugen.

Thumbnailerzeugung mit dem Synology Photo Station Uploader

Man kann die o.g. Software von Synology nicht nur zur Übertragung verwenden, sondern auch um Thumbnails zu erzeugen für bereits auf der Syno abgelegte Bilder. Allerdings werden dabei alle Bilder nochmal geschrieben, das ist nicht so schön, verändert das Schreibdatum und macht das ganze wieder langsam . Vorteil: Man kann es einfach unter Windows machen.

Die Quelle ist hier: https://forum.synology.com/enu/viewtopic.php?t=95049

Thumbnailerzeugung mit synothumb.py

Eine gute Beschreibung findet sich hier:

http://www.fatlemon.co.uk/2016/12/creating-thumbnails-for-the-synology-dsm-photostation/

Die Quellen sind hier:

https://github.com/phillips321/synothumbs

Ein weiteres Skript, ungetestet

https://www.onderka.com/inhalt/synology-ds414/synology-dsm5-thumbnail-erzeugung-deaktivieren-oder-beschleunigen/

Hilfe/Fragen

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.