

終止支援通知： 將於 2026 AWS 年 5 月 20 日結束對 的支援 AWS SimSpace Weaver。2026 年 5 月 20 日之後，您將無法再存取 SimSpace Weaver 主控台或 SimSpace Weaver 資源。如需詳細資訊，請參閱[AWS SimSpace Weaver 終止支援](https://docs.aws.amazon.com/simspaceweaver/latest/userguide/simspaceweaver-end-of-support.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用服務配額
<a name="working-with_quotas"></a>

本節說明如何使用 的服務配額 SimSpace Weaver。**配額**也稱為**限制**。如需服務配額清單，請參閱 [SimSpace Weaver 端點和配額](service-quotas.md)。本節中的 APIs 來自一組**應用程式 APIs**。應用程式 APIs與服務 APIs不同。應用程式 APIs 是 SimSpace Weaver 應用程式 SDK 的一部分。您可以在本機系統的應用程式 SDK 資料夾中找到應用程式 APIs 的文件：

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

**Topics**
+ [取得應用程式的限制](#working-with_quotas_get-app-limits)
+ [取得應用程式使用的資源量](#working-with_quotas_get-app-resources)
+ [重設指標](#working-with_quotas_reset-metrics)
+ [超過限制](#working-with_quotas_exceed-limit)
+ [記憶體不足](#working-with_quotas_out-of-memory)
+ [最佳實務](#working-with_quotas_best-practices)

## 取得應用程式的限制
<a name="working-with_quotas_get-app-limits"></a>

您可以使用**RuntimeLimits**應用程式 API 來查詢應用程式的限制。

```
Result<Limit> RuntimeLimit(Application& app, LimitType type)
```Parameters

**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);
```

## 取得應用程式使用的資源量
<a name="working-with_quotas_get-app-resources"></a>

您可以呼叫**RuntimeMetrics**應用程式 API，以取得應用程式使用的資源量：

```
Result<std::reference_wrapper<const AppRuntimeMetrics>> RuntimeMetrics(Application& app) noexcept
```Parameters

**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
}
```

## 重設指標
<a name="working-with_quotas_reset-metrics"></a>

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

## 超過限制
<a name="working-with_quotas_exceed-limit"></a>

超過限制的應用程式 API 呼叫將傳回 `ErrorCode::CapacityExceeded`，但實體傳輸除外。 SimSpace Weaver 會在**遞交**和**BeginUpdate**應用程式 API 操作中以非同步方式處理實體傳輸，因此如果傳輸因實體傳輸限制而失敗，則不會有傳回錯誤的特定操作。若要偵測傳輸失敗，您可以將 `rejected_incoming_transfer_counter`和 `rejected_outgoing_transfer_counter`（在 `AppRuntimeMetrics` 中struct) 的目前值與其先前的值進行比較。拒絕的實體不會在分割區中，但應用程式仍然可以模擬它們。

## 記憶體不足
<a name="working-with_quotas_out-of-memory"></a>

SimSpace Weaver 使用垃圾收集器程序來清理和釋放釋放的記憶體。寫入資料的速度可能比垃圾收集器釋放記憶體的速度快。如果發生這種情況，寫入操作可能會超過應用程式的預留記憶體限制。 SimSpace Weaver 會傳回包含 `OutOfMemory`（和其他詳細資訊） 訊息的內部錯誤。如需詳細資訊，請參閱[跨時間分散寫入](#working-with_quotas_best-practices_spread-writes)。

## 最佳實務
<a name="working-with_quotas_best-practices"></a>

下列最佳實務是設計應用程式的一般準則，以避免超過限制。它們可能不適用於您的特定應用程式設計。

### 經常監控並放慢速度
<a name="working-with_quotas_best-practices_monitor"></a>

您應該經常監控指標，並減慢接近限制的操作。

### 避免超過訂閱限制和轉移限制
<a name="working-with_quotas_best-practices_subscription-and-xfer"></a>

如果可能，設計您的模擬以減少遠端訂閱和實體傳輸的數量。您可以使用置放群組在同一個工作者上放置多個分割區，並減少工作者之間遠端實體傳輸的需求。

### 跨時間分散寫入
<a name="working-with_quotas_best-practices_spread-writes"></a>

刻度中的更新數量和大小可能會對遞交交易所需的時間和記憶體產生重大影響。大型記憶體需求可能會導致應用程式執行期用盡記憶體。您可以將寫入分散到不同時間，以降低每個刻度的平均更新總大小。這有助於改善效能並避免超過限制。建議您不要在每個刻度上寫入超過 12 MB 的平均值，或每個實體寫入超過 1.5 KB 的平均值。