全部产品
Search
文档中心

Alibaba Cloud Linux:Hugetext

更新时间:Jul 02, 2025

Memori dialokasikan dan dikelola dalam blok yang disebut halaman. Sebagai perluasan dan optimasi dari fitur Transparent Enormous Pages (THP), fitur Enormoustext memungkinkan Anda mengalokasikan bagian-bagian eksekusi aplikasi dan pustaka tautan dinamis (DLL) ke halaman besar, biasanya berukuran 2 MB atau lebih. Fitur ini secara signifikan mengurangi kegagalan instruction translation lookaside buffer (iTLB) dari aplikasi serta meningkatkan pemanfaatan 2MB iTLB pada CPU. Fitur Enormoustext membantu mencegah masalah seperti fragmentasi memori dan pembengkakan memori, serta meningkatkan penggunaan memori. Halaman besar sangat cocok untuk skenario yang melibatkan segmen kode besar, seperti database dan aplikasi berskala besar. Topik ini menjelaskan cara menggunakan fitur Enormoustext beserta manfaat performanya.

Catatan

Tingkat peningkatan performa aplikasi oleh Enormoustext bervariasi tergantung pada platform dan cara aplikasi dijalankan.

Untuk informasi tentang istilah umum terkait Enormoustext, lihat Lampiran: Glosarium.

Batasan

Gambar Alibaba Cloud Linux yang mencakup versi kernel berikut mendukung Enormoustext:

  • Alibaba Cloud Linux 2: kernel 4.19.91-25 atau yang lebih baru

  • Alibaba Cloud Linux 3: kernel 5.10.112-11 atau yang lebih baru

Catatan

Anda dapat menjalankan perintah uname -r untuk memeriksa versi kernel yang digunakan dalam gambar.

Penggunaan

Aktifkan fitur Enormoustext

Secara default, fitur Enormoustext dinonaktifkan. Anda dapat menggunakan antarmuka sysfs untuk mengaktifkan fitur tersebut. Berikut adalah metode yang dapat digunakan:

  • Metode 1: Aktifkan Halaman Biner dan Halaman Pustaka Dinamis.

    sudo sh -c 'echo 1 > /sys/kernel/mm/transparent_enormouspage/enormoustext_enabled'
  • Metode 2: Aktifkan Halaman Eksekusi Anonim.

    sudo sh -c 'echo 2 > /sys/kernel/mm/transparent_enormouspage/enormoustext_enabled'
  • Metode 3: Aktifkan Halaman Biner, Halaman Pustaka Dinamis, dan Halaman Eksekusi Anonim.

    sudo sh -c 'echo 3 > /sys/kernel/mm/transparent_enormouspage/enormoustext_enabled'
Catatan

Fitur Enormoustext bersifat asinkron. Halaman memori tidak langsung digabungkan menjadi halaman besar setelah fitur diaktifkan.

Periksa apakah fitur Enormoustext diaktifkan

Jalankan perintah berikut untuk memeriksa bidang FilePmdMapped di /proc/<pid>/smaps dan tentukan apakah fitur Enormoustext diaktifkan. Bidang FilePmdMapped menunjukkan ukuran halaman besar yang digunakan oleh suatu proses. Unit: KB.

sudo cat /proc/<pid>/smaps | grep FilePmdMapped | awk '{sum+=$2}END{print"Sum= ",sum}'
Catatan

Ganti <pid> dengan ID proses aktual. Anda dapat menjalankan perintah pidof sshd untuk mendapatkan ID proses.

Nonaktifkan fitur Enormoustext

Jalankan perintah berikut untuk menonaktifkan fitur Enormoustext menggunakan antarmuka sysfs:

sudo sh -c 'echo 0 > /sys/kernel/mm/transparent_enormouspage/enormoustext_enabled'
Catatan
  • Fitur Enormoustext bersifat asinkron. Halaman besar tidak langsung dibagi setelah fitur dinonaktifkan.

  • Jika segmen kode telah digabungkan ke dalam halaman besar, cache halaman besar tetap ada meskipun fitur Enormoustext dinonaktifkan.

Anda dapat mengatur parameter enormoustext ke 0, 1, 2, atau 3 untuk mengonfigurasi status fitur Enormoustext dalam opsi boot sistem. Konfigurasikan opsi boot sistem sesuai dengan versi GRand Unified Bootloader (GRUB) dan gambar Anda.

Setelah fitur Enormoustext dinonaktifkan, Anda dapat menggunakan salah satu metode berikut untuk membersihkan halaman besar yang telah digunakan:

  • Metode 1: Bersihkan cache halaman sistem secara keseluruhan.

    sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
  • Metode 2: Bersihkan cache halaman spesifik file.

    sudo vmtouch -e /<path>/target
    Catatan
    • Virtual Memory Toucher (vmtouch) adalah alat yang digunakan untuk memeriksa apakah file dimuat ke dalam memori, mengunci file di memori, atau melepas file dari memori. Jika vmtouch belum diinstal, jalankan perintah sudo yum install vmtouch untuk menginstal vmtouch.

    • Ganti <path> dengan direktori aktual file aplikasi Anda.

  • Metode 3: Bersihkan halaman besar residu.

    sudo sh -c 'echo 1 > /sys/kernel/debug/split_enormous_pages'

Manfaat Performa

Manfaat performa yang diberikan oleh Enormoustext bervariasi berdasarkan modul Translation Lookaside Buffer (TLB) pada platform yang berbeda. Enormoustext cocok untuk skenario termasuk database (seperti MySQL dan PostgreSQL) dan aplikasi Java. Enormoustext membantu meningkatkan performa aplikasi sebesar 5% hingga 8% pada mesin fisik dan mencapai peningkatan performa yang lebih tinggi untuk aplikasi pada mesin virtual. Dalam contoh berikut, MySQL digunakan untuk menggambarkan manfaat performa yang diberikan Enormoustext pada platform Arm.

Catatan

Jika segmen kode telah digabungkan ke dalam halaman besar, cache halaman besar tetap ada meskipun fitur Enormoustext dinonaktifkan. Saat melakukan pengujian performa, kami sarankan Anda menjalankan perintah echo 3 > /proc/sys/vm/drop_caches untuk membersihkan cache halaman sistem secara keseluruhan guna mendapatkan hasil pengujian yang akurat.

Anggaplah bahwa instance uji memiliki 32 vCPU, dengan 1, 8, 16, dan 32 koneksi MySQL konkuren dibuat ke instance tersebut, dan koneksi MySQL 8, 16, dan 32 mendorong pemanfaatan CPU ke 25%, 50%, dan 100%. Gambar berikut menunjukkan perbandingan transaksi per detik (TPS) antara halaman besar 2MB dan halaman standar 4KB.TPS数据

Halaman besar selalu lebih unggul daripada halaman standar, seperti yang ditunjukkan pada gambar di atas.

  • Ketika hanya satu koneksi MySQL dibuat, faktor eksternal memiliki dampak yang tidak signifikan, dan halaman besar lebih unggul sekitar 6,9% daripada halaman standar.

  • Ketika 8 atau 16 koneksi MySQL konkuren dibuat, persaingan CPU dihilangkan dan halaman besar lebih unggul lebih dari 6,5% daripada halaman standar.

  • Ketika 32 koneksi MySQL konkuren dibuat, aplikasi lain mungkin bersaing untuk sumber daya CPU, dan laju TPS lebih rendah daripada yang diperoleh dalam skenario pengujian sebelumnya. Halaman besar lebih stabil daripada halaman standar dan lebih unggul sekitar 11% daripada halaman standar.

iTLB数据Gambar-gambar di atas menunjukkan data iTLB dari halaman besar dan halaman 4KB. Gambar di sebelah kiri menunjukkan laju kegagalan iTLB, dan gambar di sebelah kanan menunjukkan jumlah kegagalan iTLB per seribu instruksi (MPKI). Setelah MySQL menggunakan halaman besar, situasi berikut terjadi:

  • Jumlah kegagalan iTLB turun sekitar sepuluh kali lipat, dan laju kegagalan iTLB berkurang dari sekitar 0,09% menjadi sekitar 0,08%.

  • Laju iTLB MPKI berkurang sekitar enam kali lipat.

PostgreSQL juga dapat menggunakan halaman besar untuk mendapatkan peningkatan performa sebesar 7%.

Pembobotan

Pembobotan adalah optimasi dari fitur Enormoustext. Pembobotan digunakan untuk menyelesaikan masalah berikut: Efek optimal tidak tercapai karena beberapa segmen kode tidak menggunakan halaman besar setelah aplikasi dimuat. Segmen kode ini merupakan hotspot. Fitur pembobotan hanya dapat diaktifkan ketika fitur Enormoustext diaktifkan. Misalnya, jika halaman besar tidak dapat digunakan karena segmen teks di akhir file biner lebih kecil dari 2 MB dan ukuran segmen teks melebihi nilai parameter enormoustext_pad_threshold, Anda dapat menambahkan padding ke segmen teks hingga 2 MB untuk memungkinkan penggunaan halaman besar.

  • Aktifkan pembobotan

    Jalankan perintah berikut untuk mengaktifkan pembobotan menggunakan antarmuka sysfs:

    sudo sh -c 'echo [0~2097151] >  /sys/kernel/mm/transparent_enormouspage/enormoustext_pad_threshold'
    Catatan

    Kami sarankan Anda mengatur enormoustext_pad_threshold ke 4096 dalam perintah sudo sh -c 'echo 4096 > /sys/kernel/mm/transparent_enormouspage/enormoustext_pad_threshold'.

    Dalam kebanyakan kasus, segmen kode aplikasi dipetakan ke alamat yang selaras dengan 2MB, dan fitur Enormoustext membantu mengoptimalkan penyelarasan alamat. Namun, konten yang mengikuti rw-p atau r--p mungkin tidak selaras dengan 2MB. Akibatnya, konten mungkin tidak dipad sesuai harapan berdasarkan nilai enormoustext_pad_threshold, dan beberapa segmen kode menggunakan halaman 4KB. Saat menggunakan fitur pembobotan, kami sarankan Anda menyelaraskan segmen kode dan segmen data ke 2MB. Untuk menyelaraskan kode atau segmen data ke 2MB, modifikasi file IDS default dan tambahkan . = ALIGN(0x200000); sebelum segmen kode atau data.

  • Nonaktifkan pembobotan

    Jalankan perintah berikut untuk menonaktifkan pembobotan menggunakan antarmuka sysfs:

    sudo sh -c 'echo 0 >  /sys/kernel/mm/transparent_enormouspage/enormoustext_pad_threshold'

Lampiran: Glosarium

Tabel berikut menjelaskan istilah yang umum digunakan dalam fitur Enormoustext.

Istilah

Deskripsi

halaman besar

Halaman besar juga disebut memori halaman besar. Memori dikelola dan dialokasikan dalam blok yang dikenal sebagai halaman. Halaman besar adalah halaman memori yang lebih besar dari 4 KB dalam ukuran, dan dapat membantu meningkatkan pemanfaatan TLB perangkat keras dan performa.

Transparent Enormous Pages

Transparent Enormous Pages (THP) menyembunyikan kompleksitas penggunaan halaman besar dari proses Anda. THP memulai utas kernel di latar belakang untuk memindai area memori virtual (VMA) dari setiap proses secara asinkron dan mengonsolidasikan VMA menjadi halaman 2MB.

Teksbesar

Sebuah fitur yang bekerja mirip dengan THP untuk mengonsolidasikan hanya kode ke dalam halaman besar untuk meningkatkan performa secara signifikan.

iTLB miss

iTLB miss terjadi ketika tidak ada entri yang cocok ditemukan di iTLB. Jika laju iTLB miss tinggi, CPU tidak dapat berjalan secara efisien.

Pemanfaatan iTLB

Pemanfaatan iTLB. Performa sistem meningkat dengan pemanfaatan iTLB.

iTLB MPKI

Jumlah iTLB miss per seribu instruksi (MPKI). Laju iTLB MPKI yang lebih rendah menunjukkan performa sistem yang lebih tinggi.

Referensi

Alibaba Cloud Linux juga dapat menggunakan THP untuk meningkatkan efisiensi akses memori. THP dapat mengonsolidasikan halaman kecil (biasanya halaman 4KB) menjadi halaman besar (biasanya halaman yang berukuran 2 MB atau lebih besar) untuk mengurangi jumlah entri tabel halaman (PTE) dan jumlah akses memori. Dengan cara ini, tekanan pada cache TLB dikurangi dan performa aplikasi ditingkatkan. Untuk informasi lebih lanjut, lihat Bagaimana cara menggunakan THP untuk menyetel performa pada Alibaba Cloud Linux?