

Pemberitahuan akhir dukungan: Pada 20 Mei 2026, AWS akan mengakhiri dukungan untuk AWS SimSpace Weaver. Setelah 20 Mei 2026, Anda tidak akan lagi dapat mengakses SimSpace Weaver konsol atau SimSpace Weaver sumber daya. Untuk informasi selengkapnya, lihat [AWS SimSpace Weaver akhir dukungan](https://docs.aws.amazon.com/simspaceweaver/latest/userguide/simspaceweaver-end-of-support.html). 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Bekerja dengan kuota layanan
<a name="working-with_quotas"></a>

Bagian ini menjelaskan cara bekerja dengan kuota layanan untuk SimSpace Weaver. **Kuota** juga disebut **batas**. Untuk daftar kuota layanan, lihat[SimSpace Titik akhir dan kuota Weaver](service-quotas.md). APIsDi bagian ini berasal dari kumpulan **aplikasi APIs**. Aplikasi APIs berbeda dari layanan APIs. Aplikasi ini APIs merupakan bagian dari SDK SimSpace Weaver aplikasi. Anda dapat menemukan dokumentasi untuk aplikasi APIs di folder SDK aplikasi di sistem lokal Anda:

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

**Topics**
+ [Dapatkan batasan untuk sebuah aplikasi](#working-with_quotas_get-app-limits)
+ [Dapatkan jumlah sumber daya yang digunakan oleh aplikasi](#working-with_quotas_get-app-resources)
+ [Setel ulang metrik](#working-with_quotas_reset-metrics)
+ [Melebihi batas](#working-with_quotas_exceed-limit)
+ [Kehabisan memori](#working-with_quotas_out-of-memory)
+ [Praktik terbaik](#working-with_quotas_best-practices)

## Dapatkan batasan untuk sebuah aplikasi
<a name="working-with_quotas_get-app-limits"></a>

Anda dapat menggunakan API **RuntimeLimits** aplikasi untuk menanyakan batasan aplikasi.

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

**Application& aplikasi**  
Referensi ke aplikasi.

**LimitTypejenis**  
Enum dengan jenis batas berikut:  

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

Contoh berikut menanyakan batas jumlah entitas.

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

## Dapatkan jumlah sumber daya yang digunakan oleh aplikasi
<a name="working-with_quotas_get-app-resources"></a>

Anda dapat memanggil API **RuntimeMetrics** aplikasi untuk mendapatkan jumlah sumber daya yang digunakan oleh aplikasi:

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

**Application& aplikasi**  
Referensi ke aplikasi.

API mengembalikan referensi ke struct yang berisi metrik. Metrik penghitung memiliki nilai total yang berjalan dan hanya meningkat. Metrik pengukur memiliki nilai yang dapat meningkat atau menurun. Runtime aplikasi memperbarui penghitung setiap kali acara meningkatkan nilainya. Runtime hanya memperbarui pengukur saat Anda memanggil API. SimSpace Weaver menjamin bahwa referensi berlaku untuk masa pakai aplikasi. Ulangi panggilan ke API tidak akan mengubah referensi.

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

## Setel ulang metrik
<a name="working-with_quotas_reset-metrics"></a>

API **ResetRuntimeMetrics** aplikasi menyetel ulang nilai dalam file. `AppRuntimeMetrics` struct

```
Result<void> ResetRuntimeMetrics(Application& app) noexcept
```

Contoh berikut menunjukkan bagaimana Anda dapat menelepon **ResetRuntimeMetrics** di aplikasi Anda.

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

## Melebihi batas
<a name="working-with_quotas_exceed-limit"></a>

Panggilan API aplikasi yang melebihi batas akan menampilkan`ErrorCode::CapacityExceeded`, kecuali transfer entitas. SimSpace Weaver menangani transfer entitas secara asinkron sebagai bagian dari operasi **Komit** dan API **BeginUpdate** aplikasi, jadi tidak ada operasi spesifik yang mengembalikan kesalahan jika transfer gagal karena batas transfer entitas. Untuk mendeteksi kegagalan transfer, Anda dapat membandingkan nilai saat ini `rejected_incoming_transfer_counter` dan `rejected_outgoing_transfer_counter` (dalam `AppRuntimeMetrics`struct) dengan nilai sebelumnya. Entitas yang ditolak tidak akan berada di partisi, tetapi aplikasi masih dapat mensimulasikannya.

## Kehabisan memori
<a name="working-with_quotas_out-of-memory"></a>

SimSpace Weaver menggunakan proses pengumpul sampah untuk membersihkan dan melepaskan memori yang dibebaskan. Dimungkinkan untuk menulis data lebih cepat daripada pengumpul sampah dapat melepaskan memori. Jika ini terjadi, operasi tulis mungkin melebihi batas memori cadangan aplikasi. SimSpace Weaver akan mengembalikan kesalahan internal dengan pesan yang berisi `OutOfMemory` (dan detail tambahan). Untuk informasi selengkapnya, lihat [Spread menulis sepanjang waktu](#working-with_quotas_best-practices_spread-writes).

## Praktik terbaik
<a name="working-with_quotas_best-practices"></a>

Praktik terbaik berikut adalah pedoman umum untuk merancang aplikasi Anda agar tidak melebihi batas. Mereka mungkin tidak berlaku untuk desain aplikasi spesifik Anda.

### Pantau sering dan perlambat
<a name="working-with_quotas_best-practices_monitor"></a>

Anda harus sering memantau metrik Anda dan memperlambat operasi yang hampir mencapai batas.

### Hindari melebihi batas langganan dan batas transfer
<a name="working-with_quotas_best-practices_subscription-and-xfer"></a>

Jika memungkinkan, rancang simulasi Anda untuk mengurangi jumlah langganan jarak jauh dan transfer entitas. Anda dapat menggunakan grup penempatan untuk menempatkan beberapa partisi pada pekerja yang sama dan mengurangi kebutuhan transfer entitas jarak jauh antar pekerja. 

### Spread menulis sepanjang waktu
<a name="working-with_quotas_best-practices_spread-writes"></a>

Jumlah dan ukuran pembaruan dalam tanda centang dapat berdampak signifikan pada waktu dan memori yang diperlukan untuk melakukan transaksi. Persyaratan memori yang besar dapat menyebabkan runtime aplikasi kehabisan memori. Anda dapat menyebarkan penulisan sepanjang waktu untuk menurunkan ukuran total rata-rata pembaruan per centang. Ini dapat membantu meningkatkan kinerja dan menghindari melebihi batas. Kami menyarankan agar Anda tidak menulis lebih dari rata-rata 12 MB pada setiap centang atau 1,5 KB untuk setiap entitas. 