Unity Android 스레드 설정 가이드
소개
이 문서는 Unity의 스레드 설정을 이해하고 최적화하는 방법에 대한 안내입니다. Unity는 다양한 플랫폼에서 효율적으로 작동하기 위해 스레드 관리를 제공합니다. 이 가이드를 통해 Android 기기에서의 스레드 선호도 및 우선순위 설정 방법을 배울 수 있습니다.
스레드 설정의 중요성
Unity의 기본 스레드 설정은 대부분의 프로젝트에 적합하지만, 특정 기기에 최적화하려면 스레드 설정을 변경해야 할 수 있습니다. 하지만 기본 설정을 사용하는 것이 가장 좋습니다. 왜냐하면 특정 기기에 최적화된 설정이 다른 기기나 운영체제 버전에서 부정적인 영향을 미칠 수 있기 때문입니다.
스레드 선호도
개념
- 스레드 선호도는 각 스레드가 실행될 CPU 코어를 제어합니다.
- 빅 코어: 고성능, 배터리 소모가 높음
- 리틀 코어: 자원 소모가 적고 느림
설정 방법
리틀 코어와 빅 코어 간의 스레드 선호도를 설정하는 방법은 다음과 같습니다: - any: 모든 코어에서 스레드 실행 - little: 리틀 코어에서 스레드 실행 - big: 빅 코어에서 스레드 실행
Binary 및 hexadecimal 값을 사용하여 스레드 선호도를 설정할 수도 있습니다.
스레드 우선순위
개념
스레드의 우선순위는 CPU 자원을 할당하는 방식에 영향을 미치며, 높은 우선순위를 가진 스레드는 더 많은 CPU 시간을 할당받습니다.
설정 범위
Unity에서 설정할 수 있는 스레드 우선순위 값은 -20에서 19까지이며, - -20: 가장 높은 우선순위 - 19: 가장 낮은 우선순위
Unity 스레드 유형
메인 스레드
- 모든 스크립트를 실행하며 일반적으로 CPU 부하가 높습니다.
- 관련 커맨드 라인 인자:
-platform-android-unitymain-priority [value]-platform-android-unitymain-affinity [value]
JobWorker 스레드
- C# Job 시스템을 통해 작업을 실행하는 스레드입니다.
- 관련 커맨드 라인 인자:
-platform-android-jobworker-priority [value]-platform-android-jobworker-affinity [value] [value1 value2 value3]
렌더 스레드
- 멀티스레드 렌더링을 사용하는 경우 그래픽스 API와 상호작용합니다.
- 관련 커맨드 라인 인자:
-platform-android-gfxdeviceworker-priority [value]-platform-android-gfxdeviceworker-affinity [value]
활용 예제
1. 맞춤형 스레드 설정 예제
특정 Android 기기에 최적화된 스레드 설정을 원할 때 사용할 수 있는 커맨드 라인 인자 설정 예제입니다:
-platform-android-cpucapacity-threshold 870
-platform-android-unitymain-priority -10
2. 성능 최적화를 위한 스레드 우선순위 설정
화면 렌더링에 우선순위를 두기 위해 메인 스레드 및 JobWorker 스레드의 우선순위를 설정할 수 있습니다:
-platform-android-unitymain-priority -15
-platform-android-jobworker-priority -5
결론
이 가이드를 통해 Unity의 스레드 설정을 효율적으로 관리하고 최적화할 수 있는 방법에 대한 기초를 다졌습니다. 각 스레드 유형과 우선순위를 이해하고 활용함으로써, Android 애플리케이션의 성능을 크게 향상시킬 수 있습니다.