パフォーマンス問題
現在開発中のコバルト爆弾αΩ用のDVJパッチは、複数の動画と音を同時に扱うため今までになく重く、フレームレート5fpsくらいしかでてなくて泣きそうでした。一応、Max上で見られるMSPのCPU仕様率は10%もいってないし、jit.qt.movie には loadram メッセージを送る事で動画はメモリに直接おいて、ボトルネックになりそうな部分は回避してるつもりなんですが、上手くいっていませんでした。
Max6をMacのアクティビティモニタでみると1つのコアしか使ってないみたいです。CPU使用率は130%前後。ハイパースレッディングが効いてるはずなので、1コア最大200%だとしても70%くらいCPU使えてないように思えます。メモリも8GB空いてる!なにが原因だろうと、まずはマルチコア使うように変更できないかな?とCycling74のフォーラムを漁ってはみたものの、マルチスレッドに関する話題はあるけど、マルチコアは無理みたいな話がありました。お前の実力は、こんなものなのか!?と疑問を持ちつつ探っていると、見つけました!!
解決策
Maxの環境設定(Command + , )の中にあるThrottle関連の設定を変更します。なんとfpsが5~10もUPしました。特にQueue Throttle の値を 10 → 32000 へ上げたのが効いてるみたいです。jit.qt.movie や jit.matrix 重いようだったのですが、qmetro等のロープライオリティな処理をやり切れないまま、スケジュールが回ってたのかと推測できます。とりあえず、これでライブ出来そうです。以下、各パラメーターの適当な意訳。
- Poll Throttle :CPUのスケジューラーがハイプライオリティイベントにおいて処理するイベントの数
- Queue Throttle : ロープライオリティで処理するイベントの数
- Redraw Queue Throttle :UI関連で処理するイベントの数?
- Refresh Rate:UIの描画レート
- Scheduler Rate:スケジューラーが呼ばれるインターバル
- Scheduler Slop:ロープライオリティのスケジューラーが休止してる時間
スケジュールやらスレッドやらVMに関しては、あまり理解してないのですが動いてるので取り敢えず良いかな・・・たぶんPCの種類によってセッティングも変わってくるので、色々試して貰えればと思います!
参考サイト
-
英語でスケジュールの設定について説明がかいてあります。
- Scheduler settings suggestions for MaxMSP
今回変更したパラメーターのセッティング例が載っています。参考にさせて頂きました。