Warum wird Illustrator im Hintergrund auf 2 % Geschwindigkeit gedrosselt?

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 die Ausführung des Skripts für 5 Dateien 23 Sekunden .

  • Wenn Illustrator nicht die beste App ist, dauert das Ausführen des Skripts für 5 Dateien mehr als 5 Minuten .

  • Laut Activity Monitor verwendet Illustrator im Vordergrund etwa 75 % der CPU , wird aber im Hintergrund auf weniger als 2 % gedrosselt .

  • Laut Aktivitätsmonitor wird App Nap nicht verwendet .

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

Ich würde gerne andere Aufgaben erledigen können, während ich auf Illustrator warte. So wie es aussieht, bin ich verpflichtet, Illustrator im Vordergrund zu halten.

Einige Dinge, die ich ausprobiert habe : Das wusste ich

sudo sysctl debug.lowpri_throttle_enabled=0

Ich habe daran gearbeitet, Time Machine-Backups zu beschleunigen, also dachte ich, dass es in diesem Fall helfen 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 GUI ist, um die Einstellung lowpri_throttle_enabled zu ändern . Es hatte keine Wirkung .

Antworten (2)

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

Ich konnte in den Adobe-Foren 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, es ist langsam und schwerfällig, außer bei den grundlegendsten Operationen. Es ist nur an einen einzigen CPU-Thread gebunden, was im Zeitalter von Multi-Core- und Multi-Thread-CPUs lächerlich ist, und das seit vielen Jahren. Es kann keine Hintergrundaufgaben bewältigen und ist in Funktion und Leistung völlig ungleich mit anderer Adobe-Software wie Photoshop und InDesign.

Betonung 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. Wie die Benutzer im Forum alle (widerwillig) akzeptieren, besteht die einzige Lösung darin, auf ein Update von Adobe zu warten.

Warum das so ist

Im Allgemeinen werden Anwendungen im Hintergrund "angehalten" - technisch gesehen haben sie eine niedrige Priorität . Das bedeutet, dass die Ausführung stoppt, bis die CPU Gelegenheit hat, weitere Befehle auszuführen; normalerweise während einer IO-Abrufoperation. Die Verwaltung dieses Prozesses wird "CPU-Scheduling" genannt und ist etwas, das die Hardware für Sie erledigt - die Anwendung muss es nur zulassen (die Kontrolle abgeben).

Ein weit verbreitetes Missverständnis beim Multi-Threading ist, dass Dinge schneller ausgeführt werden. Dies ist nicht der Fall, es passieren einfach mehr Dinge gleichzeitig , wodurch die CPU-Ressourcen besser genutzt werden. Es ist, als hätte man ein einzelnes Taxi (Personentransporter), das Personen zwischen einem Flughafen und einem Konferenzzentrum hin- und herbefördert, statt vier Personen, die das Hin- und Herpendeln übernehmen. Sie fahren alle gleich schnell, nur bewegst du dich jetzt mehr.

Da die Anwendung "multi-threadfähig" ist, kann die Hardware die CPU-Zeit verwalten und planen, und da mehr CPU zugewiesen werden kann, erhalten die Hintergrundjobs mehr Ressourcen, um die Arbeit zu erledigen.

Können Sie kurz erklären, warum eine Nicht-Multithread-Anwendung im Hintergrund langsamer wäre? Meine Vorstellungskraft schlägt vor: Es laufen N Threads gleichzeitig, und der Mac verwendet automatisch 85% seiner Ressourcen für den "Haupt"-Benutzer-Thread und 15% werden für alle anderen Threads aufgeteilt. Ich weiß nichts darüber, ich erfinde es nur.
Im Allgemeinen werden Single-Thread-Apps im Hintergrund „angehalten“ und im Vordergrund „ausgeführt“. Um eine App im Hintergrund am Leben zu erhalten, "fragt" sie kurzzeitig die CPU ab und ruft einige Funktionen auf, um Dinge zu tun (z. B. das Speichern Ihrer Datei). Es geht nicht um die "Zuweisung von CPU" an sich. Beim Lesen der Foren sehen Leute mit 8- und 16-Kern-Mac-Profis nur einen einzigen Kern, der beim Ausführen von KI verwendet wird, was bedeutet, dass es einfach nicht die vollen Ressourcen nutzt.
Wenn Sie Ihre Antwort mit dieser Beschreibung aktualisieren möchten, wähle ich sie gerne als richtig aus.
@ Allan Wow! Ich hätte nie gedacht, dass Adobe Illustrator kein Multithreading unterstützt! Für mich scheint es ein wahrscheinlicher Kandidat für Multi-Threading zu sein. Andererseits hat Microsoft lange gebraucht, um Multi-Threading mit Excel zu unterstützen (ein weiterer offensichtlicher Kandidat), und selbst jetzt ist seine Implementierung nicht sehr gut. Zweifellos werden es im Laufe der Zeit immer mehr Apps unterstützen.
@Monomeeth - Ich stimme zu. Ich konnte nicht glauben, dass die KI so weit hinter der Entwicklungskurve zurückblieb. Eine Sache, die ich im Forum gelesen habe, waren Benutzer, die sich darüber beklagten, dass CC es Adobe im Wesentlichen ermöglichen würde, Einnahmen zu erzielen und das Produkt nicht zu reparieren. Da Apple auf eigene CPUs umsteigt und die Unterstützung für 32-Bit-Apps beendet, ist Adobe möglicherweise gezwungen, Probleme zu beheben.
@Allan Das ist ein ausgezeichneter Punkt. :) Ich muss daran denken, dass ich das nächste Mal, wenn ich in eine Diskussion über die Vorzüge (oder nicht) von Apple komme, daran denken muss, auf ihre eigenen CPUs umzusteigen. Es ist ein ziemlich heißes Thema, aber ich schätze, die meisten Leute wissen (oder erinnern sich) wahrscheinlich nicht, dass Apple das schon einmal mit 68K zu PowerPC und dann wieder mit PowerPC zu Intel gemacht hat.
Diese Antwort scheint bestenfalls unvollständig, aber wahrscheinlich falsch. Es gibt keinen Grund, warum Single-Thread-Apps im Hintergrund viel langsamer laufen sollten. Es ist nicht erforderlich, dass ein Programm Multi-Threaded sein muss, um ordnungsgemäß im Hintergrund ausgeführt zu werden. Hier spielt etwas anderes eine Rolle. Die technische Erklärung, dass die CPU-Planung in Hardware usw. erfolgt, ist ebenfalls falsch.

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. Das liegt daran, dass Vektorgrafiken in einer linearen Stapelreihenfolge gezeichnet werden.

Nehmen Sie ein einfaches Beispiel – nehmen Sie eine einzelne Ebene mit einem einzelnen Rechteck. Duplizieren Sie diese Ebene 100 Mal. Obwohl nur die oberste Ebene sichtbar ist, zeichnet Illustrator jedes Rechteck von der untersten Ebene nach oben. Illustrator kann Ebene 50 nicht zeichnen, bis die vorherigen 49 fertig sind. Dies ist im Gegensatz zu Photoshop, das sich nur darum kümmert, welche Pixel letztendlich sichtbar sind.

Erweiterung des Konzepts. Angenommen, Sie hätten 4 Kerne. Sie könnten eine Photoshop-Datei nehmen und sie in ein Raster von 4 Bereichen aufteilen und jedem Kern sagen, dass er 1 Bereich zeichnen soll – alles gleichzeitig. Das liegt daran, dass ein Pixel in einem Raster keinerlei Einfluss 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.

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

Dies bedeutet, dass nur einige Arten von Funktionen die Multicore-Funktionalität in Illustrator unterstützen können. Wenn Sie beispielsweise eine große Datei drucken, übergibt Illustrator das Druckspooling an einen anderen Kern und bringt Sie zurück zu Ihrem Dokument, um sofort weiterzuarbeiten. Aber leider ist dies nicht möglich, um lineare Aufgaben wie das Zeichnen/Rendern von Kunst zu beschleunigen.