Wie kann Lightroom die CPU beim Erstellen von Standardvorschauen voll ausnutzen?

Beim Hinzufügen von Fotos zu einem Katalog durchläuft Lightroom 6 die übliche Erstellung von Standardvorschauen. Da Adobe diesen Prozess so konzipiert hat, dass er im Hintergrund ausgeführt wird und Ihnen genügend Ressourcen zur Verfügung stehen, um gleichzeitig an Ihren Fotos zu arbeiten, weist die Vorschauerstellung nur 50 % der CPU-Zeit zu (verwendet alle Kerne).

Normalerweise füge ich Fotos in großen Stapeln hinzu und nutze diese Zeit, um eine Pause zu machen und Tee zu kochen, während Lightroom sie durchkaut. Natürlich möchte ich, dass Vorschauen schneller erstellt werden, anstatt während des Prozesses Ressourcen für andere Aufgaben verfügbar zu haben.

Gibt es eine Möglichkeit, Lightroom dazu zu bringen, 100 % der CPU für die Standardvorschauerstellung zu nutzen, so wie es beispielsweise beim Exportieren von RAW-Bildern der Fall ist?

BEARBEITEN : Um die Dinge klar zu stellen, verbraucht Lightroom 100 % CPU und alle Kerne/Threads (meine CPU hat 2 Kerne/4 Threads) für jede andere Aufgabe, die erforderlich ist, einschließlich des Exports von Fotos, der Arbeit mit Anpassungspinseln im Entwicklungsmodus (was tendenziell CPU-lastige Bearbeitungen) und das Rendern von 1:1-Vorschauen. Es gibt kein Problem mit dem System/Hardware, alles funktioniert einwandfrei.

Das fragliche Problem betrifft nur das Erstellen von Standardvorschauen und ist meines Wissens nach beabsichtigt. Die Frage ist, ob es möglich ist, diese Einschränkung des Lightroom-Designs in irgendeiner Weise zu überwinden.

Ich habe keine Ahnung, wie der Windows-Scheduler funktioniert, aber sind Sie sicher, dass dies der Fall ist und der Prozess nicht nur IO-gebunden ist?
Ist nicht. Der Einsatz einer SSD statt einer HDD mit 7200 U/min führt zur gleichen CPU-Last.
Dies könnte auf superuser.com besser sein , da es wirklich um den Computeraspekt geht und nicht um Fotografie oder den fotografischen Workflow an sich.
@mattdm Der Windows-Scheduler arbeitet vorrangig, also ist er hier nicht der Schuldige. Der Prozess kann auch mit Leerlaufpriorität im Wesentlichen zu 100 % ausgeführt werden, wenn Sie nichts anderes tun. Vielleicht ist es maximal auf Kerne - codiert, um auf bis zu 4 zu laufen, aber das OP hat 8 oder so ähnlich.
@ChrisH Ich habe 2 Kerne :) (i7-3520M)
@mattdm Es würde irgendwie von der Antwort abhängen. Wenn irgendwo in den LR-Einstellungen ein für den Benutzer zugänglicher Schalter vergraben wäre, dann ist es genau wie so ziemlich jede andere Frage, wie ich LR dazu bringen kann, das zu tun, was ich will, wenn ich mit meinen Fotos umgehe , die wir hier beantworten. Wenn es andererseits keine Option innerhalb von Lr gibt oder wenn das Verhalten durch etwas außerhalb von Lr verursacht wird, dann würde die Frage angemessener woanders hingehört.
Dann ist es vielleicht eine Single-Core-Operation oder vielleicht n-1, wobei n angibt, wie viele Sie haben. Ich kann verstehen, warum Sie möchten, dass es weitergeht und es tut, während Sie etwas anderes tun.
@MichaelClark Ich erinnere mich, irgendwo gelesen zu haben (wahrscheinlich LR-Hilfedatei oder Adobe-Blog), dass Adobe es speziell als Hintergrundaufgabe konzipiert hat, damit der Benutzer Fotos normal verarbeiten kann, während Vorschauen erstellt werden. Also nein, dieses Verhalten wird nicht durch irgendetwas Äußeres verursacht.
@ChrisH es ist keine Single-Core-Operation. Ich habe absichtlich erwähnt, dass LR alle CPU-Kerne nutzt, aber die Last auf 50% begrenzt.
Sie haben nie erwähnt, ob Sie Windows oder MacOS verwenden oder welche Version.
@MikeDixon Ich verwende Windows 7 64. Ich bin mir nicht sicher, ob es einen Unterschied macht, da das Problem höchstwahrscheinlich systemunabhängig ist.

Antworten (3)

Ich habe ausgiebig mit Lightroom und der Leistung experimentiert, habe aber keine Kenntnis von der internen Funktionsweise (und Sie müssten Adobe dort kommentieren).

Es scheint, dass Lightroom einige Codeabschnitte enthält, die nicht parallel ausgeführt werden können. Im Laufe der Jahre hat es sich verbessert, ist aber noch nicht da. Ich habe kürzlich ein neues System für die Fotografie gebaut, das nur aus SSD besteht, separate Controller hat (ein U.20, um es von SATA zu bekommen) und 64 GB Speicher hat. Ich habe versucht, alle Engpässe zu eliminieren, und es neigt immer noch dazu, etwa 50-75 % ausgelastete Vorschauen zu erstellen. Beim Testen sehe ich überhaupt keine Warteschlange auf den Festplatten und schon gar keinen Speicherdruck.

Ich glaube, Sie erhalten eine etwas bessere Auslastung, wenn Sie mehrere Jobs für separate Dateien starten, aber es ist keine vollständige Lösung, und es scheint nicht zu helfen, 3, 4 usw. Prozesse zu starten. Zwei scheinen alles zu bekommen, was zu bekommen ist, und es ist nicht viel. Mein empirischer Eindruck ist, dass bestimmte Aktivitäten Single-Threading sind (wahrscheinlich durch kritische Abschnitte) und der Benutzer nichts tun kann.

Abgesehen davon können Sie im Allgemeinen eine Menge tun, z. ein symbolischer Link ist erforderlich, um den Vorschau-Cache vom Katalog zu trennen), über ausreichenden und schnellen Speicher zu verfügen (ich habe festgestellt, dass es bei Einzelbildern (im Vergleich zu Pano-Merges) schwierig ist, LR dazu zu bringen, über etwa 8-12 GB zu verwenden), die kleinste Vorschau zu wählen was Sie brauchen ("auto" funktioniert ziemlich gut), und schließlich das bei weitem Wichtigste: die Verwendung einer CPU mit der schnellsten Single-Code-Geschwindigkeit, die Sie bekommen können.

Wenn Sie Intel verwenden, das Hyperthreading unterstützt, finde ich, dass es etwas besser funktioniert, wenn Hyperthreading deaktiviert ist, nicht aktiviert (dh keine "falschen" Kerne).

Eine Folge davon ist, dass es nicht sehr hilfreich ist, mehr, langsamere Kerne zu bekommen; Wenige (z. B. 4) schnellere Kerne zu bekommen, hilft viel mehr. Mit signifikantem Single-Thread-Code (anscheinend) als Benchmark für die Auswahl von CPUs für LR scheint die Single-Core-Verarbeitung am wichtigsten zu sein.

Ich denke, 4 ist besser als 2; Ich sehe sicherlich mindestens drei Kerne zeitweise aktiv. Ich denke nicht, dass 6 besser wären, geschweige denn 8 (dies kann sich in späteren Versionen ändern, und wie erwähnt geht es mehr um Single-Core-Geschwindigkeit als um Anzahl).

Ich habe auch schnelleren Speicher ausprobiert (Taktung bei 3000 MHz vs. 2400 MHz) und festgestellt, dass es etwas geholfen hat (ca. 10 %). Eine schnellere GPU-Leistung hilft NUR bei der Entwicklung von Bildschirm-Schiebereglern, sie hat (ab der aktuellen Version 2015.10) keine Auswirkungen auf Vorschau-Builds. Das Übertakten der CPU führt zu einer fast linearen Verbesserung der Geschwindigkeit. Offensichtlich kann das Übertakten von irgendetwas die Stabilität beeinträchtigen.

Für das, was es wert ist, ist eine häufig angeforderte Funktion, die nicht in Lightroom enthalten ist, die Möglichkeit, die eingebettete Vorschau zu verwenden, anstatt eine zu erstellen. Für viele ist es bei hohen Volumina und niedrigen Keeper-Raten (dh viel zu selektieren) einfach zu langsam, Vorschauen zu erstellen, um sie zu verwenden. Meine persönliche Lösung dafür war, Lightroom nicht mehr zum Culling zu verwenden; Ich wähle, beschneide und begradige draußen mit einem schnelleren Tool, das die eingebettete Vorschau verwendet (Photo Mechanic in meinem Fall, aber es gibt viele davon), und mache nur Aufnahmen, die mit hoher Wahrscheinlichkeit in Lightroom bleiben.

Es ist eine Einschränkung des LR-Designs. Ich habe den Beitrag bearbeitet, um die Dinge klarer zu machen. Was die Hardware angeht, habe ich 16 GB RAM und einen i7-3520M, eine Laptop-CPU mit voller Spannung und einer maximalen Single-/Multi-Core-Taktrate von 3,6/3,4 GHz. Es ist natürlich kein Quad-Core, aber Lightroom läuft sehr gut darauf. Ich verwende keine GPU-Beschleunigung (Intel-Treiber erzeugen Artefakte in LR und beschleunigen den Workflow nicht sehr). Ich wähle, bewerte und führe auch die gesamte Metadatenverarbeitung in Photo Mechanic durch, aber ich füge immer noch alle verbleibenden Fotos zu LR hinzu, nachdem ich alle gerade schlechten Aufnahmen gelöscht habe.

Ich nehme an, Sie sind wahrscheinlich speicher- oder cachegebunden . Ihr i7-3520 verfügt über 4 MiB Shared Cache, was bedeutet, dass sich beide Kerne den 4 MiB L3-Cache teilen. Da Ihre CPU hyperthreaded ist, wird Ihr L3-Cache in dem Maße, in dem jeder SMT-Thread als "CPU" fungiert, von 4 "CPUs" gemeinsam genutzt.

Die jeweilige Größe des Caches ist nicht wichtig, und die 50-prozentige Auslastung, die Sie beobachten, ist nicht besonders aussagekräftig. Das heißt, gehen Sie nicht davon aus, dass, weil 50 % dasselbe sind wie „eine Hälfte“, eine gewisse „Teile durch 2“-Ineffizienz vor sich geht. Die Auslastung könnte auch 42 % oder 61,803 % usw. betragen.

Denken wir einen Moment über die Daten nach, an denen Lightroom arbeitet, während versucht wird, Vorschauen zu erstellen. Dies sind Versionen des realen Bildes mit niedriger Auflösung, was bedeutet, dass eine Art Downsampling oder N: 1-Interpolation stattfindet, um die kleineren Vorschauen zu erstellen. Daher arbeitet die Vorschauerstellung schnell über einen großen Datensatz hinweg, wobei benachbarte Pixelwerte übersprungen oder schnell gemittelt werden, anstatt pixelweise aufwendige Berechnungen durchzuführen, die bei der Bearbeitung im Entwicklungsmodul auftreten können.

Außerdem haben wir keine Ahnung, wie das Bild in Lightroom im Speicher dargestellt wird. Persönlich würde ich davon ausgehen, dass die Daten als RGB-Tripel gespeichert werden, wahrscheinlich 16 Bit pro Pixel (oder mehr) pro Farbe. (Beachten Sie, dass dies nichts damit zu tun hat, wie das Bild auf der Festplatte gespeichert ist oder ob es RAW oder JPEG aufgenommen wurde. Dies sind Dateispeicherdetails.)

Unter der Annahme, dass die Bilder im Speicher als unkomprimierte Tripel von 16-Bit-Daten dargestellt werden, kann jeder Hyperthread-CPU-„Kern“ idealerweise höchstens √(1 MiB / (3 Farbe/Pixel) / (2 Byte/Farbe) verarbeiten. ) ≈ 418 px quadratische Bereiche. Der Zeitaufwand für das Füllen der Cache-Bereiche mit Bilddaten aus dem RAM ist jedoch viel länger, als die CPU benötigt, um über einen Bruchteil jedes ~ 420 × 420-Pixel-Bereichs zu arbeiten.

Die Antwort von @Linwood deckt seine Leistungsmessungen und Beobachtungen der gesamten Multithread-Leistung von Lightroom recht gut ab. Ich möchte diese Multicore-Leistungsstudie von Lightroom CC/6 von Matt Bach bei Puget Systems , einem Computerhersteller für benutzerdefinierte Leistung, hinzufügen. Bemerkenswert ist die beobachtete Leistungssteigerung pro verwendetem Kern beim Generieren von 1:1-Vorschauen auf bis zu etwa 5 oder 6 Kerne. Nach 6 Kernen ist keine Auslastung pro Kern mehr zu gewinnen.

Bemerkenswert im Test von Puget Systems ist auch, dass die Lightroom-Aufgaben, die die meisten Kerne (nicht Hyperthreads) erhöhen, folgende sind:

  1. Exportieren von Bildern auf die Festplatte
  2. Konvertierung von RAW zu DNG
  3. Generieren Sie 1:1 Vorschauen

Die anderen Bildbearbeitungs- und Bibliotheksaufgaben profitieren nicht so sehr von der Skalierung der Anzahl der Kerne.


Zurück zu Ihrem speziellen System: Wenn wir bestimmte Parameter Ihres Computers hypothetisch ändern könnten, würden wir wahrscheinlich Folgendes sehen:

  • Verringern Sie die CPU-Taktrate : Unter der Annahme, dass die RAM-Geschwindigkeit gleich ist (1600 MHz), würden Sie eine Zunahme der Auslastung feststellen, da der Bruchteil der Zeit, in der Daten in den/aus dem RAM geladen werden, im Vergleich zu der Zeit, in der Anweisungen ausgeführt werden, sinken würde. Sie würden etwas mehr Zeit mit der Ausführung verbringen als mit dem Laden/Speichern im RAM. Natürlich wäre Ihr realer Gesamtdurchsatz niedriger, daher ist dies nicht wünschenswert.

  • Deaktivieren Sie Hyperthreading : Sie würden wahrscheinlich einen etwas höheren Prozentsatz der CPU-Auslastung sehen, aber Ihr Nettodurchsatz der Anzahl der pro Minute generierten Vorschauen würde sinken. Ich weiß jedoch nicht, ob diese Gewinne/Verluste ausgleichen. Linwoods Erfahrung würde darauf hindeuten, dass es zumindest einen leichten Nettogewinn geben würde.

  • Verdoppeln Sie die Anzahl der physischen Kerne (kein Hyperthreading) : Der CPU-Prozentsatz wäre ähnlich (unter der Annahme, dass die Kerne den L3-Cache gemeinsam nutzen).

  • Verdoppeln Sie die L3-Cachegröße : Dies würde wahrscheinlich den größten beobachtbaren Gewinn erzielen, sowohl bei der CPU-Auslastung als auch beim Nettodurchsatz.


Unterm Strich können Sie jedoch nichts tun, um die CPU-Auslastung Ihres Systems während der Lightroom-Vorschaugenerierung mit den Eingaben zu erhöhen, die Sie ihm zuführen.

Wenn Ihr System über 2 Kerne verfügt und Lightroom auf 50 % CPU-Auslastung festgelegt ist, kann ich die folgenden Beobachtungen machen:

  1. Lightroom nutzt 100 % eines der Kerne. Damit ist der Import nach Lightroom an die Geschwindigkeit der CPU gebunden. Dies ist eine Einschränkung Ihrer Hardware.

  2. Lightroom wurde nicht geschrieben, um die Vorteile mehrerer Kerne zu nutzen. Dies ist eine Einschränkung von Lightroom.

Daher denke ich, dass Sie auf eine kombinierte Einschränkung von Lightroom und Ihrem System gestoßen sind. Und Sie können die Funktionsweise Ihrer Kopie von Lightroom nicht ändern! 1 Die einzige Möglichkeit, die Dinge zu verbessern, besteht also darin, ein System mit einer schnelleren CPU zu erwerben.


1. Obwohl eine andere Version von Lr einen Unterschied machen kann. Aber ich weiß nichts darüber, welche Version von Lr Sie verwenden und wie der Entwicklungsprozess von Adobe verläuft. Tatsächlich versuche ich sowieso, von Adobe wegzukommen, also will ich es gar nicht wissen!

Ich habe den Beitrag bearbeitet, um die Dinge etwas klarer zu machen.