Illustratorがバックグラウンドにあるとき、なぜ2%の速度に調整されるのですか?


8

私はAdobe Illustratorで.jsxスクリプトを定期的に実行して、特定の形式で多数のファイルを保存しています。

  • Illustratorがアクティブなアプリである場合、5つのファイルに対してスクリプトを実行するには23秒かかります

  • Illustratorが最も重要なアプリではない場合、5つのファイルに対してスクリプトを実行すると、5分以上かかります

  • Activity Monitorによると、IllustratorはフォアグラウンドではCPUの75%を使用していますが、バックグラウンドでは2%未満に制限されています

  • Activity Monitorによると、App Napは使用されていません

なぜこれが起こっているのですか?それを変更する方法はありますか?

イラストレーターを待っている間に他のタスクを実行できるようにしたいと思います。現状では、Illustratorを前面に表示する必要があります。

私が試したいくつかのこと:私はそれを知っていました

sudo sysctl debug.lowpri_throttle_enabled=0

Time Machineのバックアップを高速化するために機能したので、この場合は役立つかもしれません。それは効果がなかった

App Napを無効にしてみました。

defaults write NSGlobalDomain NSAppSleepDisabled -bool YES

それは効果がなかった

TinkerToolを試しましたが、これはlowpri_throttle_enabled設定を変更するための単なるGUIだと思います。それは効果がなかった

回答:


6

これはアドビの問題のようです。具体的には、AIのコードベースはマルチスレッドではありません。

アドビのフォーラムであなたの正確な問題に対処するディスカッションを見つけることができました-IllustratorをCPUでマルチスレッド化する

イラストレーターのパフォーマンスはひどいものであり、最も基本的な操作を除いて、その遅くて途方もない操作です。マルチコアとマルチスレッドCPUの時代に今、とんでもない単一のCPUスレッドにのみバインドされており、長年このようになっています。バックグラウンドタスクを処理することはできず、PhotoshopやinDesignなどの他のAdobeソフトウェアとは機能やパフォーマンスがまったく異なります。

強調鉱山

残念ながら、コードがバックグラウンドのCPU操作をサポートできない場合、Macの観点から物事をスピードアップするためにあなたができることは何もありません。フォーラムのユーザー全員が(不本意ながら)受け入れるので、唯一の解決策はAdobeからのアップデートを待つことです。

なぜそうなのか

一般的に言えば、バックグラウンドのアプリケーションは「一時停止」されます-技術的には、それらの優先度低くなります。これは、CPUがさらにコマンドを実行する機会があるまで実行が停止することを意味します。通常、IOフェッチ操作中。このプロセスの管理は "CPUスケジューリング"と呼ばれ、ハードウェアが処理するものです-アプリケーションはそれを許可する必要があります(制御を放棄する)。

マルチスレッドの一般的な誤解は、物事がより速く実行されるということです。これは当てはまりません。CPUリソースをより有効に利用して、同時に多くのことが発生します。それは、空港と会議センターの間で1人のタクシー(人のキャリア)が4人でシャトルを行うのに対して、4人でタクシーを運ぶようなものです。彼らはすべて同じ速度で進んでいます、それは今あなたがもっと動いている今です。

アプリケーションが「マルチスレッド対応」であることにより、ハードウェアはCPU時間を管理およびスケジュールでき、割り当て可能なCPUが増えるため、バックグラウンドジョブはより多くのリソースを取得してジョブを完了します。


1
非マルチスレッドアプリケーションがバックグラウンドで遅くなる理由を簡単に説明できますか?私の想像では、Nスレッドが同時に実行され、Macは自動的にそのリソースの85%を「メイン」のユーザー向けスレッドで使用し、15%は他のすべてのスレッドに割り当てられます。私はこれについて何も知りません、私はただそれを作っています。
Andrew Swift

1
一般的に、シングルスレッドアプリはバックグラウンドで「一時停止」され、フォアグラウンドで「実行」されます。バックグラウンドでアプリを存続させるために、一時的にCPUを「ポーリング」し、いくつかの関数を呼び出して処理を実行します(ファイルの保存など)。それ自体は「CPUの割り当て」ではありません。フォーラムを読むと、8コアと16コアのMac Proを使用している人は、AIを実行しているときにシングルコアしか使用されていないことを意味します。つまり、完全なリソースを活用していないのです。
アラン

1
この説明で回答を更新したい場合は、正解として選択させていただきます。
Andrew Swift

1
@アランすごい!Adobe Illustratorがマルチスレッドをサポートしていないことを私は決して想像しなかったでしょう!私には、それはマルチスレッドの有力な候補のようです。繰り返しになりますが、MicrosoftがExcel(別の明白な候補)でマルチスレッドをサポートするのに長い時間がかかり、今でもその実装はあまり良くありません。時間が経つにつれて、ますます多くのアプリがそれをサポートするようになることは間違いありません。
Monomeeth

1
@Monomeeth-同意する。AIが開発曲線よりもはるかに遅れているとは信じられませんでした。私がフォーラムで読んだことの1つは、CCは基本的にアドビが製品を修正するのではなく収益を集めることを許可することを嘆くユーザーでした。Appleが独自のCPUに移行し、32ビットアプリのサポートを終了したため、Adobeは問題の修正を余儀なくされる可能性があります。
アラン

0

この回答は、Quoraの Adobe Illustrator(2001-2004)の製品マネージャーであるMordy Goldingからのものです。

ベクターグラフィックスには、長所と短所があります。残念ながら、これは欠点の1つです。これは、ベクターグラフィックスが線形の重ね順で描画されるためです。

簡単な例を1つ挙げてみましょう-単一の長方形を持つ単一のレイヤーを取ります。そのレイヤーを100回複製します。最上層のみが表示されていますが、イラストレーターは各長方形を最下層から上に描画します。Illustratorは、前の49枚が完了するまで、レイヤー50を描画できません。これは、最終的にどのピクセルが表示されるかのみを考慮しているフォトショップとは異なります。

コンセプトをさらに拡張します。たとえば、4つのコアがあるとします。photoshopファイルを4つのエリアのグリッドに分割し、各コアに1つのエリアを描画するように指示することができます-すべて同時に。これは、あるグリッドのピクセルが別のグリッド領域のピクセルにまったく影響を与えないためです。写真を複数の独立した領域に分割できるため、複数のコアを割り当てて各領域を同時にレンダリングできます。

ただし、illustratorでは、各オブジェクトは重ね順で表示される順序で描画されます。したがって、画像を4つのグリッドに分割した場合でも、どのグリッドであっても、オブジェクトごとにすべてのアートオブジェクトを作成する必要があります。つまり、4つのコアすべてが、すべてのオブジェクトが描画されるまで待機してからレンダリングする必要があります。

これは、Illustratorのマルチコア機能をサポートできるのは一部の種類の関数だけであることを意味します。たとえば、大きなファイルを印刷する場合、illustratorは印刷スプールを別のコアに渡し、ドキュメントに戻ってすぐに作業を続行します。しかし、残念ながら、これはアートの描画やレンダリングなどの線形タスクを高速化することはできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.