๐ŸŽฎ Unity Study/Unity

[Unity Wave 2022] 2์ผ์ฐจ_๋‹ค์–‘ํ•œ ์‚ฌ๋ก€๋กœ ์•Œ์•„๋ณด๋Š” ์œ ๋‹ˆํ‹ฐ ํ”„๋กœ์ ํŠธ ์ตœ์ ํ™”(์ตœ ์Šน ์‹ Senior Developer Support Engineer ใ…ฃ Unity Technologies)

ibelieveinme 2022. 5. 10. 16:38
728x90

๋ฌธ์ œ์‹œ ์‚ญ์ œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!


[3๊ฐ€์ง€ ์ตœ์ ํ™” ๋ฐฉ๋ฒ• - ์‚ฌ๋ก€ 5๊ฐ€์ง€]

1. CPU ๋น„์šฉ ์ตœ์ ํ™”: UGUI.Rendering.UpdateBatches() ๋ฌธ์ œ ์‚ฌ๋ก€, GC Allocation์— ์˜ํ•œ ํžˆ์นญ ๋ฌธ์ œ ์‚ฌ๋ก€

2. GPU ๋น„์šฉ ์ตœ์ ํ™”: ์˜๋„ํ•˜์ง€ ์•Š์€ ์ „์ œํ™”๋ฉด ๋ Œ๋”๋ง ๋น„์šฉ ๋ฌธ์ œ ์‚ฌ๋ก€

3. ๋ฉ”๋ชจ๋ฆฌ&์—์…‹ ๋น„์šฉ ์ตœ์ ํ™”: ์—์…‹๋ฒˆ๋“ค ์ค‘๋ณต ์—์…‹ ๋ฌธ์ œ ์‚ฌ๋ก€, GC Allocation์— ์˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™” ์‚ฌ๋ก€

 

[ํ•˜๋‹จ ๋‚ด์šฉ ์š”์•ฝ๋ณธ]


1. CPU ๋น„์šฉ ์ตœ์ ํ™”: UGUI.Rendering.UpdateBatches() ๋ฌธ์ œ ์‚ฌ๋ก€, GC Allocation์— ์˜ํ•œ ํžˆ์นญ ๋ฌธ์ œ ์‚ฌ๋ก€

 

1) UpdateBatches๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ์‚ฌ๋ก€

: ํ”„๋กœํŒŒ์ผ๋ง์œผ๋กœ ๋ฒ„ํŠผ์ด ์›€์ง์—ฌ์„œ ๋น„์šฉ์ด ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜๋ฉด. ๋ฒ„ํŠผ์„ ๋ณ„๋„์˜ Canvas๋กœ ์˜ฎ๊ธฐ๋งŒํ•ด๋„ ๋ฐฐ์น˜์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ. ์ฆ‰, ๋™์ ์ธ UI ์š”์†Œ๋ฅผ ๋ณ„๋„์˜ ์บ”๋ฒ„์Šค๋กœ ๋‚˜๋ˆ ๋ผ.

 

2) GC allocation์ด ๋ฐœ์ƒ๋˜์–ด ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์‚ฌ๋ก€

ํ”„๋กœํŒŒ์ผ๋ง์œผ๋กœ ๊ฐ‘์ž๊ธฐ ๋น„์šฉ์ด ์ปค์ง€๋Š” ์œ„์น˜๋ฅผ ์ฐพ์Œ.

GC.Collect ํ˜ธ์ถœ(๊ฐ€๋น„์ง€์ฝœ๋ ‰ํ„ฐ ๋ฐœ์ƒ) ๋•Œ๋ฌธ์— ํ”„๋ ˆ์ž„์ด ๋–จ์–ด์กŒ์Œ์„ ํ™•์ธ. GC.Alloc์ด ์ง€์†์ ์œผ๋กœ ์ผ์–ด๋‚˜๋Š” ์ƒํ™ฉ์„ ์ œ๊ฑฐํ•ด์•ผ ํ•จ.

๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ ๋ฐœ์ƒ์‹œ ํ”„๋ ˆ์ž„์ด ๋–จ์–ด์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Incremental GC ๋ฅผ ์ผœ๋Š” ๊ฒƒ๋„ ๋„์›€๋จ.

GC Allocation ์ฐพ๋Š” ๋ฒ•: ์ •์ ๋ถ„์„๋„๊ตฌ Project Audiotor๋ฅผ ํ†ตํ•ด์„œ๋„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ.

Analyze ๋ฒ„ํŠผ ํด๋ฆญ. Code > diagnoise.

 

3) ์œ ์‚ฌํ•˜๊ฒŒ GC.Collect ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•˜๊ณ  ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋ก€.

๋น„์šฉ์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜๋Š” ์—…๋ฐ์ดํŠธ ์ฝ”๋“œ์—์„œ๋Š” LINQ ๊ฐ™์€๊ฑฐ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋จ. ๋” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Œ.

 

2. GPU ๋น„์šฉ ์ตœ์ ํ™”

1) ์˜๋„ํ•˜์ง€ ์•Š์€ ์ „์ œํ™”๋ฉด ๋ Œ๋”๋ง ๋น„์šฉ ๋ฌธ์ œ ์‚ฌ๋ก€

3๊ฐœ ๋„ํ˜•์˜ ๋ Œ๋”๋ง ๋น„์šฉ์ด ๋‹ค ๋‹ฌ๋ž์Œ. ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ์ฐพ์•„๋ƒˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž.

๋ Œ๋”๋ง ๋น„์šฉ ์ฐพ๋Š” ๋ฒ•: XCode Frame Debugger์—์„œ ํ”„๋กœํŒŒ์ผ๋ง์„ ํ•ด๋ณด์ž.

์œ„ ํ™”๋ฉด์—์„  CPU, Disk ๋“ฑ์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์•„๋ž˜ ํ™”๋ฉด์—์„  GPU ๋น„์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ.

์ฆ‰, ์•„๋ž˜ ํ™”๋ฉด์—์„œ ์‚ฐ๋ชจ์–‘ ์•„์ด์ฝ˜ ํด๋ฆญ > Capture ๋ฒ„ํŠผ ํด๋ฆญ > ๋ Œ๋”๋ง ๋น„์šฉ์ˆœ์œผ๋กœ ๋ชฉ๋ก์ด ์ญ‰ ๋‚˜์˜ด.

์›ํ˜•์€ 123.17 ๋งˆ์ดํฌ๋กœ์ดˆ / ๋”์ž‘์€ ํ•˜์–€ ๋„ค๋ชจ๋Š” 774.54 ๋งˆ์ดํฌ๋กœ์ดˆ

๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ์—ˆ๋‚˜? ์ด๋ฏธ์ง€ ์˜์—ญ ์ฐจ์ด๊ฐ€ ์žˆ์—ˆ์Œ.

์œ„์ฒ˜๋Ÿผ ํ•„์š”ํ•œ ์˜์—ญ๋งŒ ๋ Œ๋”๋งํ•ด์•ผ ํ•จ.

์œ„ ์ •๋ฆฌ์ž๋ฃŒ ์ฐธ๊ณ .

 

3. ๋ฉ”๋ชจ๋ฆฌ&์—์…‹ ๋น„์šฉ ์ตœ์ ํ™”: ์—์…‹๋ฒˆ๋“ค ์ค‘๋ณต ์—์…‹ ๋ฌธ์ œ ์‚ฌ๋ก€, GC Allocation์— ์˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™” ์‚ฌ๋ก€

1) ์—์…‹๋ฒˆ๋“ค์— ํŒŒ์ผ์ด ์ค‘๋ณตํ•ด์„œ ๋“ค์–ด๊ฐ€๋Š” ๋ฌธ์ œ ์‚ฌ๋ก€

์”ฌ์— 5๊ฐœ์˜ ํ…์ŠคํŠธ๋ฅผ ๋ฐฐ์น˜ํ•จ.

๋ฉ”๋ชจ๋ฆฌ ํ”„๋กœํŒŒ์ผ๋Ÿฌ๋กœ ํ˜„์žฌ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

* ์œ ๋‹ˆํ‹ฐ ํ”„๋กœํŒŒ์ผ๋Ÿฌ ์‹คํ–‰ > ๋ฉ”๋ชจ๋ฆฌํƒญํด๋ฆญ > Open Memory Profiler ํด๋ฆญ > ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์—์„œ ์บก์ฒ˜๋ฒ„ํŠผ ํด๋ฆญ > ์Šค๋ƒ…์ƒท ํด๋ฆญ

cf) ๋ Œ๋” ํ…์Šค์ฒ˜๊ฐ€ ์‚ฌ์ด์ฆˆ๊ฐ€ ๊ฐ€์žฅ ํผ. 

์ด๋ฆ„์ด ๋™์ผํ•˜๊ณ  ์šฉ๋Ÿ‰์ด ๊ฐ™๋‹ค๋ฉด ์ค‘๋ณต์ผ ํ™•๋ฅ ์ด ๋†’๊ฒŸ์ง€. ์˜์‹ฌ์˜์‹ฌ.

์—์…‹๋ฒˆ๋“ค์—์„œ ์šฉ๋Ÿ‰ ํ™•์ธ.

์–ด๋–ค ์—์…‹์ด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€๋Š” Asset Bundle Browser์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ. ๊ฒฝ๊ณ  ๋ฝฑ.

๊ณตํ†ต๋˜๋Š” ํ•ด๋‹นํฐํŠธ๋ฅผ ๋”ฐ๋กœ ์—์…‹๋ฒˆ๋“ค๋กœ ๋ฌถ์–ด์ฃผ๊ณ  ์ƒˆ๋กœ ๋นŒ๋“œ๋ฅผ ํ•˜๋ฉด ์šฉ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ. ๋ชจ๋‘ 10KB๋กœ ์ค„์–ด๋“ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ.

์ •๋ฆฌ์ •๋ฆฌ

 

2) GC Allocation์— ์˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™” ์‚ฌ๋ก€

: ๋ฉ”๋ชจ๋ฆฌ ์ถ”์ ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

 

์šฉ๋Ÿ‰์ด ํฐ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ๊ณ„์† ์ƒ์„ฑ / ์‚ญ์ œํ•˜๋Š” ์ฝ”๋“œ.

๋ฉ”๋ชจ๋ฆฌ ๋น„์šฉ ๊ฒฐ๊ณผ.

GC Allocation์„ ๋ด๋ณด๋ฉด ์–ด๋–ค ํ•จ์ˆ˜์—์„œ ๋ฌด์—‡์ด ํ• ๋‹น๋˜์—ˆ๋Š”์ง€ ๋ณด์ž„. ์กฐ์‚ฌ์กฐ์‚ฌ.

๋…ธ๋ž€์˜์—ญ Empty Rfagmented Heap Space ๊ฐ€ ๊ณ„์† ์ฆ๊ฐ€ํ•จ.

์ฝ”๋“œ ์งค ๋•Œ, Memory Frofiler๋กœ ์š”๋Ÿฐ ์˜์—ญ์ด ์•ˆ์ƒ๊ธฐ๋Š”์ง€ ๊ณ„์† ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ. ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ ํ™•์ธ.

์–ด๋””์„œ ํ• ๋‹นํ–ˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜๋ฉด Object and Allocations์—์„œ ํ•„ํ„ฐ๋ง์„ ํ†ตํ•ด ์˜์‹ฌ ๊ฐ€๋Š” ๊ฒƒ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Œ. 

์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ ์ค‘์—, Heap Explorer๋กœ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ.

์ •์ ์ธ ์ฝ”๋“œ์—์„œ๋Š” Project Auditor์™€ Analyze๋ฅผ ํ†ตํ•ด์„œ๋„ ํ™•์ธ ๊ฐ€๋Šฅ. ์ž์ฃผ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๊ณณ์—์„  ์‚ฌ์šฉํ•˜์ง€ ๋งˆ๋ผ ๊ฒฝ๊ณ  ํ™•์ธ.

 

[์ •๋ฆฌ]

 

[Q&A]

Q. ์™œ ios๋กœ ๋นŒ๋“œํ•ด์„œ ํ”„๋กœํŒŒ์ผ๋Ÿฌ๋ฅผ ๋ถ™์˜€๋Š”์ง€ ?

: ํ•ด๋‹น๋˜๋Š” OS์˜ ํ”„๋กœํŒŒ์ผ๋Ÿฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒŒ ์ข‹์Œ.

728x90