View a markdown version of this page

Memesan memori instance wadah Amazon ECS Linux - Amazon Elastic Container Service

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

Memesan memori instance wadah Amazon ECS Linux

Saat agen kontainer Amazon ECS mendaftarkan instance kontainer ke cluster, agen harus menentukan berapa banyak memori yang tersedia instans kontainer untuk cadangan untuk tugas Anda. Karena overhead memori platform dan memori yang ditempati oleh kernel sistem, jumlah ini berbeda dengan jumlah memori terinstal yang diiklankan untuk instans Amazon EC2. Contohnya, instans m4.large memiliki memori terinstal sebesar 8 GiB. Namun, ini tidak selalu diterjemahkan ke memori 8192 MiB yang tersedia untuk tugas saat instance kontainer mendaftar.

Penentuan sumber daya memori Instans Terkelola ECS

Instans Terkelola Amazon ECS menggunakan pendekatan hierarkis untuk menentukan persyaratan sumber daya memori untuk tugas. Tidak seperti ECS pada EC2 yang bergantung pada introspeksi memori Docker, Instans Terkelola ECS menghitung persyaratan memori langsung dari payload tugas selama keputusan penjadwalan.

Ketika agen Instans Terkelola ECS menerima tugas, agen akan menghitung kebutuhan memori menggunakan urutan prioritas berikut:

  1. Task-level memori (prioritas tertinggi) - Jika memori tingkat tugas ditentukan dalam definisi tugas, agen menggunakan nilai ini secara langsung. Ini diutamakan daripada semua pengaturan memori tingkat kontainer.

  2. Container-level jumlah memori (fallback) - Jika memori tingkat tugas tidak ditentukan (atau 0), agen menjumlahkan persyaratan memori dari semua wadah dalam tugas. Untuk setiap wadah, ia menggunakan:

    1. Reservasi memori (batas lunak) - Jika wadah menentukan memoryReservation dalam konfigurasinya, agen menggunakan nilai ini.

    2. Memori kontainer (batas keras) - Jika tidak memoryReservation ditentukan, agen menggunakan memory bidang kontainer.

contoh Task-level memori ditentukan

Ketika memori tingkat tugas ditentukan, itu diutamakan daripada pengaturan tingkat kontainer:

{ "family": "my-task", "memory": "2048", "containerDefinitions": [ { "name": "container1", "memory": 1024, "memoryReservation": 512 } ] }

Agen mencadangkan 2048 MiB (memori tingkat tugas diutamakan).

contoh Container-level memori dengan reservasi

Ketika memori tingkat tugas tidak ditentukan, agen menjumlahkan persyaratan memori kontainer:

{ "family": "my-task", "containerDefinitions": [ { "name": "container1", "memory": 1024, "memoryReservation": 512 }, { "name": "container2", "memory": 512 } ] }

Agen mencadangkan 512 MiB (reservasi container1) + 512 MiB (memori container2) = total 1024 MiB.

Agen Instans Terkelola ECS melakukan perhitungan memori dalam tiga fase:

  1. Penerimaan tugas - Ketika muatan tugas tiba dari bidang kontrol ECS, agen segera menghitung memori yang diperlukan.

  2. Penyimpanan sumber daya - Persyaratan memori yang dihitung disimpan dalam model tugas untuk digunakan nanti dalam operasi akuntansi sumber daya.

  3. Keputusan penjadwalan - Sebelum menerima tugas, agen memeriksa apakah memori yang cukup tersedia. Jika memori tidak mencukupi, tugas ditolak dan tetap berada dalam antrian layanan ECS sampai sumber daya tersedia.

catatan

Tidak seperti ECS di EC2, Instans Terkelola ECS tidak menggunakan variabel konfigurasi. ECS_RESERVED_MEMORY Reservasi memori untuk proses sistem ditangani melalui manajemen sumber daya platform yang mendasarinya, dan agen melakukan akuntansi sumber daya yang akurat berdasarkan definisi tugas.

Untuk ECS di EC2, agen kontainer Amazon ECS menyediakan variabel konfigurasi yang disebutECS_RESERVED_MEMORY, yang dapat Anda gunakan untuk menghapus sejumlah MiB memori tertentu dari kumpulan yang dialokasikan untuk tugas Anda. Ini secara efektif menyimpan memori untuk proses sistem yang penting.

Jika Anda menempati semua memori pada instance wadah dengan tugas Anda, maka ada kemungkinan bahwa tugas Anda akan bersaing dengan proses sistem penting untuk memori dan mungkin memulai kegagalan sistem.

Misalnya, jika Anda menentukan ECS_RESERVED_MEMORY=256 dalam file konfigurasi agen kontainer Anda, agen akan mendaftarkan memori total dikurangi 256 MiB untuk instans tersebut, dan 256 MiB memori tidak dapat dialokasikan untuk tugas ECS. Untuk informasi lebih lanjut tentang variabel konfigurasi agen dan cara mengaturnya, lihat Konfigurasi agen kontainer Amazon ECS dan Bootstrap instans kontainer Amazon ECS Linux untuk meneruskan data.

Jika Anda menentukan 8192 MiB untuk tugas, dan tidak ada instans kontainer yang memiliki memori 8192 MiB atau lebih besar yang tersedia untuk memenuhi persyaratan ini, maka tugas tidak dapat ditempatkan di cluster Anda. Jika Anda menggunakan lingkungan komputasi terkelola, maka AWS Batch harus meluncurkan jenis instans yang lebih besar untuk mengakomodasi permintaan.

Agen kontainer Amazon ECS menggunakan fungsi ReadMemInfo() Docker untuk kueri total memori yang tersedia untuk sistem operasi. Baik Linux dan Windows menyediakan utilitas baris perintah untuk menentukan total memori.

contoh- Menentukan memori total Linux

Perintah free menampilkan memori total yang diakui oleh sistem operasi.

$ free -b

Contoh keluaran untuk m4.large instance yang menjalankan Amazon ECS-optimized Amazon Linux AMI.

total used free shared buffers cached Mem: 8373026816 348180480 8024846336 90112 25534464 205418496 -/+ buffers/cache: 117227520 8255799296

Instans ini memiliki 8373026816 byte memori total, yang diterjemahkan menjadi 7985 MiB yang tersedia untuk tugas.

contoh- Menentukan memori total Windows

Perintah wmic menampilkan memori total yang diakui oleh sistem operasi.

C:\> wmic ComputerSystem get TotalPhysicalMemory

Contoh keluaran untuk m4.large instance yang menjalankan AMI Amazon ECS-optimized Windows Server.

TotalPhysicalMemory 8589524992

Instans ini memiliki 8589524992 byte memori total, yang diterjemahkan menjadi 8191 MiB yang tersedia untuk tugas.

Melihat memori instance wadah

Anda dapat melihat berapa banyak memori yang terdaftar dengan instans kontainer di konsol Amazon ECS (atau dengan operasi DescribeContainerInstances API). Jika Anda mencoba memaksimalkan pemanfaatan sumber daya dengan menyediakan tugas sebanyak mungkin memori untuk jenis instans tertentu, Anda dapat mengamati memori yang tersedia untuk instance kontainer tersebut dan kemudian menetapkan tugas Anda memori sebanyak itu.

Untuk melihat memori instance kontainer
  1. Buka konsol di https://console.aws.amazon.com/ecs/v2.

  2. Di panel navigasi, pilih Cluster, lalu pilih cluster yang menghosting instance kontainer Anda.

  3. Pilih Infrastruktur, lalu di bawah Instans kontainer, pilih instance kontainer.

  4. Bagian Resources menunjukkan memori terdaftar dan tersedia untuk instance kontainer.

    Nilai Memori Terdaftar adalah nilai instance kontainer; terdaftar di Amazon ECS saat pertama kali diluncurkan, dan nilai Mem ori Tersedia adalah apa yang belum dialokasikan untuk tugas.