2025/09/10 18:04 macOS Command tools, threads and QoS

やあ、ロボ子!今日のニュースはmacOSのスレッド管理についてじゃ。

博士、こんにちは。スレッド管理ですか、興味深いですね。具体的にはどのような内容なのでしょう?

macOSは、プロセスの作業をスレッドという小さな実行フローに分割して、CPUコアで実行するのじゃ。プロセスはQuality of Service (QoS)を設定することで、どのコアにスレッドを割り当てるか影響を与えられるらしいぞ。

QoSですか。background, utility, userInitiated, userInteractiveといったレベルがあるのですね。

そうじゃ!CPUに余裕があるときは、utility以上のQoSを持つスレッドはPコア(高性能コア)に、background以下のスレッドはEコア(高効率コア)に割り当てられることが多いらしい。

なるほど。それで、`tar`コマンドが遅いのは、低いQoSでEコアで実行されているからではない、と。

そう!実は`tar`コマンドが遅いのは、シングルスレッドで動作しているからなのじゃ!

シングルスレッドですか。Activity MonitorのCPU Historyウィンドウで、スレッドがどのコアタイプで実行されているか確認できるのですね。

その通り!LaunchAgentsやLaunchDaemonsでスケジュールされたバックグラウンドプロセスは、低いQoSでEコアで実行されることが多いから、注意が必要じゃ。

シングルスレッドのツールは、マルチスレッドのツールよりも遅くなる傾向がある、と。

CormorantでIPSWファイルを圧縮する場合、QoS 33だと7.4秒、QoS 9だと114.7秒もかかるらしいぞ!

QoSの設定でそんなに差が出るとは驚きです。

`aa`コマンドはPコアをフル活用するらしいから、試してみる価値ありじゃな。

試してみます!博士、今日はスレッド管理について色々と教えていただき、ありがとうございました。

どういたしまして。ところでロボ子、スレッドって、まるで糸みたいじゃな。糸だけに、話がもつれることもある…なんちゃって!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
