Warum wird Illustrator im Hintergrund auf 2% gedrosselt?

8

Ich führe regelmäßig ein .jsx-Skript in Adobe Illustrator aus, das eine Reihe von Dateien in einem bestimmten Format speichert.

  • Während Illustrator die aktive App ist, dauert das Ausführen des Skripts für 5 Dateien 23 Sekunden .

  • Wenn Illustrator nicht die wichtigste App ist, dauert das Ausführen des Skripts für 5 Dateien länger als 5 Minuten .

  • Laut Activity Monitor verbraucht Illustrator im Vordergrund etwa 75% der CPU, im Hintergrund jedoch weniger als 2% .

  • Laut Activity Monitor wird App Nap nicht verwendet .

Warum passiert das und gibt es eine Möglichkeit, es zu ändern?

Ich möchte in der Lage sein, andere Aufgaben zu erledigen, während ich auf Illustrator warte. So wie es aussieht, bin ich verpflichtet, Illustrator im Vordergrund zu halten.

Einige Dinge, die ich versucht habe : Das wusste ich

sudo sysctl debug.lowpri_throttle_enabled=0

arbeitete daran, Time Machine-Backups zu beschleunigen, daher dachte ich, dass dies in diesem Fall hilfreich sein könnte. Es hatte keine Wirkung .

Ich habe auch versucht, App Nap zu deaktivieren:

defaults write NSGlobalDomain NSAppSleepDisabled -bool YES

Es hatte keine Wirkung .

Ich habe TinkerTool ausprobiert , aber ich glaube, dass es nur eine grafische Benutzeroberfläche ist , um die Einstellung lowpri_throttle_enabled zu ändern . Es hatte keine Wirkung .

Andrew Swift
quelle

Antworten:

6

Dies scheint ein Adobe-Problem zu sein. Insbesondere ist die Codebasis für AI nicht multithreaded.

In den Adobe-Foren konnte ich eine Diskussion finden, die sich genau mit Ihrem Problem befasst - Machen Sie Illustrator auf der CPU mit mehreren Threads

Die Leistung von Illustrator ist schrecklich, langsam und schwerfällig, außer den grundlegendsten Operationen. Es ist nur an einen einzigen CPU-Thread gebunden, was in Zeiten von Multi-Core- und Multi-Thread-CPUs lächerlich ist, und das schon seit vielen Jahren. Es kann keine Hintergrundaufgaben ausführen und ist in Funktion und Leistung mit anderen Adobe-Programmen wie Photoshop und inDesign völlig uneinheitlich.

Hervorhebung von mir

Wenn der Code Hintergrund-CPU-Vorgänge nicht unterstützen kann, können Sie aus Sicht Ihres Mac leider nichts tun, um die Dinge zu beschleunigen. Da die Benutzer im Forum alle (widerwillig) akzeptieren, besteht die einzige Lösung darin, auf ein Update von Adobe zu warten.

Warum ist das so?

Im Allgemeinen werden Anwendungen im Hintergrund "angehalten" - technisch gesehen haben sie eine niedrige Priorität . Dies bedeutet, dass die Ausführung angehalten wird, bis die CPU die Möglichkeit hat, weitere Befehle auszuführen. normalerweise während eines E / A-Abrufvorgangs. Die Verwaltung dieses Prozesses wird als "CPU-Planung" bezeichnet und wird von der Hardware für Sie erledigt - die Anwendung muss dies nur zulassen (Kontrolle aufgeben).

Ein häufiges Missverständnis von Multithreading ist, dass die Dinge schneller ausgeführt werden. Dies ist nicht der Fall, es passieren nur mehr Dinge gleichzeitig , um die CPU-Ressourcen besser zu nutzen. Es ist, als würde ein einzelnes Taxi (Personentransporter) Personen zwischen einem Flughafen und einem Konferenzzentrum transportieren, während vier Personen den Shuttleservice durchführen. Sie fahren alle gleich schnell, gerade jetzt bewegen Sie sich mehr.

Die Anwendung, die "Multithread-fähig" ist, ermöglicht es der Hardware, die CPU-Zeit zu verwalten und zu planen. Da mehr CPU zugewiesen werden kann, erhalten die Hintergrundjobs mehr Ressourcen, um den Job zu erledigen.

Allan
quelle
1
Können Sie kurz erklären, warum eine Anwendung ohne Multithreading im Hintergrund langsamer ist? Meine Vorstellung lautet: Es werden N Threads gleichzeitig ausgeführt, und der Mac verwendet automatisch 85% seiner Ressourcen für den "Haupt" -Thread, der dem Benutzer zugewandt ist, und 15% werden für alle anderen Threads aufgeteilt. Ich weiß nichts darüber, ich mache es nur nach.
Andrew Swift
1
Im Allgemeinen werden Apps mit einem Thread im Hintergrund "angehalten" und im Vordergrund "ausgeführt". Um eine App im Hintergrund am Leben zu erhalten, "fragt" sie kurz die CPU ab und ruft einige Funktionen auf, um Dinge zu tun (z. B. das Speichern Ihrer Datei). Es geht nicht darum, die CPU per se zuzuweisen. Beim Lesen der Foren sehen Benutzer mit Mac-Profis mit 8 und 16 Kernen nur einen einzigen Kern, der beim Ausführen von KI verwendet wird, was bedeutet, dass einfach nicht alle Ressourcen genutzt werden.
Allan
1
Wenn Sie Ihre Antwort mit dieser Beschreibung aktualisieren möchten, wähle ich sie gerne als richtig aus.
Andrew Swift
1
@ Allah Wow! Ich hätte nie gedacht, dass Adobe Illustrator kein Multithreading unterstützt! Für mich scheint es ein wahrscheinlicher Kandidat für Multithreading zu sein. Andererseits hat Microsoft lange gebraucht, um Multithreading mit Excel (einem weiteren offensichtlichen Kandidaten) zu unterstützen, und selbst jetzt ist die Implementierung nicht sehr gut. Kein Zweifel, im Laufe der Zeit werden immer mehr Apps dies unterstützen.
Monomeeth
1
@ Monomeeth - ich stimme zu. Ich konnte nicht glauben, dass die KI so weit hinter der Entwicklungskurve lag. Eine Sache, die ich im Forum gelesen habe, war, dass Benutzer beklagten, dass CC es Adobe im Wesentlichen ermöglichen würde, Einnahmen zu erzielen und das Produkt nicht zu reparieren. Da Apple auf seine eigenen CPUs umstellt und die Unterstützung für 32-Bit-Apps beendet, ist Adobe möglicherweise gezwungen, Probleme zu beheben.
Allan
0

Diese Antwort stammt von Mordy Golding , Produktmanager für Adobe Illustrator (2001-2004) bei Quora :

Vektorgrafiken haben ihre Vor- und Nachteile. Dies ist leider einer der Nachteile. Dies liegt daran, dass Vektorgrafiken in einer linearen Stapelreihenfolge gezeichnet werden.

Nehmen Sie ein einfaches Beispiel: Nehmen Sie eine einzelne Ebene mit einem einzelnen Rechteck. Dupliziere diese Ebene 100 Mal. Obwohl nur die oberste Ebene sichtbar ist, zeichnet der Illustrator jedes Rechteck von der untersten Ebene nach oben. Illustrator kann die Ebene 50 erst zeichnen, wenn die vorherigen 49 fertig sind. Dies ist anders als bei Photoshop, bei dem es nur darum geht, welche Pixel letztendlich sichtbar sind.

Das Konzept weiter ausbauen. Angenommen, Sie hatten 4 Kerne. Sie können eine Photoshop-Datei nehmen und in ein Raster von 4 Bereichen aufteilen und jedem Kern anweisen, 1 Bereich zu zeichnen - alles gleichzeitig. Dies liegt daran, dass ein Pixel in einem Raster keinerlei Auswirkungen auf Pixel in einem anderen Rasterbereich hat. Da Sie ein Foto in mehrere unabhängige Bereiche aufteilen können, können Sie mehrere Kerne zuweisen, um jeden Bereich gleichzeitig zu rendern.

Im Illustrator wird jedoch jedes Objekt in der Reihenfolge gezeichnet, in der es in der Stapelreihenfolge angezeigt wird. Wenn ich also ein Bild in ein Raster von vier Teilen aufteile, muss ich immer noch alle Kunstobjekte für Objekte erstellen, egal in welchem ​​Raster es sich befindet. Das bedeutet, dass alle 4 Kerne noch warten müssen, bis alle Objekte gezeichnet wurden, bevor sie gerendert werden.

Dies bedeutet, dass nur einige Arten von Funktionen Multi-Core-Funktionen in Illustrator unterstützen können. Wenn Sie beispielsweise eine große Datei drucken, übergibt der Illustrator das Druckspooling an einen anderen Kern und kehrt zu Ihrem Dokument zurück, um sofort weiterarbeiten zu können. Leider ist dies nicht möglich, um lineare Aufgaben wie das Zeichnen / Rendern von Kunst zu beschleunigen.

Andrew Swift
quelle