ユーザープログラムサイズとkernel_taskの関係?

大規模な計算プログラム(2スレッド、使用メモリ12GB位)を走らせると途中からkernel_taskのスレッド占有が始まり、実行速度が最終的に1/10以下に低下してしまいます。一方使用メモリ4GB位で同一プログラムを走らせた場合そのような現象はありません。kernel_taskの挙動はユーザープログラムの占有メモリ規模に依存するものなのでしょうか?


Mac mini 2018 or later

投稿日 2022/03/03 21:50

返信
スレッドに付いたマーク ランキングトップの返信

投稿日 2022/03/03 22:41

物理メモリーはどれだけあるマシンなのでしょう?

ユーザプログラムで大きなメモリー占有すれば、osが働くためのメモリースペースが減ってしまって、それを確保するために大きなスワップが発生してるのでは?大きなスワップが発生すれば、ディスクとメモリーとのデータのやり取りが激増しますので当然パーフォマンスはガタ落ちになります。スワップの大きさは、アクティビティモニターのメモリーを開けると最下段にその時点でのスワップの大きさが出てます。

もしそういうことなら、12GBも使うプログラムを動かすなら、32GBぐらいの物理メモリーを積んだマシンで実行するとか。(現在のマシンに積んでるメモリーがわからないので、適当に書いてます。現在、32GB積んだマシンでやってる時の話なら、64GBにするとか)

返信: 2
スレッドに付いたマーク ランキングトップの返信

2022/03/03 22:41 fumihiro274 への返信

物理メモリーはどれだけあるマシンなのでしょう?

ユーザプログラムで大きなメモリー占有すれば、osが働くためのメモリースペースが減ってしまって、それを確保するために大きなスワップが発生してるのでは?大きなスワップが発生すれば、ディスクとメモリーとのデータのやり取りが激増しますので当然パーフォマンスはガタ落ちになります。スワップの大きさは、アクティビティモニターのメモリーを開けると最下段にその時点でのスワップの大きさが出てます。

もしそういうことなら、12GBも使うプログラムを動かすなら、32GBぐらいの物理メモリーを積んだマシンで実行するとか。(現在のマシンに積んでるメモリーがわからないので、適当に書いてます。現在、32GB積んだマシンでやってる時の話なら、64GBにするとか)

2022/03/03 23:28 はに への返信

返信ありがとうございます。

M1チップ16GB環境で実験しています。

またアクティビティモニタを確認すると

スワップは0byteで、kernel_taskが確かに大量のディスクアクセスを伴っていました。

OS用には3〜4GB残しとけば良いと思っていましたが

プログラム内のメモリアクセスをOSがバックで支えていると考えれば理解できます。


このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

ユーザープログラムサイズとkernel_taskの関係?

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。