Version: 2021.1
언어: 한국어
프로젝트를 다른 버전 관리 시스템으로 이동
콜라보레이트 문제 해결 팁

Unity 액셀러레이터

개요

Unity 액셀러레이터는 팀이 임포트한 에셋의 복사본을 보관하여 팀워크 속도를 높여주는 캐싱 프록시 에이전트입니다. 액셀러레이터의 목적은 팀이 반복 시간을 줄이도록 돕는 것입니다. 액셀러레이터는 팀이 동일한 로컬 네트워크에서 작업할 때 에셋 공유를 조정하므로 프로젝트의 일부를 다시 임포트할 필요가 없습니다. 이는 에셋 임포트 파이프라인 v2 Unity 에디터 기능을 통해 이루어집니다. 원하는 경우 액셀러레이터는 Unity 팀즈 어드밴스드에서 사용하여 콜라보레이트와 소스 에셋을 공유할 수 있습니다. 이렇게 하면 콜라보레이트 서비스에서 다운로드하는 시간이 크게 줄어듭니다.

로컬 네트워크에 액셀러레이터를 설치하면 Unity 에디터(버전 2019.3 이상, 아래 Unity 에디터 요구 사항 참조)는 액셀러레이터와 커뮤니케이션하여 다른 팀원들이 변경하거나 빌드한 에셋을 검색해서 가져옵니다. 액셀러레이터는 이러한 에셋의 임시 복사본을 보관하므로 에셋을 검색해서 가져오거나 다시 임포트하는 데 시간과 대역폭이 낭비되지 않습니다.

액셀러레이터 개요
액셀러레이터 개요

콘텐츠

액셀러레이터 설치

요구 사항

로컬 호스팅 요구 사항

팀원들이 자주 일하는 각 네트워크에 액셀러레이터를 설치하십시오. 액셀러레이터를 호스트할 수 있는 컴퓨터가 로컬 네트워크에서 실행되고 있어야 합니다. 호스트를 선택할 때 다음 요구 사항을 고려하십시오.

  • 로컬 호스트가 다음 운영체제 중 하나를 실행해야 합니다.
    • Linux(Ubuntu 16.04, Ubuntu 18.04, 또는 CentOS 7)
      Linux의 경우 액셀러레이터를 루트 사용자로 설치해야 합니다.
    • Windows Server 2008R2 / Windows 7 이상(64비트)
    • Mac OS X 10.12 이상(64비트)
  • 로컬 호스트에 대부분의 프로젝트 파일을 호스팅할 수 있는 충분한 로컬 스토리지 공간이 있어야 합니다. 운영체제를 호스트하는 드라이브와 별개로 솔리드 스테이트 드라이브를 사용하는 것이 좋습니다.
  • 로컬 호스트에는 이용 가능한 합리적인 양의 메모리가 있어야 합니다. 최소 RAM은 2GB여야 하지만, 더 많은 메모리를 이용할 수 있는 경우 운영체제에서 캐싱된 항목을 버퍼링하는 데 사용하여 자주 액세스하는 항목에 대한 성능을 높입니다. 일반적인 권장 RAM은 32GB입니다.
  • 로컬 호스트는 팀원들과 동일한 네트워크에 연결되어 있거나, 액셀러레이터의 IP 주소 및 포트(TCP)에 대한 액세스를 허용하는 적절한 방화벽 정책으로 로컬에서 라우팅이 가능해야 합니다.
  • Unity 조직 내 권한 구조에 관계없이 호스트 컴퓨터에 액세스할 수 있는 사람은 누구나 프로젝트 파일에 액세스할 수 있습니다. 따라서 Unity는 조직 소유자 또는 관리자만 액셀러레이터에 액세스하고 상호작용할 수 있도록 해당 컴퓨터를 제한할 것을 권장합니다.

Unity 에디터 요구 사항

Unity 프로젝트는 2019.3 버전 이상의 Unity 엔진을 사용해야 합니다.

설치 프로그램을 통해 액셀러레이터 설치

Unity 팀즈 어드밴스드가 없는 경우 Unity 액셀러레이터를 직접 다운로드하여 설치하고 설치 과정 동안 등록 토큰을 선택 해제할 수 있습니다.

참고: Linux 시스템에서 액셀러레이터를 설치하는 경우 액셀러레이터 버전을 확인하십시오.

Docker Hub를 통해 액셀러레이터를 설치할 수도 있습니다.

“헤드리스” 컴퓨터에 액셀러레이터 설치

각 플랫폼에서 커맨드 라인을 통해 설치 프로그램을 실행할 수 있습니다. --help 인자를 사용하여 설치 프로그램을 실행하면 이용 가능한 다양한 옵션이 표시됩니다. 프롬프트 없이 전체 설치를 진행하려면 다음에 대한 값을 제공해야 합니다.

  • --storagedir는 파일과 설정을 저장할 액셀러레이터 디렉토리를 설정합니다.
  • --registration-token은 액셀러레이터가 생성된 후 개발자 대시보드에서 제공되는 토큰을 지정합니다. 이 토큰은 콜라보레이트에서 액셀러레이터를 사용할 때 필요합니다.
  • 아무것도 쿼리하지 않아야 하는 자동 설치에는 --mode unattended를 사용하십시오. 기본값 또는 제공된 다른 옵션 플래그의 값을 사용합니다.
  • Mac OS X에서는 디스크 이미지(DMG)를 마운트하고 설치 프로그램 앱의 디렉토리(Contents/MacOS/installbuilder.sh에 있음)에 위치한 바이너리를 실행해야 합니다.

에디터가 액셀러레이터를 사용하도록 설정

액셀러레이터를 설치하면 설정 마법사의 마지막 단계에 에디터에서 참조할 IP 주소와 포트가 다음의 포맷으로 표시됩니다.

[IP]:[Port]

에디터가 해당 액셀러레이터를 에셋 파이프라인 버전 2 캐시 서버로 사용하도록 하려면 다음 절차를 따르십시오.

  1. Unity 에디터에서 Edit > Project Settings…(Windows) 또는 Unity > Project Settings…(OSX)를 선택합니다.
  2. 왼쪽 메뉴에서 Editor를 선택합니다.
  3. Cache Server 섹션에서 ModeEnabled로 설정합니다.
  4. 설정 마법사에서 IP address에 액셀러레이터의 IP 주소를 입력합니다.
  5. Check Connection 버튼을 눌러 연결을 테스트합니다.
프로젝트 설정
프로젝트 설정

다른 프로젝트와 격리하려는 경우 선택적으로 기본값과 다른 네임스페이스 접두사를 선택할 수 있습니다. 필요에 따라 업로드 또는 다운로드를 개별적으로 비활성화할 수도 있습니다. 예를 들어 빌드 시스템은 업로드만 활성화하고, 개발자 에디터는 다운로드만 활성화할 수 있습니다. TLS/SSL 옵션은 2020.1 이상 에디터 버전에서만 제공되는 기능이며, 액셀러레이터를 TLS용으로 설정해야 합니다.

메인 에디터 뷰에서 오른쪽 하단의 상태 표시줄을 통해 액셀러레이터 연결을 확인할 수 있습니다(2020.1 이상 에디터 버전만 해당).

프로젝트 연결
프로젝트 연결

원하는 경우 전역 설정을 통해 사용할 액셀러레이터를 구성할 수 있습니다. 전역 설정은 프로젝트 설정에서 오버라이드하지 않는 한 모든 프로젝트에서 기본적으로 사용됩니다. 전역 설정을 구성하려면 Edit > Preferences… 메뉴 항목을 선택하십시오.

프로젝트 연결
프로젝트 연결

Docker Hub를 통해 액셀러레이터 설치

컨테이너는 Docker Hub의 https://hub.docker.com/repository/docker/unitytechnologies/accelerator에서 제공됩니다.

초기 설정

Unity는 액셀러레이터 설정 및 캐시를 호스팅하기 위해 영구 스토리지 영역을 사용할 것을 권장합니다. 이를 처음으로 설정하려면 컨테이너를 처음 실행할 때 다음 변수 중 하나 이상을 사용하는 것이 좋습니다(일부 예제는 아래에 있음). 변수는 시작 시 설정 파일을 찾지 못하는 경우에만 사용되므로, 연속 실행 시에는 설정된 상태로 실행하는 것이 안전합니다.

변수 사용
COLLAB_REGISTRATION_TOKEN Unity 콜라보레이트 가속화
DISABLE_USAGE_STATS 사용 통계를 비활성화하려면 true로 설정합니다. 사용 통계를 활성화하면 Unity에 중요한 피드백을 제공하여 액셀러레이터의 기능과 성능을 향상하도록 도울 수 있습니다.
USER 로컬 빌트인 대시보드의 사용자 이름입니다.
PASSWORD 로컬 빌트인 대시보드의 비밀번호입니다.
CERT_HOSTNAME TLS 지원에 사용할 호스트 이름입니다. 리디렉션 등에 사용되며, 아래의 CERT_PEM 및 KEY_PEM과 함께 사용됩니다.
CERT_PEM TLS 지원에 사용할 cert.pem의 경로입니다. CERT_HOSTNAME을 설정하고 CERT_PEM을 설정하지 않으면 <persist_dir>/cert.pem이라고 간주됩니다.
KEY_PEM TLS 지원에 사용할 key.pem의 경로입니다. CERT_HOSTNAME을 설정하고 KEY_PEM을 설정하지 않으면 <persist_dir>/key.pem이라고 간주됩니다.

예를 들어 콜라보레이트 서비스에서 사용하기 위해 시작 및 등록하려면 다음을 실행할 수 있습니다.

$ docker run --rm -ti -v "${PWD}/agent:/agent" -e 'COLLAB_REGISTRATION_TOKEN=ft0bJvbRD' unitytechnologies/accelerator:latest

TLS 설정을 오버라이드하려면 위의 예제에서 지정된 /agent 경로에 cert.pem 및 key.pem이 있는지 확인한 후 다음과 같이 CERT_HOSTNAME을 포함하십시오.

$ docker run --rm -ti -v "${PWD}/agent:/agent" -e 'CERT_HOSTNAME=myhostname.com' -e 'COLLAB_REGISTRATION_TOKEN=ft0bJvbRD' unitytechnologies/accelerator:latest

후속 실행

또한 액셀러레이터가 일반적으로 인식하는 환경 변수를 설정할 수도 있습니다. unity-accelerator --all-help를 확인하고 Default: $SOME_VARIABLE을 나타내는 옵션을 찾으십시오. 그러지 않으면 컨테이너가 다음의 두 가지를 설정합니다.

변수 사용
UNITY_ACCELERATOR_PERSIST 컨테이너 기본값은 /agent입니다. 이는 unity-accelerator.cfg와 기타 영구 데이터가 상주하는 디렉토리입니다(cachedir은 다를 수 있음).
UNITY_ACCELERATOR_LOG_STDOUT 컨테이너 기본값은 true입니다. true이면 로그를 stdout에만 출력합니다. 영구 디렉토리 내에 실제 로그 파일을 작성하려는 경우 false입니다.

컨테이너 실행

Unity는 Docker 이미지에 서명하므로 Docker Content Trust를 활성화할 것을 적극 권장합니다.

$ export DOCKER_CONTENT_TRUST=1

일반적으로 다음과 같이 액셀러레이터를 실행할 수 있어야 합니다.

$ docker run -p 80:80 -p 443:443 -p 10080:10080 -v "${PWD}/agent:/agent" unitytechnologies/accelerator:latest

하지만 액셀러레이터가 설정 및 캐싱 아티팩트를 저장할 다른 위치를 선택하려는 경우 다음과 같이 추가 환경 변수 설정 값을 제공하도록 선택할 수 있습니다.

$ docker run -p 80:80 -p 443:443 -p 10080:10080 -v "${PWD}/agent:/mnt/another_spot" -e "UNITY_ACCELERATOR_PERSIST=/mnt/another_spot" -e "UNITY_ACCELERATOR_DEBUG=true" unitytechnologies/accelerator:latest

로컬 대시보드에 대한 사용자 이름과 비밀번호를 설정하기 위해 USER 및 PASSWORD 환경 변수를 사용할 수 있습니다.

$ docker run -p 80:80 --env PASSWORD=[PASSWORD] --env USER=[USERNAME] unitytechnologies/accelerator:latest

노출된 포트

80, 443, 10080, 10443은 Unity 액셀러레이터에서 사용하는 포트의 기본값입니다.

Unity 팀즈 어드밴스드에서 액셀러레이터 사용

액셀러레이터는 Unity 팀즈 어드밴스드에 다음의 추가 이점을 제공합니다.

일반 콜라보레이트 워크플로에서 사용자는 클라우드에 업로드하고 다운로드합니다. 가속화된 콜라보레이트 워크플로에서는 업로드가 클라우드와 액셀러레이터에 저장되지만, 사용자가 액셀러레이터에서 직접 다운로드할 수 있습니다.
일반 콜라보레이트 워크플로에서 사용자는 클라우드에 업로드하고 다운로드합니다. 가속화된 콜라보레이트 워크플로에서는 업로드가 클라우드와 액셀러레이터에 저장되지만, 사용자가 액셀러레이터에서 직접 다운로드할 수 있습니다.

설정

Unity 팀즈 어드밴스드가 있는 경우 조직의 소유자 또는 관리자 중 한 명이 다음 단계에 따라 개발자 대시보드에서 액셀러레이터를 생성할 수 있습니다.

  1. 대시보드의 Develop 탭에서 액셀러레이터를 생성할 프로젝트를 선택합니다.
  2. 프로젝트 뷰의 왼쪽 탐색 표시줄에서 Collaborate > Accelerator를 선택합니다.
  3. New Accelerator 버튼을 클릭합니다.
  4. New Accelerator 프롬프트에 Unity가 액셀러레이터 에이전트를 식별할 때 사용할 에이전트 이름을 입력합니다. 또는 포트 번호를 지정할 수도 있습니다(선택 사항).
    새 액셀러레이터 창
    참고: 현재는 조직당 세 개의 액셀러레이터로 제한됩니다.

  5. Save를 클릭하여 설정을 확인합니다.
  6. 다음 화면에서 등록 토큰을 복사한 후 오른쪽 상단 모서리의 Download Accelerator 버튼을 클릭한 후 적절한 운영체제를 선택합니다.

    개발자 대시보드에서 액셀러레이터 다운로드
    Docker Hub를 통해 액셀러레이터를 설치할 수도 있습니다.
  7. 다운로드한 설치 프로그램을 실행한 후 설치 마법사를 따릅니다. 복사한 등록 토큰을 사용하여 액셀러레이터를 Unity 콜라보레이트에 등록합니다. 이렇게 하면 액셀러레이터를 사용하여 콜라보레이트 성능을 강화할 수 있습니다.

참고: Linux 시스템에서 액셀러레이터를 설치하는 경우 액셀러레이터 버전을 확인하십시오.

소스 에셋 보안

Unity 팀즈 어드밴스드에서 사용할 경우 각 액셀러레이터는 자체 보안 인증서를 수신하여 조직에 액세스할 권한이 있음을 증명합니다. 액셀러레이터가 콘텐츠를 업로드하거나 다운로드하기 전에 요청을 하는 Unity 에디터가 SSL/TLS를 사용하여 액셀러레이터에 안전하게 접속하고 인증을 확인합니다. Unity 에디터가 액셀러레이터를 발견한 후 접속하면 일반 Unity 사용자 토큰을 전달하는 대신, Unity 아이덴티티 서비스에서 특수 토큰을 수신합니다. 이 토큰은 사용자 ID를 확인하고 조직 내 단일 프로젝트에 액세스합니다. 따라서 액셀러레이터를 사용하는 동안 다른 조직 및 프로젝트에 대한 액세스를 보호할 수 있습니다.

또는 Unity 에디터를 실행할 때 커맨드 라인 인자를 사용하여 액셀러레이터 캐시 서버 설정 세부 정보를 제공할 수도 있습니다.

액셀러레이터 캐시 서버를 사용하도록 지정하려면 -EnableCacheServer 인자를 사용하고, 주소와 포트 번호를 지정하려면 -cacheServerEndpoint Address:Port를 사용하고 Address와 Port를 캐시 서버의 세부 정보로 바꾸십시오.

참고: 액셀러레이터 캐시 서버를 사용하려면 프로젝트에서 에셋 데이터베이스 V2(ADB2)를 사용해야 합니다. -adb2 인자를 사용하여 커맨드 라인에서 Unity를 실행할 때 ADB2로 강제로 업그레이드할 수 있습니다.

자세한 내용은 커맨드 라인 인자를 참조하십시오.

액셀러레이터 모니터링

로컬 관리자 대시보드

액셀러레이터에는 빠른 모니터링 및 설정 변경을 위한 빌트인 대시보드가 있습니다.

액셀러레이터 설정
액셀러레이터 설정

대시보드 URL이 무엇인지 확인하는 방법은 커맨드 라인 툴 섹션을 참조하십시오. 액셀러레이터의 IP와 포트를 알고 있는 경우 http://ip:port/dashboard를 사용하면 액셀러레이터가 필요한 리디렉션을 처리합니다. 전체 지표 모니터링은 액셀러레이터 지표에 직접 액세스를 참조하십시오. 액셀러레이터의 전체 설정은 해당 unity-accelerator.cfg 파일에서 이용할 수 있습니다.

개발자 대시보드(Unity 팀즈 어드밴스드 사용자 전용)

Unity 팀즈 어드밴스드 사용자는 개발자 대시보드에서 액셀러레이터 지표를 모니터링할 수 있습니다. 이 지표는 소스 에셋에만 적용되고, 생성된(임포트된) 에셋에는 적용되지 않습니다.

프로젝트의 액셀러레이터에 관한 요약을 보려면 프로젝트를 선택한 후 왼쪽 탐색 표시줄에서 Collaborate > Accelerators를 선택하십시오. 이 메뉴에서 다음 정보를 볼 수 있습니다.

프로퍼티 설명
Name 액셀러레이터를 생성할 때 지정한 이름입니다.
Avg. Efficiency 지난 24시간 동안 액셀러레이터의 평균 효율입니다.
Editors 액셀러레이터에 연결된 Unity 에디터 수입니다.
Latest Activity 액셀러레이터의 가장 최근 활동입니다.
Status 액셀러레이터는 다음 상태 중 하나일 수 있습니다.

- Available은 액셀러레이터가 설치되지 않았거나 콜라보레이트 서비스에 등록되지 않았음을 의미합니다.
- Ready는 액셀러레이터가 콜라보레이트 서비스에 등록되었지만, 연결된 Unity 에디터가 없다는 의미입니다.
- In use는 Unity 에디터가 연결되었거나, 최근에 액셀러레이터에 접속했다는 의미입니다.
- Idle은 Unity 에디터가 이전에 액셀러레이터를 사용했지만, 최근 활동은 없다는 의미입니다.
- Not Listening은 액셀러레이터를 설정된 포트에 연결할 수 없다는 의미입니다(대개 다른 서비스가 이미 사용 중이기 때문임).
- Disconnected는 액셀러레이터가 사용량 보고 또는 설정 변경 수신을 위해 서비스에 더 이상 연결되지 않음을 의미합니다.
Enabled Unity 에디터가 액셀러레이터를 발견하여 사용할 수 있음을 의미합니다. Unity 에디터는 실행 여부에 관계없이 비활성화된 액셀러레이터를 사용하지 않습니다.

액셀러레이터의 Details를 클릭하면 사용량에 대한 심층 정보가 표시됩니다. 이 데이터는 10분마다 업데이트됩니다.

효율

지난 24시간 동안 액셀러레이터의 평균 성능을 보여줍니다. 이 값의 범위는 0에서 100까지이며, 콜라보레이트 서비스에서 원격으로 제공되는 것이 아니라 액셀러레이터에서 로컬로 제공되는 콘텐츠 다운로드의 백분율을 측정합니다. 값이 0이면 액셀러레이터가 콘텐츠 다운로드를 적극적으로 지원하지 않음을 의미합니다. 값이 100이면 액셀러레이터가 모든 콘텐츠 다운로드를 제공하고 있음을 의미합니다.

바이트 제거

액셀러레이터는 주기적으로 새 에셋을 저장할 수 있도록 공간을 비웁니다. 이 경우 대시보드는 예전 에셋에 할당된 바이트 중에서 액셀러레이터가 로컬 스토리지에서 제거한 바이트 수를 보고합니다.

참고: 일반적으로 이 동작은 액셀러레이터를 정상적으로 유지하는 데 도움이 됩니다. 하지만 이 값이 액셀러레이터의 효율을 떨어뜨리는 것처럼 보일 경우 팀원들의 사용량을 충족하기 위해 스토리지 공간을 추가할 수 있습니다. 이상적으로는 액셀러레이터를 실행하는 파일 시스템이 가장 최근에 활성화된 프로젝트의 모든 파일을 수용할 만큼 여유 공간이 충분한 솔리드 스테이트 하드 드라이브를 사용하는 것이 좋습니다(필수 사항은 아님). 스토리지가 부족해지면 액셀러레이터의 전반적인 효율이 감소합니다.

바이트 제공

분산된 팀에는 콜라보레이트 서비스를 사용하는 원격 기여자뿐만 아니라 액셀러레이터를 사용하는 로컬 기여자가 있을 수 있습니다. 이 경우 액셀러레이터는 원격 퍼블리시 이벤트를 수신 대기하고 로컬 네트워크의 사용자들을 위해 영향을 받는 콘텐츠를 사전에 다운로드합니다.

액셀러레이터를 사용하면 로컬 네트워크에서 제공된 것이 아니라 원격 콜라보레이트 서비스에서 요청하고 다운로드한 전체 바이트 수에 대해 보고합니다. 로컬로 제공되는 바이트 수가 많을수록 네트워크 게이트웨이에 대한 부하가 줄어들어서 팀에 더 도움이 됩니다.

시간 절약

액셀러레이터는 콜라보레이트 서비스에서 다운로드하는 대신 로컬로 저장된 에셋을 제공할 때 대역폭을 추적하고, Unity 에디터가 에셋을 원격으로 다운로드하기 위해 대기했어야 할 시간(절약된 시간)을 보고합니다.

참고: 위에서 언급된 지표는 소스 에셋에만 적용되고, 생성된(임포트된) 에셋에는 적용되지 않습니다.

액셀러레이터 지표에 직접 액세스

Unity 팀즈 어드밴스드를 사용하지 않는 경우 각 액셀러레이터는 Prometheus 지표 보고서/metrics로 호스트하며, 이를 통해 로컬 네트워크에서 쿼리를 수행할 수 있습니다. 다음은 액세스할 수 있는 전체 지표 리스트입니다.

지표 설명
process_resident_memory_bytes 액셀러레이터에서 사용한 메모리 양입니다.
uta_agent_sys_cpu_percent 시스템에서 사용한 CPU 양입니다.
uta_agent_sys_mem_bytes_used 시스템에서 사용한 메모리 양입니다.
uta_agent_protobuf_connects Unity 에디터가 에셋 임포트 파이프라인용 서비스에 연결한 횟수입니다.
uta_agent_protobuf_bytes_in 에셋 임포트 파이프라인에서 수신한 바이트 수입니다.
uta_agent_protobuf_bytes_out 에셋 임포트 파이프라인에 전송한 바이트 수입니다.
uta_agent_protobuf_requests{code="0",method="get"} 에셋 임포트 파이프라인에 전송한 항목 수입니다.
uta_agent_protobuf_requests{code="1",method="get"} 에셋 임포트 파이프라인에 전송한 항목에서 발생한 오류 수입니다.
uta_agent_protobuf_requests{code="2",method="get"} 에셋 임포트 파이프라인에 전송한 항목에서 발생한 네임스페이스 오류 수입니다.
uta_agent_protobuf_requests{code="3",method="get"} 캐싱되지 않은 항목에 대해 에셋 임포트 파이프라인에서 요청한 횟수입니다.
uta_agent_protobuf_requests{code="0",method="put"} 에셋 임포트 파이프라인에서 수신한 항목 수입니다.
uta_agent_protobuf_requests{code="1",method="put"} 에셋 임포트 파이프라인에서 수신한 항목에서 발생한 오류 수입니다.
uta_agent_protobuf_requests{code="2",method="put"} 에셋 임포트 파이프라인에서 수신한 항목에서 발생한 네임스페이스 오류 수입니다.
uta_agent_protobuf_requests{code="0",method="delete"} 항목을 제거하기 위해 에셋 임포트 파이프라인에서 요청한 횟수입니다.
uta_agent_protobuf_requests{code="1",method="delete"} 에셋 임포트 파이프라인에서 항목 제거 중에 발생한 오류 수입니다.
uta_agent_protobuf_requests{code="2",method="delete"} 에셋 임포트 파이프라인에서 항목 제거 요청 중에 발생한 네임스페이스 오류 수입니다.
uta_agent_protobuf_requests{code="3",method="delete"} 캐싱되지 않은 항목에 대해 에셋 임포트 파이프라인에서 항목 제거를 요청한 횟수입니다.
uta_agent_cache_bytes_evicted_unscheduled “예약되지 않은” 패스 동안 캐시에서 퇴출된 바이트 수입니다. 요청을 처리하는 동안 디스크 공간이 부족하면 예약되지 않은 퇴출이 발생합니다. 일반적으로 예약되지 않은 백그라운드 퇴출은 수요를 따라잡아야 하므로, 이 지표 값의 증가는 서버 과부하를 의미합니다. 설정의 CacheMinFreeBytes 또는 CacheMinFreePercent를 높이면 여유 공간 버퍼를 더 많이 확보하는 데 도움이 됩니다. 또는 기본 하드웨어를 업그레이드하거나 추가 액셀러레이터를 설치해야 할 수 있습니다.
uta_agent_cache_files_evicted_unscheduled 위의 uta_agent_cache_bytes_evicted_unscheduled 지표와 유사하지만, 바이트 수가 아니라 퇴출된 파일 수를 집계합니다. 이는 경고하기 더 쉬운 지표일 수 있습니다. 예를 들어 파일 지표가 초당 1 이상 증가할 때 경고할 수 있습니다.
uta_agent_protobuf_cache_hits 캐시에서 제공된 에셋 임포트 파이프라인 요청의 수입니다.
uta_agent_protobuf_cache_misses 캐시에서 제공하지 않은 에셋 임포트 파이프라인 요청의 수입니다.
uta_agent_protobuf_cache_bytes_out 캐시에서 에셋 임포트 파이프라인으로 제공된 바이트 수입니다.
uta_agent_protobuf_cache_bytes_in 에셋 임포트 파이프라인에서 수신된 캐시에 저장된 바이트 수입니다.

Unity 에디터 로그 디버깅

Unity 에디터 로그를 사용하면 디버깅 정보를 쉽게 확인할 수 있습니다. 콜라보레이트 이벤트의 로그를 보려면 환경 변수를 enableCollabEventLogs=true로 설정한 상태에서 Unity 에디터(또는 Unity Hub)를 실행하십시오. [collab-accelerator]로 표시된 로그는 액셀러레이터의 성능에 대한 인사이트를 제공합니다.

아래 블록은 에셋 임포트 파이프라인 v2를 사용하는 액셀러레이터의 예제 로그 출력을 보여줍니다. 콜라보레이트용이 아니므로 enableCollabEventLogs=true가 필요하지 않습니다.

2019-10-07T11:34:51-0700 Using Asset Import Pipeline V2.
  ...
  2019-08-08T09:04:03-0700 Start importing Assets/Scenes/tame-the-unicorn.png guid(07a0d449dcaef4d2ba104e9d9b350de6)
  2019-08-08T09:04:05-0700 Done importing asset: 'Assets/Scenes/tame-the-unicorn.png' (target hash: 'd5fddd470dd9beedcd7261b6455e436a') in 1.082988 seconds
  2019-08-08T09:04:05-0700 RemoteAssetCache::AddArtifactToCacheServer - artifactKey='Guid(07a0d449dcaef4d2ba104e9d9b350de6) Importer(-1,)' Target hash='d5fddd470dd9beedcd7261b6455e436a'

Querying for cacheable assets in Cache Server:
    86ac778e1a44c9143864797ddacf8cc9:Assets/New Material.mat
RemoteAssetCache - Download - Metadata - success:true, namespace:81e94844d19a16919208533e08183531, key:8d71d5006046bb9d5e4a7172eec3f3b2
RemoteAssetCache - Download - Artifact - success:true, namespace:78b2fdc254b0a4f8a4693a81bb96598a, key:de1eef03efd25a722d1500658bf19038 for asset:'Assets/New Material.mat', time elapsed: 0.005171 seconds
RemoteAssetCache - Download - Artifact - success:true, namespace:78b2fdc254b0a4f8a4693a81bb96598a, key:b19c9d64967a9691abecdb66364ae392 for extension:'Assets/New Material.mat.info', time elapsed: 0.004721 seconds

액셀러레이터 서비스 중지 및 재시작

액셀러레이터는 각 플랫폼에서 백그라운드 프로세스로 실행됩니다.

Windows

설정 메뉴에서 “서비스”로 검색하거나 Run 다이얼로그(WIN + R)에서 “services.msc”을 실행하여 Services Panel을 열고, 결과 리스트에서 “Unity 액셀러레이터” 서비스를 찾으십시오. 왼쪽 패널에 Stop the service 또는 Restart the service 옵션이 표시됩니다.

Mac OS X

터미널에서 launchctl 커맨드를 실행하여 LaunchControl 유틸리티에서 “com.unity.accelerator” 서비스를 제어할 수 있습니다. 자세한 내용은 https://www.launchd.info/를 참조하십시오.

Linux

service 콘솔 유틸리티를 사용하여 “unity-accelerator” 서비스를 제어할 수 있습니다. 자세한 내용은 http://manpages.ubuntu.com/manpages/bionic/man8/service.8.html을 참조하십시오.

유지관리

액셀러레이터 서비스는 유지관리 기간 동안 자동으로 업데이트됩니다. 현재 유지관리 시간은 액셀러레이터를 실행하는 컴퓨터에 따라 01:00–02:00 AM(로컬 시간)으로 설정되었습니다. 유지관리는 액셀러레이터가 새 버전을 발견했을 때에만 진행됩니다.

액셀러레이터의 설치 및 제거 로그는 운영체제의 표준 임시 디렉토리에 unity-accelerator-*install.log로 저장됩니다. 액셀러레이터의 로그는 스토리지 디렉토리에 unity-accelerator.log로 저장됩니다.

커맨드 라인 툴

액셀러레이터에는 문제 해결 및 설정을 수행하고, 일반적으로 하나 이상의 액셀러레이터를 활용하는 데 사용할 수 있는 방대한 커맨드 라인 툴이 포함되어 있습니다. 간편한 사용을 위해 unity-accelerator 실행 파일의 위치를 PATH에 추가하는 것이 좋습니다. 실행 파일은 설치 프로그램을 실행할 때 선택한 경로(예: C:\Program Files\Unity\accelerator)에 설치되었습니다.

CLI 툴에는 광범위한 도움말 시스템이 있습니다. 다음과 같이 인자 없이 unity-accelerator를 실행하여 시작할 수 있습니다.

$ unity-accelerator
Unity Accelerator v1.0.524+g96c5e18

Run on a local network to speed up transactions with Unity Services.

.....

unity-accelerator --all-help를 실행하여 모든 커맨드에 대한 모든 도움말 텍스트를 한 번에 출력할 수도 있습니다. 출력을 less를 통해 전달하거나 읽을 텍스트 파일로 리디렉션하는 것이 가장 좋습니다.

예를 들어 특정 액셀러레이터에서 작업할 때 이를 재설정하려는 경우 작업 디렉토리를 unity-accelerator.cfg 파일이 있는 곳과 동일한 위치로 변경하는 것이 좋습니다. 또한 해당 디렉토리에 대해 UNITY_ACCELERATOR_PERSIST 환경 변수를 설정하거나, 항상 --persist <dir> 옵션을 사용하도록 기억할 수 있지만, 대부분의 경우 작업 디렉토리를 변경하는 것이 가장 쉽습니다.

사용되는 다소 일반적인 CLI 툴 세트는 대시보드 툴입니다.

$ unity-accelerator dashboard password newaccount
Password: ****
   Again: ****
$ unity-accelerator dashboard list
admin
newaccount
$ unity-accelerator dashboard url
http://172.18.37.249:8080/dashboard/

최종 툴인 dashboard url은 빌트인 대시보드를 방문하기 위해 브라우저에 입력할 url을 찾을 때 유용합니다.

여러 액셀러레이터 미러링

원하는 경우 동일한 캐싱 데이터를 미러링하도록 여러 액셀러레이터를 설정할 수 있습니다. 고가용성을 위해 동일한 네트워크에서 두 개의 미러링된 액셀러레이터를 실행할 수 있습니다. 하나에서 충돌 또는 하드웨어 오류가 발생하거나, 어떤 이유로든 점검이 필요한 경우 다른 액셀러레이터가 이를 상쇄할 수 있습니다. 또한 서로 멀리 떨어져 있는 캐시 서버를 미러링할 수도 있습니다. 예를 들어 본사는 데이터를 지점으로 미러링하여 지점에서 사용할 캐싱 데이터의 복사본을 제공할 수 있습니다.

현재 미러링 기능은 밖으로 나가는 데이터 기능(“푸시” 또는 “포워딩”)만 제공합니다. 여러 개의 액셀러레이터로 푸시/포워드하거나, 서로 체이닝할 수 있습니다. 즉 A는 B로 전송되고, B는 C로 전송되고, C는 다시 A로 전송되도록 설정할 수 있습니다. 순환 체인에 대해서는 걱정할 필요가 없습니다. 항목에는 타임 스탬프가 찍혀 있으므로, 수신하는 액셀러레이터는 들어오는 항목이 현재 보유 중인 항목보다 오래된 경우 해당 항목을 무시합니다.

ip:port가 액셀러레이터 A는 1.1.1.1:1111이고 액셀러레이터 B는 2.2.2.2:2222인 예제를 살펴보겠습니다. 둘 다 처음에는 데이터가 없다고 가정하고 항목을 A에 넣습니다. 이때 B에는 항목이 없습니다.

$ echo test1 | unity-accelerator cache put 1.1.1.1:1111 namespace1 key1
$ unity-accelerator cache get 1.1.1.1:1111 namespace1 key1
test1
$ unity-accelerator cache get 2.2.2.2:2222 namespace1 key1
key not found

이제 A가 B로 포워드하도록 설정해보겠습니다. 이를 위해 A의 설정을 변경해야 하므로, 액셀러레이터 A를 실행하는 컴퓨터에 로그인하고, 액셀러레이터를 종료하겠습니다.

# Shutdown Accelerator A
$ cd <directory where unity-accelerator.cfg is>
$ unity-accelerator config set ProtobufForwardPuts protobuf:2.2.2.2:2222
# Start Accelerator A back up

이제 다른 항목을 A의 캐시에 넣으면 B로 포워드되는 것을 볼 수 있습니다.

$ echo test2 | unity-accelerator cache put 1.1.1.1:1111 namespace2 key2
$ unity-accelerator cache get 1.1.1.1:1111 namespace2 key2
test2
$ unity-accelerator cache get 2.2.2.2:2222 namespace2 key2
key not found
# It will take up to a minute before the forwarding occurs, due to how the algorithm works with batching, etc. But within a minute or two you should see...
$ unity-accelerator cache get 2.2.2.2:2222 namespace2 key2
test2

하지만 여기에는 새 데이터만 포함되며(액셀러레이터 A에 들어온 새 항목은 액셀러레이터 B로 포워드됨) 기존 데이터는 포함하지 않습니다. 이 예에서 첫 번째 항목은 여전히 액셀러레이터 B에 없습니다.

$ unity-accelerator cache get 2.2.2.2:2222 namespace1 key1
key not found

이 사례를 설명하기 위해, 그리고 모든 데이터를 한 번에 포워드하려는 경우(한 액셀러레이터에서 새로운 액셀러레이터로 전환할 때 유용함) “푸시” 커맨드 라인 툴을 사용할 수 있습니다.

$ unity-accelerator cache push 1.1.1.1:1111 2.2.2.2:2222
{"msg":"push completed", "destination":"2.2.2.2:2222", "namespaces":2, "keys":2, "bytes":12, "supercededs":1, "errors":0, "elapsed":"44.054078ms"}
$ unity-accelerator cache get 2.2.2.2:2222 namespace1 key1
test1

푸시 툴은 첫 번째 액셀러레이터에 요청을 보내고 모든 데이터를 두 번째 액셀러레이터에 보내도록 요청합니다. 작업이 완료되면 첫 번째 액셀러레이터는 수행한 작업에 대한 세부 정보와 함께 “푸시 완료” 응답을 다시 보냅니다.

unity-accelerator config help | less를 실행하고 포워드를 검색하여 검색을 수행할 수 있는 추가 고급 설정 옵션이 있습니다. 이를 통해 포워드 동시성, 대기열 크기, 오류 처리 등을 지정할 수 있습니다.

미러링된 각 액셀러레이터의 MaintenanceStart 및 MaintenanceDuration 설정 값을 변경하여 점검을 위해 동시에 모두 종료되지 않도록 만들 수 있습니다.

문제 해결

액셀러레이터를 설치했지만 일부 Unity 에디터가 사용하지 못한다면 여러 가지 원인이 있을 수 있습니다. 다음 문제 해결 옵션을 사용하여 문제를 해결해 보십시오.

사용 중인 Unity 에디터 버전 확인

각 프로젝트 기여자는 액셀러레이터를 사용하기 위해 에디터 버전 2019.3 이상을 보유해야 합니다.

사용자가 액셀러레이터의 로컬 네트워크에 있는지 확인

액셀러레이터가 문제를 겪는 프로젝트 기여자와 동일한 근거리 통신망(LAN)에서 실행 중인지 확인하십시오. 액셀러레이터는 원격으로 작업하는 기여자에게는 영향을 주지 않습니다.

액셀러레이터의 연결 테스트

문제가 발생한 컴퓨터가 액셀러레이터에 접속할 수 있는지 확인하십시오. Unity 팀즈 어드밴스드를 사용하는 경우 다음 절차에 따라 브라우저에서 액셀러레이터 상태 페이지에 액세스할 수 있습니다.

  1. 개발자 대시보드에서 Collaborate > Accelerator를 선택합니다.
  2. 테스트할 액셀러레이터의 Details를 클릭합니다.
  3. 액셀러레이터의 IP 주소 옆에 있는 정보 아이콘을 클릭하여 상태 페이지 URL을 표시합니다.

Unity 팀즈 어드밴스드를 사용하지 않는 경우에는 액셀러레이터의 호스트 IP 주소를 다음 URL 경로에 입력하면 해당 상태 페이지가 표시됩니다.

[AcceleratorIP]:[AcceleratorPort]/api/agent-health

테스트가 실패하면 모든 호스트 및 네트워크 방화벽이 액셀러레이터의 수신 IP 주소 및 포트(TCP)에 대한 액세스를 허용하는지 확인하십시오. 네트워크 관리자와 협력하여 이 포트에 대한 액세스를 허용해야 할 수 있습니다.

액셀러레이터의 프로젝트 설정 확인

Unity 팀즈 어드밴스드를 사용한다면 액셀러레이터가 해당 프로젝트에 대해 설정되었는지 확인하십시오. 개발자 대시보드에서 프로젝트로 이동한 후 왼쪽 탐색 표시줄에서 Collaborate > Accelerator를 선택하십시오. 그러면 해당 프로젝트에 대한 액셀러레이터가 표시됩니다.

액셀러레이터 버전 확인

Linux 시스템에 액셀러레이터를 설치하는 경우 모든 Linux 실행 파일에는 악성 엔티티가 다운로드된 액셀러레이터 버전을 변조하지 않았는지 확인할 수 있는 서명 파일이 있습니다. 서명 파일은 신뢰할 수 있는 버전의 GnuPG를 사용하여 확인할 수 있습니다. 아래의 키는 현재 릴리스를 서명합니다. 키가 포함된 공용 키 블록은 https://collab-accelerator.cloud.unity3d.com/에서 이용할 수 있습니다.

pub     rsa4096 2019-12-02
Key fingerprint = 9BC4 B04D F2E8 74E5 64AA 47E7 6D44 3B8B 002C F61F
uid       Unity Technologies ApS (Accelerator signing key) <sst-ops@unity3d.com>

키를 GPG 스토어에 다운로드하려면 다음 커맨드 중 하나를 사용하십시오.

$ gpg --keyserver https://collab-accelerator.cloud.unity3d.com/ --search-key "sst-ops@unity3d.com"

$ gpg --keyserver https://collab-accelerator.cloud.unity3d.com/ --recv-key 9BC4B04DF2E874E564AA47E76D443B8B002CF62F

설치한 액셀러레이터 버전이 원본이고 수정되지 않았음을 확인하려면 파일의 서명을 확인하십시오.

액셀러레이터 설치 파일에는 https://storage.googleapis.com/unity-accelerator-prd/unity-accelerator-installer.sig에서 이용할 수 있는 서명 파일이 포함되어 있습니다. 이 서명 파일을 사용하여 액셀러레이터 설치 프로그램을 확인하십시오.

$ gpg --verify unity-accelerator-installer.sig unity-accelerator-linux-x64-installer.run

키를 신뢰하기 전에 위조되거나 신뢰할 수 없는 키에 표시된 지문을 비교하십시오. 키를 신뢰하고 나면 다음이 표시됩니다.

gpg: Signature made Thu Jan 16 12:29:14 2020 PST
gpg:                using RSA key 9BC4B04DF2E874E564AA47E76D443B8B002CF61F
gpg: Good signature from "Unity Technologies ApS (Accelerator signing key) <sst-ops@unity3d.com>" [ultimate]

이는 서명이 유효하고 이 키를 신뢰했음을 의미합니다.

잘못된 키

올바른 배포 키가 없는 경우 위 커맨드의 출력은 다음과 같은 모습입니다.

gpg: Signature made Thu Jan 16 12:29:14 2020 PST
gpg:                using RSA key 9BC4B04DF2E874E564AA47E76D443B8B002CF61F
gpg: Can't check signature: No public key

이 경우 위의 지침에 따라 키를 받아야 합니다.

위조되거나 신뢰할 수 없는 키

유효한 서명이 있는 키의 복사본이 있지만, 키가 신뢰할 수 있음으로 표시되지 않았거나 키가 위조된 경우 출력은 다음과 같은 모습입니다.

gpg: Signature made Thu Jan 16 12:29:14 2020 PST
gpg:                using RSA key 9BC4B04DF2E874E564AA47E76D443B8B002CF61F
gpg: Good signature from "Unity Technologies ApS (Accelerator signing key) <sst-ops@unity3d.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 9BC4 B04D F2E8 74E5 64AA  47E7 6D44 3B8B 002C F61F

키가 위조된 경우 서명 파일을 사용하여 지문을 확인해야 합니다. 키가 신뢰할 수 있음으로 표시되지 않은 경우 키를 편집하여 신뢰할 수 있음으로 표시하십시오. 자세한 내용은 https://www.gnupg.org/gph/en/manual/x334.html을 참조하십시오.

지원

Unity 팀즈에서 액셀러레이터를 사용하기 위한 도움이 필요하면 이메일로 문의하거나 개발자 대시보드에서 지원 요청서를 제출하십시오. Unity 팀즈 어드밴스드 프로젝트에 대한 요청서를 제출하려면 왼쪽 탐색 표시줄에서 Collaborate > Support를 선택하십시오.

에셋 임포트 파이프라인에서 액셀러레이터를 사용하기 위한 도움이 필요하면 액셀러레이터 포럼을 방문해 보십시오.

프로젝트를 다른 버전 관리 시스템으로 이동
콜라보레이트 문제 해결 팁