Fitur Transparent Enormous Pages (THP) adalah fitur umum dalam kernel Linux. THP menggabungkan halaman kecil (biasanya 4 KB) menjadi halaman besar (biasanya 2 MB atau lebih) untuk mengurangi jumlah entri tabel halaman (PTE) dan akses memori. Hal ini mengurangi tekanan pada cache translation lookaside buffer (TLB) serta meningkatkan kinerja aplikasi. Topik ini menjelaskan cara menggunakan fitur THP untuk meningkatkan kinerja sistem di Alibaba Cloud Linux.
Konfigurasi terkait THP
Pada kernel Alibaba Cloud Linux 2 versi 4.19.81-17.2 dan sebelumnya, madvise digunakan secara default untuk THP, yang menunjukkan bahwa fitur THP dibatasi. Pengaturan ini berbeda dari sistem operasi utama lainnya seperti Red Hat Enterprise Linux 7, CentOS 7, dan Amazon Linux 2. Untuk memastikan kompatibilitas dengan skenario default dari sistem operasi utama, mulai dari kernel Alibaba Cloud Linux 2 versi 4.19.91-18, always digunakan secara default untuk THP, yang menunjukkan bahwa fitur THP diaktifkan secara global di sistem.
Konfigurasi global
Dalam kernel Alibaba Cloud Linux, direktori file konfigurasi THP adalah /sys/kernel/mm/transparent_enormouspage/enabled. Anda dapat menggunakan salah satu opsi berikut:
alwaysTHP diaktifkan secara global.
neverTHP dinonaktifkan secara global.
madviseTHP hanya diaktifkan di area memori yang dipanggil oleh system call
madvise()dan ditandai olehMADV_HUGEPAGE.CatatanKetika sebuah aplikasi ditandai oleh
MADV_HUGEPAGE, kernel mengetahui bahwa aplikasi tersebut memerlukan halaman besar transparan untuk alokasi memori.
Konfigurasi defragmentasi
Selain konfigurasi global, sistem menyediakan konfigurasi defragmentasi terkait THP berikut ini.
Defragmentasi THP: Defragmentasi THP menggabungkan halaman kecil di sistem menjadi halaman besar transparan. Ini mengurangi fragmentasi memori dan meningkatkan kinerja sistem.
Defragmentasi kenormouspaged: kenormouspaged adalah thread kernel yang digunakan untuk manajemen dan defragmentasi halaman besar transparan. Ini mengurangi fragmentasi memori dan meningkatkan kinerja sistem. kenormouspaged memantau halaman besar transparan di sistem dan mencoba menggabungkan halaman besar transparan yang tersebar menjadi halaman yang lebih besar, meningkatkan pemanfaatan memori dan kinerja.
Defragmentasi Kenormouspaged mengelola dan mendefragmentasi halaman besar transparan yang ada. Defragmentasi THP mencoba menggabungkan halaman kecil yang tersebar menjadi halaman yang lebih besar. Kedua konfigurasi tersebut mengurangi fragmentasi memori dan meningkatkan pemanfaatan memori serta kinerja dengan menggabungkan halaman. Lihat deskripsi berikut:
Defragmentasi THP
Ketika terjadi page fault, fitur ini mengontrol penggunaan memori dengan melakukan reclaim langsung, reclaim latar belakang, kompaksi langsung, dan operasi kompaksi latar belakang. Direktori file konfigurasi untuk mengaktifkan atau menonaktifkan fitur ini adalah /sys/kernel/mm/transparent_enormouspage/defrag. Anda dapat menggunakan salah satu opsi berikut:
alwaysKetika sistem tidak mampu mengalokasikan halaman besar transparan, alokasi memori ditangguhkan dan selalu menunggu sistem melakukan reclaim langsung dan kompaksi langsung. Jika sistem memiliki cukup memori bebas yang berdekatan setelah reclaim langsung dan kompaksi langsung selesai, sistem melanjutkan alokasi halaman besar transparan.
deferKetika sistem tidak mampu mengalokasikan halaman besar transparan, sistem mengalokasikan halaman biasa. Ukuran halaman adalah 4 KB. Sementara itu, sistem memulai daemon kernel kswapd untuk melakukan reclaim latar belakang, dan memulai daemon kernel kcompactd untuk melakukan kompaksi latar belakang. Jika sistem memiliki cukup memori bebas yang berdekatan setelah operasi ini berjalan selama periode waktu tertentu, daemon kernel kenormouspaged menggabungkan halaman biasa yang dialokasikan sebelumnya (berukuran 4 KB) menjadi halaman besar transparan (berukuran 2 MB).
madviseDi area memori yang dipanggil oleh system call
madvise()dan ditandai olehMADV_HUGEPAGE, perilaku alokasi memori sama dengan opsialways. Di area memori lainnya, ketika terjadi page fault, sistem mengalokasikan halaman biasa sebagai gantinya. Ukuran halaman adalah 4 KB.CatatanPada kernel Alibaba Cloud Linux 2 versi
4.19.81-17.2dan seterusnya, opsi default sistem adalahmadvise.defer+madviseDi area memori yang dipanggil oleh system call
madvise()dan ditandai olehMADV_HUGEPAGE, perilaku alokasi memori sama dengan opsialways. Di area memori lainnya, perilaku alokasi memori sama dengan opsidefer.never
Defragmentasi dinonaktifkan.
Defragmentasi kenormouspaged
Lihat item konfigurasi berikut untuk defragmentasi kenormouspaged:
Aktifkan atau nonaktifkan fitur
Direktori file konfigurasi untuk mengaktifkan atau menonaktifkan fitur ini adalah
/sys/kernel/mm/transparent_enormouspage/kenormouspaged/defrag. Anda dapat menggunakan salah satu opsi berikut:0Defragmentasi kenormouspaged telah dinonaktifkan.
1Ketika opsi
1digunakan, sistem memulai daemon kernel kenormouspaged secara berkala ketika sistem sedang idle dan mencoba menggabungkan halaman biasa berturut-turut (berukuran 4 KB) menjadi halaman besar transparan (berukuran 2 MB).CatatanPada kernel Alibaba Cloud Linux 2 versi
4.19.91-18dan seterusnya, opsi default sistem adalah1.Operasi ini mengunci direktori memori, dan daemon kernel kenormouspaged mungkin mulai memindai dan mengonversi halaman biasa menjadi halaman besar transparan pada waktu yang salah. Oleh karena itu, operasi ini dapat memengaruhi kinerja aplikasi.
Interval percobaan ulang
Interval percobaan ulang daemon kernel kenormouspaged. Jika alokasi THP gagal, daemon kernel kenormouspaged menunggu selama periode waktu yang ditentukan sebelum mulai mengalokasikan halaman besar transparan lagi. Ini membantu menghindari kegagalan alokasi THP berturut-turut dalam waktu singkat. Nilai default:
60000. Unit: milidetik. Nilai default setara dengan 60 detik. Direktori file konfigurasi adalah/sys/kernel/mm/transparent_enormouspage/kenormouspaged/alloc_sleep_millisecs.Interval mulai
Interval mulai daemon kernel kenormouspaged. Sistem memulai daemon kernel kenormouspaged berdasarkan interval yang ditentukan. Nilai default:
10000. Unit: milidetik. Nilai default setara dengan 10 detik. Ini menunjukkan bahwa sistem memulai daemon kernel kenormouspaged setiap 10 detik. Direktori file konfigurasi adalah/sys/kernel/mm/transparent_enormouspage/kenormouspaged/scan_sleep_millisecs.Jumlah halaman yang akan dipindai
Daemon kernel kenormouspaged memindai jumlah halaman yang ditentukan setelah dimulai setiap kali. Jumlah halaman default adalah 4096. Direktori file konfigurasi adalah
/sys/kernel/mm/transparent_enormouspage/kenormouspaged/pages_to_scan.
Rekomendasi konfigurasi THP
Dampak kinerja sistem dari penggunaan THP
THP dapat meningkatkan laju hit TLB, mengurangi jumlah PTE, dan jumlah akses memori, sehingga meningkatkan kinerja sistem. THP mencoba menyederhanakan operasi O&M tanpa memodifikasi atau mengonfigurasi aplikasi dan memberikan peningkatan kinerja yang tidak terlihat oleh pengguna. Namun, sumber daya THP terbatas. Ketika sistem mencapai batas alokasi THP, Anda perlu menggunakan mekanisme tertentu untuk memastikan bahwa sistem berjalan sesuai harapan. Dalam kasus ini, konfigurasi default mungkin tidak cocok untuk semua skenario pengguna. Konfigurasi default bahkan dapat memengaruhi kinerja sistem dalam skenario berikut:
Jika defragmentasi THP disetel ke
always, reclaim langsung atau kompaksi langsung dilakukan ketika memori tidak mencukupi, yang sama dengan perilaku untuk halaman biasa (berukuran 4 KB). Sistem menunggu kedua operasi selesai dan kemudian mengalokasikan halaman lagi. Ini memengaruhi kinerja sistem.Jika defragmentasi kenormouspaged disetel ke
1, direktori memori dikunci ketika daemon kernel kenormouspaged menggabungkan memori. Jika defragmentasi kenormouspaged dipicu selama jam sibuk bisnis Anda, kinerja aplikasi sensitif memori mungkin terpengaruh.Jika Anda mengaktifkan THP dan menonaktifkan defragmentasi THP dan defragmentasi kenormouspaged, proses alokasi memori mungkin mengonsumsi sumber daya halaman idle lebih cepat daripada halaman biasa (berukuran 4 KB). Ini mengarah pada operasi reclaim dan kompaksi memori serta degradasi kinerja sistem lebih awal.
Rekomendasi konfigurasi
Dampak THP pada kinerja sistem bervariasi di berbagai skenario. Anda perlu menyesuaikan konfigurasi berdasarkan situasi bisnis, sistem, dan aplikasi Anda. Lihat contoh berikut:
Sebelum melakukan modifikasi, cadangkan file konfigurasi atau buat snapshot disk untuk menghindari kehilangan data. Untuk informasi lebih lanjut tentang cara membuat snapshot untuk disk, lihat Buat Snapshot untuk Disk.
Jika kernel sistem Anda menyediakan sumber daya yang cukup, kami sarankan Anda menjalankan perintah berikut untuk mengaktifkan opsi eksperimen defer+madvise. Ini memungkinkan daemon kernel kswapd, daemon kernel kcompactd, dan daemon kernel kenormouspaged bekerja sama sebanyak mungkin dan mencapai keseimbangan antara manajemen memori dan kinerja yang stabil.
sudo bash -c "echo 'defer+madvise' > /sys/kernel/mm/transparent_enormouspage/defrag"Jika utilisasi CPU daemon kernel kenormouspaged mencapai atau mendekati 100%, Anda dapat meningkatkan interval mulai daemon kernel kenormouspaged, misalnya menjadi 30 detik. Lihat perintah sampel berikut:
sudo sh -c 'echo 30000 > /sys/kernel/mm/transparent_enormouspage/kenormouspaged/scan_sleep_millisecs'Atau, Anda dapat langsung menghentikan daemon kernel kenormouspaged. Lihat perintah sampel berikut:
sudo sh -c 'echo 0 > /sys/kernel/mm/transparent_enormouspage/kenormouspaged/defrag'Dalam skenario yang melibatkan sejumlah besar permintaan akses ke aplikasi database, sejumlah besar aplikasi sensitif latensi, atau sejumlah besar alokasi jangka pendek, kami sarankan Anda menonaktifkan fitur THP jika stabilitas sistem lebih penting daripada kinerja. Lihat perintah sampel berikut untuk menonaktifkan THP saat sistem sedang berjalan:
sudo sh -c 'echo "never" > /sys/kernel/mm/transparent_enormouspage/enabled'CatatanPerintah ini hanya valid saat sistem sedang berjalan. Setelah sistem di-restart, fitur THP diaktifkan. Untuk menonaktifkan fitur THP secara permanen, jalankan perintah berikut secara berurutan sebagai pengguna root untuk menambahkan parameter untuk menonaktifkan fitur THP dalam parameter startup kernel.
sudo grubby --args="transparent_enormouspage=never" --update-kernel="/boot/vmlinuz-$(uname -r)" sudo reboot
Lihat penggunaan THP
Anda dapat melihat penggunaan THP di sistem terutama di tingkat sistem atau tingkat proses.
Tingkat sistem
Pada tingkat sistem, parameter THP dan opsi konfigurasi memengaruhi semua proses di seluruh sistem. Jalankan perintah berikut untuk melihat penggunaan THP.
cat /proc/meminfo | grep AnonEnormousPagesHasil serupa dikembalikan.
AnonEnormousPages: 614400 kBCatatanJika hasil yang dikembalikan tidak nol, sejumlah halaman besar transparan digunakan di sistem.
Tingkat proses: Pada tingkat proses, Anda dapat menggunakan system call
madvise()dan flagMADV_HUGEPAGEuntuk mengontrol penggunaan THP. Ini memungkinkan aplikasi untuk mengaktifkan atau menonaktifkan fitur THP secara independen tanpa memengaruhi proses lain atau seluruh sistem. Jalankan perintah berikut untuk melihat penggunaan THP dari proses tertentu.sudo cat /proc/<PID>/smaps | grep AnonEnormousPagesCatatanGanti
<PID>dengan PID dari proses yang ingin Anda lihat.Hasil serupa dikembalikan.
AnonEnormousPages: 0 kB AnonEnormousPages: 0 kB AnonEnormousPages: 0 kB AnonEnormousPages: 0 kB AnonEnormousPages: 0 kB AnonEnormousPages: 0 kB AnonEnormousPages: 0 kB AnonEnormousPages: 0 kB AnonEnormousPages: 0 kB AnonEnormousPages: 0 kB
Referensi
Untuk informasi lebih lanjut tentang fitur dan risiko THP, lihat Dukungan Halaman Besar Transparan.
Fitur Halaman Besar bekerja mirip dengan THP untuk menggabungkan fragmen kode berturut-turut ke area memori halaman besar yang biasanya berukuran 2 MB atau lebih besar. Fitur ini membantu mengurangi miss TLB. Anda juga dapat menggunakan fitur Halaman Besar yang disediakan oleh Alibaba Cloud Linux untuk meningkatkan kinerja sistem. Untuk informasi lebih lanjut, lihat Halaman Besar.
Untuk informasi lebih lanjut tentang cara mengoptimalkan kinerja sistem di Red Hat Enterprise Linux 7 dengan menggunakan THP, lihat Mengonfigurasi Halaman Besar Transparan.