소개
호드는 일반적인 원격 실행 워크로드를 위한 플랫폼을 구현하며, 이를 통해 클라이언트가 다른 머신의 유휴 CPU 사이클을 활용하여 원래 로컬로 실행되었을 워크로드를 가속화할 수 있습니다. 호드의 원격 실행 플랫폼을 통해 원격 에이전트를 대상으로 '이 파일을 업로드할 것', '이 프로세스를 실행할 것', '이 파일을 다시 전송할 것' 등의 명시적 명령을 순차적으로 내릴 수 있습니다.
언리얼 빌드 액셀러레이터(Unreal Build Accelerator) 는 C++ 컴파일러 등의 타사 프로그램을 위해 가벼운 가상화를 구현하며, 필요시 초기 머신의 정보를 요청하는 원격 머신에서 실행될 수 있도록 하는 툴입니다. 원격 실행 프로세스는 로컬 머신에서 실행되는 것처럼 작동하여 파일 시스템 등의 동일한 뷰를 확인하고, 파일은 필요시 내부에서 원격 머신으로 전송되거나 원격 머신에서 전송합니다.
언리얼 빌드 툴(Unreal Build Tool) 은 언리얼 빌드 액셀러레이터를 호드와 함께 사용하여 연결된 에이전트에 대한 컴파일 작업을 오프로드함으로써 다수의 머신에 워크로드를 분산합니다.
언리얼 빌드 액셀러레이터는 언리얼 엔진 5.4에서 Windows만 지원합니다. 향후 출시 버전에서 Mac 및 Linux가 지원될 예정입니다.
전제 조건
- 호드 서버 및 하나 이상의 호드 에이전트(호드 설치 튜토리얼 참고)
- 개발 중인 UE 프로젝트가 있는 워크스테이션
- 7000번~7010번 범위의 포트에서 워크스테이션과 호드 에이전트 간의 네트워크 연결
- 활성화된 기본
Anonymous인증 수단(자세한 내용은 아래 참고)
단계
- 빌드를 시작한 머신에서 UE 프로젝트가 로컬로 동기화 및 빌드되어 있는지 확인합니다.
-
Engine/Saved/UnrealBuildTool/BuildConfiguration.xml을 다음으로 업데이트하여 언리얼 빌드 툴이 호드 서버를 사용하도록 환경설정합니다.<?xml version="1.0" encoding="utf-8" ?> <Configuration xmlns="https://www.unrealengine.com/BuildConfiguration"> <BuildConfiguration> <bAllowUBAExecutor>true</bAllowUBAExecutor> </BuildConfiguration> <Horde> <Server>http://{{ SERVER_HOST_NAME }}:13340</Server> <WindowsPool>Win-UE5</WindowsPool> </Horde> <UnrealBuildAccelerator> <bLaunchVisualizer>true</bLaunchVisualizer> </UnrealBuildAccelerator> </Configuration>SERVER_HOST_NAME을 호드 서버 설치와 연결된 주소로 대체합니다.BuildConfiguration.xml은 일반적으로 소스 컨트롤 아래의 위치를 비롯해 선호에 따라 파일 시스템 내 다양한 위치에서 제공될 수 있습니다. 자세한 내용은 언리얼 빌드 툴 문서의 빌드 환경설정을 참고하세요.
-
평소처럼 IDE를 통해 프로젝트를 컴파일합니다. 다음과 같은 로그 줄이 관찰되어야 합니다.
[Worker0] Connected to AGENT-1 (10.0.10.172) under lease 65d48fe1eb6ff84c8197a9b0 ... [17/5759] Compile [x64] Module.CoreUObject.2.cpp [RemoteExecutor: AGENT-1]이는 작업이 여러 에이전트에 분산되고 있음을 나타냅니다. UBA 시각화 툴을 활성화한 경우 빌드가 다수의 머신에서 어떻게 진행되고 있는지에 대한 그래픽 개요도 볼 수 있습니다.
디버깅 및 미세 조정을 위해 모든 컴파일 워크로드의 원격 실행을 강제하는 것이 유용할 수 있습니다. 이렇게 하려면
BuildConfiguration.xml파일에서 다음 옵션을 활성화하거나 언리얼 빌드 툴 명령줄에-UBAForceRemote를 전달합니다.<UnrealBuildAccelerator> <bForceBuildAllRemote>true</bForceBuildAllRemote> </UnrealBuildAccelerator>퍼포먼스상의 이유로 호드 서버와 같은 머신에서 호드 에이전트를 실행하는 것은 권장되지 않습니다.
호드의 빌드 자동화 기능을 사용할 때는 UBA를 위한 에이전트 풀과 빌드 자동화를 위한 에이전트 풀이 혼합되는 것에 주의해야 합니다. 빌드 자동화에 사용되는 에이전트는 일반적으로 요구 사항이 더 높으며 계산 헬퍼보다 더 희소한 리소스입니다.
인증 활성화하기
익명 인증 모드를 사용하는 경우, 인증이 없으며 모든 사용자가 원격 컴파일 실행에 대한 완전한 액세스 권한을 보유합니다. 이는 테스트 단계에서만 권장되며 가능한 한 빨리 Horde 또는 OpenIdConnect 중 하나로 전환해야 합니다. 전환이 끝나면 이른바 계산 클러스터라고 하는 클러스터에 추가 권한을 부여해야 합니다. 기본적으로 default 라는 클러스터가 이미 정의되어 있습니다.
원격 컴파일을 사용하는 호드 작업은 각 작업 단계마다 환경 변수로 설정된 주입된 토큰(UE_HORDE_TOKEN)을 통해 액세스 권한이 자동으로 주어집니다.
아래는 UBT 및 UBA가 원격 컴파일을 예약하도록 하기 위해 부여된 default 클러스터 및 AddComputeTasks 로 업데이트된 글로벌 환경설정입니다. 사용자에게 제공되는 클레임을 확인하려면 사용자로 로그인하여 /api/v1/user/claims 를 엽니다.
{
// ...
"plugins": {
// ...
"compute": {
// ...
"clusters": [
{
"id": "default",
"namespaceid": "horde.compute",
"acl": {
"entries": [
{
"claim": { "type": "http://epicgames.com/ue/horde/user", "value": "jane.smith" },
"actions": ["AddComputeTasks"]
}
]
}
}
]
}
}
}