ubuntuusers.de

Digikam startet sehr langsam, aber ohne Fehlermeldungen

Status: Gelöst | Ubuntu-Version: Kubuntu 11.04 (Natty Narwhal)
Antworten |

Killerkaninchen

Avatar von Killerkaninchen

Anmeldungsdatum:
19. März 2009

Beiträge: 282

Hallo zusammen

Gleich vorweg: Es gibt zwar eine Menge Digikam-Geschwindigkeits-Threads im Forum, aber nichts, was bei meinem Problem hilfreich sein könnte.

Zum Problem: Mein Digikam braucht etwa 10 Minuten zum Starten. Fehlermeldungen produziert Digikam nicht (auch nicht auf der Konsole). Ich habe mehrere Male die Datenbank-Datei digikam4.db gelöscht, was aber nichts geändert hat.

Ein paar Angaben zu meiner Sammlung / Nutzung von Digikam:

  • Eine zeitlang habe ich Digikam auf zwei Rechnern genutzt, wobei einer auf den Bilderordner des anderen per Samba-Share zugegriffen hat.

    • Mittlerweile habe ich auf beiden Rechnern ein und denselben Bilderbestand - abgeglichen per Unison (mit Ausnahme der jeweiligen Datenbankdateien).

  • Die Bildersammlung umfasst über 30.000 Dateien in über 1.000 Unterordnern mit über 60GB Größe.

  • Einen Unterordner musste ich aus dem Bilderordner entfernen, da er (bzw. Fotos darin) reproduzierbar bei Gwenview und Digikam zum Programmabsturz führte.

  • Das Problem trat auf beiden Rechnern schon unter Kubuntu 10.10 mit Digikam 1.4.0 auf.

  • Nachdem ich beiden Rechnern ein Upgrade auf 11.04 spendiert habe, startet Digikam auf einem Rechner schnell (30 Sekunden) und auf dem anderen Computer extrem langsam. Auch ist hier die Bedienung im Programm selber sehr zäh.

Woran kann das liegen, dass Digikam sich auf beiden Rechnern so unterschiedlich verhält, bei (meine ich) gleicher Konfiguration? Und was kann ich machen, damit Digikam auf beiden Rechnern schnell startet?

Danke und Gruß im Voraus

Killerkaninchen

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

Wie ist denn in der Zeit die Rechnerauslastung? (also RAM, CPU, IO) Auf was für einer Partition liegen die Fotos? (welches FS, wie zusammenhängend sind die Dateien? war es vielleicht mal ganz voll?) Starte digikam mal mit "strace digikam" und guck mal ob dir in der Wartezeit was auffällt und poste das dann.

Killerkaninchen

(Themenstarter)
Avatar von Killerkaninchen

Anmeldungsdatum:
19. März 2009

Beiträge: 282

Laut "top" liegt die Systemauslastung bei unter 10%. Das ist auch das Maximum, was auf den Prozess Digikam geht. Außerdem habe ich drei "zombies".

Die Fotos liegen auf der home-Partition, FS ist ext4.

Was meinst du mit zusammenhängend? Ob die Daten stark fragmentiert sind oder nicht? Kommt schon mal vor, das in home kein Speicherplatz mehr ist.

Das "strace"-Ergebnis kommt noch...

EDIT:

Der Befehl produziert eine Menge Output aber Umleiten in eine Textdatei mittels

strace digikam > digikam.txt

produziert leider nur eine leere Datei...

Auf der Konsole steht viel derart:

stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
gettimeofday({1304960806, 282208}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7, revents=POLLOUT}])
writev(7, [{"7\10\4\0\2614\340\3\317\31\340\3\0\0\0\0007\31\4\0\2624\340\3\317\31\340\3\0\0\0\0"..., 16356}, {NULL, 0}, {"", 0}], 3) = 16356
read(7, 0x9530330, 4096)                = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {14864, 940911283}) = 0
poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7, revents=POLLOUT}])
writev(7, [{"\231\10\t\0\0034\340\3\307\32\340\3\0\0\0\0\320\31\340\3\0\0\0\0\0\0\0\0\203\2~\1"..., 6232}, {NULL, 0}, {"", 0}], 3) = 6232
read(7, 0x9530330, 4096)                = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=7, events=POLLIN}, {fd=10, events=POLLIN}, {fd=13, events=POLLIN}, {fd=17, events=POLLIN}, {fd=33, events=POLLIN}], 8, 0) = 0 (Timeout)
read(7, 0x9530330, 4096)                = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {14864, 941346120}) = 0
clock_gettime(CLOCK_MONOTONIC, {14864, 941413101}) = 0
clock_gettime(CLOCK_MONOTONIC, {14864, 941482511}) = 0
read(7, 0x9530330, 4096)                = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {14864, 941615383}) = 0
poll([{fd=3, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=7, events=POLLIN}, {fd=10, events=POLLIN}, {fd=13, events=POLLIN}, {fd=17, events=POLLIN}, {fd=33, events=POLLIN}], 8, 0) = 0 (Timeout)
read(7, 0x9530330, 4096)                = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {14864, 941829681}) = 0
read(7, 0x9530330, 4096)                = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {14864, 941957898}) = 0
poll([{fd=3, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=7, events=POLLIN}, {fd=10, events=POLLIN}, {fd=13, events=POLLIN}, {fd=17, events=POLLIN}, {fd=33, events=POLLIN}], 8, 914) = 0 (Timeout)
read(7, 0x9530330, 4096)                = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {14865, 857234544}) = 0
clock_gettime(CLOCK_MONOTONIC, {14865, 857304856}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
gettimeofday({1304960807, 205617}, NULL) = 0
gettimeofday({1304960807, 205672}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
read(7, 0x9530330, 4096)                = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {14865, 858751008}) = 0
poll([{fd=3, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=7, events=POLLIN}, {fd=10, events=POLLIN}, {fd=13, events=POLLIN}, {fd=17, events=POLLIN}, {fd=33, events=POLLIN}], 8, 997) = 0 (Timeout)
read(7, 0x9530330, 4096)                = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {14866, 857094977}) = 0
clock_gettime(CLOCK_MONOTONIC, {14866, 857163585}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
gettimeofday({1304960808, 205467}, NULL) = 0
gettimeofday({1304960808, 205522}, NULL) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
read(7, 0x9530330, 4096)                = -1 EAGAIN (Resource temporarily unavailable)
clock_gettime(CLOCK_MONOTONIC, {14866, 858602432}) = 0
poll([{fd=3, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=7, events=POLLIN}, {fd=10, events=POLLIN}, {fd=13, events=POLLIN}, {fd=17, events=POLLIN}, {fd=33, events=POLLIN}], 8, 997^C <unfinished ...>

Killerkaninchen

(Themenstarter)
Avatar von Killerkaninchen

Anmeldungsdatum:
19. März 2009

Beiträge: 282

Inzwischen ist mir doch in der Konfigurationsdatei ~/.kde/share/config/digikamrc etwas aufgefallen: Auf dem langsamen Rechner war hier der Pfad zur Datenbankdatei nicht hinterlegt. Dies habe ich geändert und jetzt braucht er nur noch eine Minute zum Starten...

Offensichtlich muss ich mir die noch mal genauer anschauen...

Killerkaninchen

(Themenstarter)
Avatar von Killerkaninchen

Anmeldungsdatum:
19. März 2009

Beiträge: 282

Ich habe jetzt mal einfach die "funktionierende" digikamrc kopiert und natürlich sämtliche Pfadangaben angepasst. Trotzdem braucht digikam wieder 10 Minuten.

Killerkaninchen

(Themenstarter)
Avatar von Killerkaninchen

Anmeldungsdatum:
19. März 2009

Beiträge: 282

Habe jetzt mehrere Sachen probiert:

Zum einen habe ich mittels

strace -q -o digikam.txt digikam

auf beiden Rechnern geschaut, was da so passiert beim Start von Digikam. Auf beiden Rechnern sah das Ergebnis erstaunlicherweise sehr ähnlich aus. Beide "beschwerten" sich über fehlende Pfade, Bibliotheken o.ä. (hier ein Auszug):

access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/i686/sse2/cmov/libpulse.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/tls/i686/sse2/cmov", 0xbfcdc644) = -1 ENOENT (No such file or directory)
open("/usr/lib/i386-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/home/Killerkaninchen/.krcdirs", 0x9a58344) = -1 ENOENT (No such file or directory)
lstat64("/home/Killerkaninchen/.krcdirs", 0xbfcdcb80) = -1 ENOENT (No such file or directory)
lstat64("/home/Killerkaninchen/.kde/lib", 0xbfcdb8f8) = -1 ENOENT (No such file or directory)
access("/home/Killerkaninchen/.kde/lib/", R_OK) = -1 ENOENT (No such file or directory)

Libpulse und die anderen Bibliotheken sind aber auf beiden Computern installiert. Auch eine Suche zu der Meldung aus der ersten Zeile direkt, brachte mich nicht weiter.

Der einzige wirklich auffällige Unterschied bestand darin, dass ich auf dem Rechner mit dem "langsamen" Digikam, nachdem ich Digikam auf der Konsole aufgerufen hatte, dieses auch auf der Konsole mit STRG+C beenden musste. Der andere Rechner beendete es brav über "Datei → Beenden"...

Dann habe ich ~/.kde umbenannt, den Laptop neu gestartet und alle Digikam-Datenbank-Dateien gelöscht. Nach dem Einlesen der Bilder war Digikam während dieser Sitzung wieder richtig schnell - auch bei mehrmaligem starten und beenden des Programms. Aber nach einem Kubuntu-Neustart war wieder alles beim Alten!

Wie kann das sein?

Killerkaninchen

(Themenstarter)
Avatar von Killerkaninchen

Anmeldungsdatum:
19. März 2009

Beiträge: 282

Nach einem Tipp auf der Digikam-Mailingliste habe ich in den Digikam-Einstellungen bei "Verschiedene Einstellungen" den Haken vor "Beim Start nach neuen Fotos suchen" entfernt. Jetzt startet Digikam auch auf meinem Notebook binnen einiger Sekunden. Was mich irritiert, ist dass auf meinem schwächeren Desktop-PC die Option aktiviert ist und dies keinerlei negative Auswirkungen hat?!

Naja, trotzdem irgendwie gelöst...

Antworten |