Trabalhar com Service Quotas - AWS SimSpace Weaver

Aviso de fim do suporte: em 20 de maio de 2026, AWS encerrará o suporte para AWS SimSpace Weaver. Depois de 20 de maio de 2026, você não poderá mais acessar o SimSpace Weaver console ou os SimSpace Weaver recursos. Para obter mais informações, consulte AWS SimSpace Weaver Fim do suporte.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Trabalhar com Service Quotas

Esta seção descreve como trabalhar com as cotas de serviço para SimSpace Weaver. As cotas também são chamadas de limites. Para uma lista de Service Quotas, consulte SimSpace Terminais e cotas do Weaver. APIsNesta seção, são do conjunto de aplicativos APIs. O aplicativo APIs é diferente do serviço APIs. O aplicativo APIs faz parte do SDK do SimSpace Weaver aplicativo. Você pode encontrar a documentação do aplicativo APIs na pasta SDK do aplicativo em seu sistema local:

sdk-folder\SimSpaceWeaverAppSdk-sdk-version\documentation\index.html

Obter os limites de um aplicativo

É possível usar a API de aplicativo RuntimeLimits para consultar os limites de um aplicativo.

Result<Limit> RuntimeLimit(Application& app, LimitType type)
Parâmetros
Application& app

Uma referência ao aplicativo.

Tipo de LimitType

Uma enumeração com os seguintes tipos de limite:

enum LimitType { Unset = 0, EntitiesPerPartition = 1, RemoteEntityTransfers = 2, LocalEntityTransfers = 3 };

O exemplo a seguir consulta o limite de contagem de entidades.

WEAVERRUNTIME_TRY(auto entity_limit, Api::RuntimeLimit(m_app, Api::LimitType::EntitiesPerPartition)) Log::Info("Entity count limit", entity_limit.value);

Obter a quantidade de recursos usados por um aplicativo

É possível chamar a API de aplicativo RuntimeMetrics para obter a quantidade de recursos usados por um aplicativo:

Result<std::reference_wrapper<const AppRuntimeMetrics>> RuntimeMetrics(Application& app) noexcept
Parâmetros
Application& app

Uma referência ao aplicativo.

A API retorna uma referência a uma struct que contém as métricas. Um contador de métricas contém um valor total contínuo crescente. Um medidor de métricas contém um valor que pode aumentar ou diminuir. O runtime do aplicativo atualiza um contador sempre que um evento aumenta em valor. O runtime só atualiza os medidores quando você chama a API. O SimSpace Weaver garante que a referência seja válida durante toda a vida útil do aplicativo. Chamadas repetidas para a API não alterarão a referência.

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 }

Redefinir métricas

A API de aplicativo ResetRuntimeMetrics redefine os valores na struct AppRuntimeMetrics.

Result<void> ResetRuntimeMetrics(Application& app) noexcept

O exemplo a seguir demonstra como fazer chamadas ResetRuntimeMetrics pelo app.

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)); }

Exceder um limite

Uma chamada de API do aplicativo que excede um limite retornará um ErrorCode::CapacityExceeded, exceto para transferências de entidades. O SimSpace Weaver trata as transferências de entidades de forma assíncrona como parte das operações da API de aplicativo Confirmar e BeginUpdate. Portanto, não há uma operação específica que retorne um erro se uma transferência falhar devido ao limite de transferência da entidade. Para detectar falhas de transferência, compare os valores atuais de rejected_incoming_transfer_counter e rejected_outgoing_transfer_counter (na struct AppRuntimeMetrics) com os valores anteriores. As entidades rejeitadas não estarão na partição, mas o aplicativo ainda poderá simulá-las.

Ficar sem memória

SimSpace Weaver usa um processo de coleta de lixo para limpar e liberar a memória liberada. É possível gravar dados mais rápido do que o coletor de lixo pode liberar memória. Se isso acontecer, as operações de gravação poderão exceder o limite de memória reservada do aplicativo. O SimSpace Weaver retornará um erro interno com uma mensagem que contém OutOfMemory e detalhes adicionais. Para obter mais informações, consulte Distribua gravações ao longo do tempo.

Práticas recomendadas

As práticas recomendadas a seguir são diretrizes gerais para criar aplicativos e evitar ultrapassar limites. Elas podem não se aplicar ao design específico do seu aplicativo.

Monitorar com frequência e diminuir a velocidade

Você deve monitorar suas métricas com frequência e desacelerar as operações que estão perto de atingir um limite.

Evite exceder os limites de assinatura e de transferência

Se possível, projete sua simulação para reduzir o número de assinaturas remotas e transferências de entidades. É possível usar grupos de posicionamento para colocar várias partições no mesmo operador e reduzir a necessidade de transferências remotas de entidades entre operadores.

Distribua gravações ao longo do tempo

O número e o tamanho das atualizações em uma marcação podem ter um impacto significativo no tempo e na memória necessários para confirmar uma transação. Grandes requisitos de memória podem fazer com que o runtime do aplicativo fique sem memória. É possível distribuir as gravações ao longo do tempo para reduzir o tamanho total médio das atualizações por marcação. Isso pode ajudar a melhorar o desempenho e evitar ultrapassar os limites. Recomendamos que você não escreva mais do que uma média de 12 MB em cada marcação ou 1,5 KB para cada entidade.