Size_AA_Batteryのブログ

あれっすよ。更新頻度めっちゃ低いっすよ。

Unity_Profiler[CPU_Usage]:Othersについてのお話

PC向けツール製作中の出来事。

やけにカクつく。大したオブジェクトを置いてる訳でも無いのに、と。

statsで確認してみた所、セットパスコ18、バッヂ41でした。

スマホアプリ感覚で作っていた為、形振り構わずプロファイラを確認します。

f:id:Size_AA_Battery:20171211120807p:plain

あ゛あ゛ッ゛

解決:アップデート[(記事)Unity2017.3.0a7] [(今回)Unity2017.3.0f2]

 

版図を拡げるOthers

事の流れはこんな感じ。

①[撮影時間]19:26:06 / およそ100FPS(黄色はVsync)

f:id:Size_AA_Battery:20171211153445p:plain

②[撮影時間]19:33:20(+7m14s) / およそ100FPS

f:id:Size_AA_Battery:20171211153452p:plain

③[撮影時間]19:41:32(+8m12s) / およそ45FPS

f:id:Size_AA_Battery:20171211153456p:plain

 19:26:06 - 19:41:32(経過時間:15m26s)

 

「Others」ガチ盛り。一体何があったのやら。

心辺りこそ大量に存在するが故、解らんのですよ。

  • 「お馴染みGC関係なんじゃねぇの、お前形ばっか気にして最初手触れんやろ」
  • 「つかuGUI使い過ぎじゃないか?動かすんならCanvas挟もうな?」
  • 「いやだってお前いっつもchromeやら開いてますやん?流石に無関係な訳…」

しかしもう一つ。

(多分)俺自身が問題源ではない、別の人間である可能性がある問題が。

もの凄く前から気になっている、それこそUnity5.3.2f1辺りから気になっている問題が、引っ掛かった。ガッチリと。

メモリ使用量に関連が?

①[撮影時間]19:26:41 / メモリ使用量:497.8MB

f:id:Size_AA_Battery:20171211152648p:plain

②[撮影時間]19:33:46(+7m5s) / メモリ使用量:654.6MB

f:id:Size_AA_Battery:20171211152702p:plain

③[撮影時間]19:41:50(+8m4s) / メモリ使用量:820.8MB

f:id:Size_AA_Battery:20171211152707p:plain

19:26:41 - 19:41:50(経過時間:15m9s)

 

使用時間が長引くにつれ、使用メモリが増えていく。(1.5s/0.1MBって感じ)

そっち方面はこれから詳しくなりたいと考えている為、当然なのかどうかってのは解らない。

しかし、ゲームやらchromeやらtwitterクライアントやら、そこいらは起動しててもメモリにここまでの変動は無い、ましてやVBですら三日放置でも100MB増えたかどうか、なんて状況から考えると、もしや異常なのでは?なんて考えたりもする。

(因みにUnityを半日放置すると、使用メモリ1800MBになってたりする)

ゲームエンジンがこういう物なのかもしれない。UE4でそうなら、大人しく引き下がる。

引き下がった所でどうせまたふりだしに戻るだけじゃん。

Overviewを覗く

おっと、そういえばProfilerにOverviewあるじゃん。

ん?てかそもそもこれ見たら解決では?なあんだ、やっぱりクソ案件じゃん。

[撮影時間]三日前:18:22:07(注:検証前の画像、記事作成の発端となった一枚)

f:id:Size_AA_Battery:20171211155021p:plain

Profiler.FinalizeAndSendFrame [Total:97.9%] [Self:97.9%] [Calls:1] [GC Alloc:0B] [Time ms:51.15] [Self ms:51.15]

>>>[Time ms:51.15] [Self ms:51.15]<<<

馬鹿かよ。[1/60 = 0.016] [1/30 = 0.033](一応) 

気になってTimeline見てると、ちょっと気になる要素があった。

[撮影時間]二日後:16:02:05

f:id:Size_AA_Battery:20171211160222p:plain

上三つは関係無さそう?プロファイラ、それに[Unity]なんて付いてるプロファイラ使ってるんだから、[Unity_Job_System]が関係してるんだろう、と。

[Idle(9.6ms)]?何だこれ、なんて調べてると("Unity Job System Idle"で検索)、「C#JobSystem」とか訳解らないのも出てきたり。(でも動作速度10~20倍なんて書かれてて興味は湧いた)

【CEDEC2017】C#JobSystem を使った Unity流マルチスレッドプログラミング

お馴染みUnity_Answersより「What is "Others"」系の質問も探した。

A「おまそれDebug.Logな。あれCPU30%近し占めるべ。」

A「あれ?俺んとこ1%やが。稀に2%もあるけどなあ」

└Q「わかった。で、"Others"ってなんや」

世界は広いなあって。文章じゃ伝わらない事も、何とか助けてやりたい人も居るんだなあ、なんて綺麗事をうすらうすら考えてると、ふと「何で"Idle"に絞るん?原因は"Profiler.Finalizeなんちゃら"じゃないか?」と。

("Profiler.FinalizeAndSendFrame"で検索)

解決策

結果(多分これ)

issuetracker.unity3d.com

[Time ms increases for Profiler.Finalizeandsendframe when the profiler is open.]

僕「TIme ms…"これ"が増える…Profiler開いた時から…」

僕「プロファイラ開いたら、"これ"が増える?うっそだ、多分中学英語間違えてんだろうな」(使用:google翻訳)(過去の出来事がフラッシュバック)

翻訳/タイトル「プロファイラを開いてる時、Profiler.FinalizeAndSendFrameの時間が増える」

翻訳/本文/Unity「2017.3.0a7で修正済み」

翻訳/本文/コメント「Found a Solution,just unclick the very small square icon in the profiler : Others」(解決法見つけた。Othersって書かれたちっちゃい四角アイコンクリックしてみ?)

僕「HAHAH A  H   A    H     A      H      A        H        A

 

検証結果

治りましたね。綺麗サッパリ。

[撮影時間]12:26:19(Vsyncなし)約1000fps

f:id:Size_AA_Battery:20171213123059p:plain

[撮影時間]12:27:30(Vsync込み。Othersは上と同じくらい。)

f:id:Size_AA_Battery:20171213123103p:plain

[撮影時間]12:30:01(Vsyncなし)約1000fps

f:id:Size_AA_Battery:20171213123107p:plain

 二分経ってOthersが増えないという事は、そういう事なんじゃないかな。

ここに手触れた序なのか、UIも多少変わってたりしてます。

2017.3.0f2にしてから気付いたのですが、プロファイラでもGCを利用してるのか、一定周期で[GC Allocated]反応してたりってので、気持ちちょっとだけ注意しておきたい。

因みに、メモリ使用量の増大問題も無くなってます。

数十分放置で変わらず530MBを彷徨っている感じです。

「2017.12.24追記」 Unity2017.2.1f1では修正されておらず。何で公式配布するかなあ…

 「2017.12.25追記」Unity2017.3.0.f3にて修正確認!因みに公式配布!