지원 종료 공지: 2026 AWS 년 5월 20일에에 대한 지원이 종료됩니다 AWS SimSpace Weaver. 2026년 5월 20일 이후에는 SimSpace Weaver 콘솔 또는 SimSpace Weaver 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은 AWS SimSpace Weaver 지원 종료를 참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Service Quotas 작업
이 섹션에서는에 대한 서비스 할당량으로 작업하는 방법을 설명합니다 SimSpace Weaver. 할당량은 제한이라고도 합니다. Service Quotas 목록은 SimSpace Weaver 엔드포인트 및 할당량 섹션을 참조하세요. 이 섹션의 API는 앱 API 세트에서 가져온 것입니다. 앱 API는 서비스 API와 다릅니다. 앱 APIs입니다. SimSpace Weaver 로컬 시스템의 앱 SDK 폴더에서 앱 API에 대한 설명서를 찾을 수 있습니다.
sdk-folder\SimSpaceWeaverAppSdk-sdk-version\documentation\index.html
앱 제한 확인하기
RuntimeLimits앱 API를 사용하여 앱의 제한을 쿼리할 수 있습니다.
Result<Limit> RuntimeLimit(Application& app, LimitType type)
파라미터
- Application 및 앱
-
앱에 대한 참조입니다.
- LimitType 유형
-
다음과 같은 제한 유형을 가진 열거형입니다.
enum LimitType { Unset = 0, EntitiesPerPartition = 1, RemoteEntityTransfers = 2, LocalEntityTransfers = 3 };
다음 예제에서는 엔터티 수 제한을 쿼리합니다.
WEAVERRUNTIME_TRY(auto entity_limit, Api::RuntimeLimit(m_app, Api::LimitType::EntitiesPerPartition)) Log::Info("Entity count limit", entity_limit.value);
앱에서 사용하는 리소스의 양 가져오기
RuntimeMetrics 앱 API를 호출하여 앱에서 사용하는 리소스의 양을 가져올 수 있습니다.
Result<std::reference_wrapper<const AppRuntimeMetrics>> RuntimeMetrics(Application& app) noexcept
파라미터
- Application 및 앱
-
앱에 대한 참조입니다.
API는 지표가 포함된 struct에 대한 참조를 반환합니다. 카운터 지표에는 실행 중인 총 값이 포함되며 증가만 합니다. 게이지 지표에는 증가 또는 감소할 수 있는 값이 있습니다. 애플리케이션 런타임은 이벤트로 인해 값이 증가할 때마다 카운터를 업데이트합니다. 런타임은 API를 호출할 때만 게이지를 업데이트합니다. SimSpace Weaver 는 참조가 앱 수명 주기 동안 유효하도록 보장합니다. API를 반복해서 호출해도 참조는 변경되지 않습니다.
struct AppRuntimeMetrics { uint64_t total_committed_ticks_gauge, uint32_t active_entity_gauge, uint32_t ticks_since_reset_counter, uint32_t load_field_counter, uint32_t store_field_counter, uint32_t created_entity_counter, uint32_t deleted_entity_counter, uint32_t entered_entity_counter, uint32_t exited_entity_counter, uint32_t rejected_incoming_transfer_counter, uint32_t rejected_outgoing_transfer_counter }
지표 재설정
ResetRuntimeMetrics 앱 API는 AppRuntimeMetrics struct의 값을 재설정합니다.
Result<void> ResetRuntimeMetrics(Application& app) noexcept
다음 예제에서는 앱에서 ResetRuntimeMetrics를 호출하는 방법을 보여줍니다.
if (ticks_since_last_report > 100) { auto metrics = WEAVERRUNTIME_EXPECT(Api::RuntimeMetrics(m_app)); Log::Info(metrics); ticks_since_last_report = 0; WEAVERRUNTIME_EXPECT(Api::ResetRuntimeMetrics(m_app)); }
제한 초과됨
제한을 초과하는 앱 API 직접 호출은 ErrorCode::CapacityExceeded를 반환합니다. 단, 엔터티 전송은 예외입니다. SimSpace Weaver
는 커밋 및 BeginUpdate 앱 API 작업의 일부로 엔터티 전송을 비동기적으로 처리하므로 엔터티 전송 제한 때문에 전송이 실패할 경우 오류를 반환하는 특정 작업은 없습니다. 전송 실패를 감지하기 위해 rejected_incoming_transfer_counter 및 rejected_outgoing_transfer_counter(AppRuntimeMetrics struct)의 현재 값을 이전 값과 비교할 수 있습니다. 거부된 엔터티는 파티션에 포함되지 않지만 앱은 여전히 이를 시뮬레이션할 수 있습니다.
메모리 부족
SimSpace Weaver 는 가비지 수집기 프로세스를 사용하여 여유 메모리를 정리하고 해제합니다. 가비지 수집기가 메모리를 해제할 수 있는 속도보다 빠르게 데이터를 쓸 수 있습니다. 이 경우 쓰기 작업이 앱의 예약 메모리 제한을 초과할 수 있습니다. SimSpace Weaver
는 OutOfMemory(및 추가 세부 정보)가 포함된 메시지와 함께 내부 오류를 반환합니다. 자세한 내용은 여러 시간에 걸쳐 쓰기 작업 분산 단원을 참조하십시오.
모범 사례
다음의 모범 사례는 제한 초과되지 않도록 앱을 설계하기 위한 일반적인 지침입니다. 이는 특정 앱 디자인에는 적용되지 않을 수 있습니다.
자주 모니터링하고 속도 줄이기
지표를 자주 모니터링하여 제한에 가깝게 도달하는 작업의 속도를 늦춰야 합니다.
구독 제한 및 전송 제한 초과 방지
가능한 경우 시뮬레이션을 설계하여 원격 구독 및 엔터티 전송 횟수를 줄입니다. 배치 그룹을 사용하여 동일한 작업자에 여러 파티션을 배치하고 작업자 간에 엔터티를 원격으로 전송해야 하는 필요성을 줄일 수 있습니다.
여러 시간에 걸쳐 쓰기 작업 분산
틱의 업데이트 수와 크기는 트랜잭션을 커밋하는 데 필요한 시간과 메모리에 상당한 영향을 미칠 수 있습니다. 메모리 요구 사항이 크면 애플리케이션 런타임에 메모리가 부족해질 수 있습니다. 쓰기를 여러 시간에 걸쳐 분산하여 틱당 평균 총 업데이트 크기를 줄일 수 있습니다. 이를 통해 성능을 개선하고 제한 초과를 방지할 수 있습니다. 각 틱에 평균 12MB 또는 각 엔터티에 1.5KB를 초과하여 쓰지 않는 것이 좋습니다.