

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

# Kiat kinerja Amazon EFS
<a name="performance-tips"></a>

Saat menggunakan Amazon EFS, ingatlah kiat kinerja berikut.

## I/O Ukuran rata-rata
<a name="efs-perf-avg-io-size"></a>

Sifat terdistribusi Amazon EFS memungkinkan tingkat ketersediaan, daya tahan, dan skalabilitas yang tinggi. Arsitektur terdistribusi ini menghasilkan overhead latensi kecil untuk setiap operasi file. Karena latensi per operasi ini, throughput keseluruhan umumnya meningkat seiring dengan meningkatnya I/O ukuran rata-rata, karena overhead diamortisasi pada jumlah data yang lebih besar.

## Mengoptimalkan beban kerja yang menuntut throughput tinggi dan IOPS
<a name="recs-intensive-workloads"></a>

Untuk beban kerja yang memerlukan throughput tinggi dan IOPS, gunakan sistem file Regional yang dikonfigurasi dengan mode kinerja Tujuan Umum dan throughput Elastis.

**catatan**  
Untuk mencapai IOPS baca maksimum untuk data yang sering diakses, sistem file harus menggunakan throughput Elastic.

Untuk mencapai tingkat kinerja tertinggi, Anda harus memanfaatkan paralelisasi dengan mengonfigurasi aplikasi atau beban kerja Anda sebagai berikut.

1. Mendistribusikan beban kerja secara merata di semua klien dan direktori, dengan setidaknya jumlah direktori yang sama dengan jumlah klien yang digunakan.

1. Minimalkan perdebatan dengan menyelaraskan thread individual ke kumpulan data atau file yang berbeda.

1. Distribusikan beban kerja di 10 klien NFS atau lebih, dengan setidaknya 64 utas per klien dalam satu target pemasangan.

## Koneksi simultan
<a name="efs-perf-sim-connections"></a>

Anda dapat memasang sistem file Amazon EFS di hingga ribuan Amazon EC2 dan instans AWS komputasi lainnya secara bersamaan. Anda dapat mendorong tingkat throughput yang lebih tinggi pada sistem file secara agregat di seluruh instance komputasi jika Anda dapat memparalelkan aplikasi Anda di lebih banyak instance.

## Model permintaan
<a name="efs-perf-request-model"></a>

Jika Anda mengaktifkan penulisan asinkron ke sistem file Anda, operasi penulisan yang tertunda akan di-buffer pada instans Amazon EC2 sebelum ditulis ke Amazon EFS secara asinkron. Penulisan asinkron biasanya memiliki latensi yang lebih rendah. Saat melakukan penulisan asinkron, kernel menggunakan memori tambahan untuk melakukan cache. 

Sistem file yang telah mengaktifkan penulisan sinkron, atau yang membuka file menggunakan opsi yang melewati cache (misalnya,`O_DIRECT`), mengeluarkan permintaan sinkron ke Amazon EFS. Setiap operasi melewati perjalanan pulang pergi antara klien dan Amazon EFS.

**catatan**  
Model permintaan pilihan Anda telah mengorbankan konsistensi (jika Anda menggunakan beberapa instans Amazon EC2) dan kecepatan. Menggunakan penulisan sinkron memberikan peningkatan konsistensi data dengan menyelesaikan setiap transaksi permintaan tulis sebelum memproses permintaan berikutnya. Menggunakan penulisan asinkron memberikan peningkatan throughput dengan buffering operasi penulisan yang tertunda.

## Pengaturan pemasangan klien NFS
<a name="efs-perf-nfs-client-mnt-settings"></a>

Verifikasi bahwa Anda menggunakan opsi pemasangan yang disarankan seperti yang diuraikan di dalam [Memasang sistem file EFS](mounting-fs.md) dan di[Pertimbangan pemasangan untuk Linux](mounting-fs-mount-cmd-general.md). 

Saat memasang sistem file di instans Amazon EC2, Amazon EFS mendukung protokol Network File System versi 4.0 dan 4.1 (NFSv4). NFSV4.1 memberikan kinerja yang lebih baik untuk operasi baca file kecil paralel (lebih dari 10.000 file per detik) dibandingkan dengan NFSv4.0 (kurang dari 1.000 file per detik). Untuk instans macOS Amazon EC2 yang menjalankan macOS Big Sur, hanya 0,0 yang didukung. NFSv4

Jangan gunakan opsi pemasangan berikut:
+ `noac`,`actimeo=0`,`acregmax=0`, `acdirmax=0` — Opsi ini menonaktifkan cache atribut, yang memiliki dampak kinerja yang sangat besar.
+ `lookupcache=pos`, `lookupcache=none` — Opsi ini menonaktifkan cache pencarian nama file, yang memiliki dampak yang sangat besar pada kinerja.
+ `fsc`— Opsi ini memungkinkan caching file lokal, tetapi tidak mengubah koherensi cache NFS, dan tidak mengurangi latensi.

**catatan**  
Saat Anda memasang sistem file Anda, pertimbangkan untuk meningkatkan ukuran buffer baca dan tulis untuk klien NFS Anda menjadi 1 MB.

## Mengoptimalkan kinerja file kecil
<a name="optimize-open-close"></a>

Anda dapat meningkatkan kinerja file kecil dengan meminimalkan pembukaan kembali file, meningkatkan paralelisme, dan menggabungkan file referensi jika memungkinkan.
+ Minimalkan jumlah perjalanan pulang pergi ke server.

  Jangan menutup file secara tidak perlu jika Anda membutuhkannya nanti dalam alur kerja. Menjaga deskriptor file tetap terbuka memungkinkan akses langsung ke salinan lokal di cache. Operasi buka, tutup, dan metadata file umumnya tidak dapat dibuat secara asinkron atau melalui pipa.

  Saat membaca atau menulis file kecil, dua perjalanan pulang pergi tambahan itu signifikan.

  Setiap perjalanan pulang pergi (file terbuka, tutup file) dapat memakan waktu sebanyak membaca atau menulis megabyte data massal. Ini lebih efisien untuk membuka file input atau output sekali, di awal pekerjaan komputasi Anda, dan menahannya terbuka untuk seluruh panjang pekerjaan.
+ Gunakan paralelisme untuk mengurangi dampak waktu pulang pergi.
+ Bundel file referensi dalam `.zip` file. Beberapa aplikasi menggunakan satu set besar file referensi kecil, sebagian besar hanya-baca. Menggabungkan ini dalam `.zip` file memungkinkan Anda membaca banyak file dengan satu perjalanan pulang-pergi terbuka.

  `.zip`Format ini memungkinkan akses acak ke file individual.

## Mengoptimalkan kinerja direktori
<a name="optimize-directories"></a>

Saat melakukan listing (**ls**) pada direktori yang sangat besar (lebih dari 100k file) yang sedang dimodifikasi secara bersamaan, klien Linux NFS dapat hang, tidak mengembalikan respons. Masalah ini diperbaiki di kernel 5.11, yang telah di-porting ke kernel Amazon Linux 2 4.14, 5.4, dan 5.10.

Kami menyarankan agar jumlah direktori di sistem file Anda kurang dari 10.000, jika memungkinkan. Gunakan subdirektori bersarang sebanyak mungkin.

Saat mencantumkan direktori, hindari mendapatkan atribut file jika tidak diperlukan, karena tidak disimpan di direktori itu sendiri.

## Mengoptimalkan ukuran read\$1ahead\$1kb NFS
<a name="efs-perf-optimize-nfs-read-ahead"></a>

`read_ahead_kb`Atribut NFS mendefinisikan jumlah kilobyte untuk kernel Linux untuk dibaca ke depan atau prefetch selama operasi baca berurutan. 

Untuk versi kernel Linux sebelum 5.4.\$1, `read_ahead_kb` nilainya ditetapkan dengan mengalikan `NFS_MAX_READAHEAD` dengan nilai untuk `rsize` (klien mengonfigurasi ukuran buffer baca yang diatur dalam opsi pemasangan). Saat menggunakan [opsi pemasangan yang disarankan](mounting-fs-mount-cmd-general.md), rumus ini disetel `read_ahead_kb` ke 15 MB. 

**catatan**  
Dimulai dengan kernel Linux versi 5.4.\$1, klien Linux NFS menggunakan `read_ahead_kb` nilai default 128 KB. Kami merekomendasikan untuk meningkatkan nilai ini menjadi 15 MB.

Amazon EFS mount helper yang tersedia dalam `amazon-efs-utils` versi 1.33.2 dan yang lebih baru secara otomatis memodifikasi `read_ahead_kb` nilainya menjadi sama dengan 15\$1`rsize`, atau 15 MB, setelah memasang sistem file.

Untuk kernel Linux 5.4 atau yang lebih baru, jika Anda tidak menggunakan mount helper untuk me-mount sistem file Anda, pertimbangkan pengaturan manual `read_ahead_kb` ke 15 MB untuk meningkatkan kinerja. Setelah memasang sistem file, Anda dapat mengatur ulang `read_ahead_kb` nilainya dengan menggunakan perintah berikut. Sebelum menggunakan perintah ini, ganti nilai-nilai berikut:
+ Ganti `read-ahead-value-kb` dengan ukuran yang diinginkan dalam kilobyte.
+ Ganti `efs-mount-point` dengan titik pasang sistem file.

```
device_number=$(stat -c '%d' efs-mount-point)
((major = ($device_number & 0xFFF00) >> 8))
((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00)))
sudo bash -c "echo read-ahead-value-kb > /sys/class/bdi/$major:$minor/read_ahead_kb"
```

Contoh berikut menetapkan `read_ahead_kb` ukuran untuk 15 MB.

```
device_number=$(stat -c '%d' efs)
((major = ($device_number & 0xFFF00) >> 8))
((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00)))
sudo bash -c "echo 15000 > /sys/class/bdi/$major:$minor/read_ahead_kb"
```