Dalam arsitektur akses memori non-uniform (NUMA), terutama pada Instance ECS Elastic Compute Service (ECS) berbasis Arm, setiap node NUMA memiliki memori lokal. Ketika program atau proses di satu node NUMA perlu mengakses potongan kode pada node NUMA lainnya, akses lintas-node menyebabkan latensi tambahan dan overhead performa. Untuk menangani masalah ini, Anda dapat menggunakan fitur kode duptext untuk menyalin potongan kode dari node remote ke node lokal.
Informasi latar belakang
Batasan
Hanya tipe instance dan gambar berikut yang mendukung fitur kode duptext:
Tipe instance: Keluarga Instance ECS Bare Metal Instance. Untuk informasi lebih lanjut, lihat Ikhtisar.
Gambar: Gambar Alibaba Cloud Linux 3 yang menjalankan versi kernel
5.10.112-11atau lebih baru.CatatanUntuk menanyakan versi kernel suatu gambar, jalankan perintah
uname -r.
Aktifkan atau nonaktifkan fitur kode duptext
Fitur kode duptext dapat dikontrol secara global atau menggunakan memcg. Kernel hanya dapat menggunakan fitur kode duptext untuk proses jika saklar global dan saklar memcg dihidupkan untuk mengaktifkan fitur kode duptext.
Saklar | Deskripsi |
/sys/kernel/mm/duptext/enabled | Saklar global digunakan untuk mengontrol apakah fitur kode duptext diaktifkan untuk sistem kernel saat ini. Nilai valid: 0 dan 1. Nilai default: 0.
|
/sys/fs/cgroup/memory/<nama direktori memcg>/memory.allow_duptext | Ketika saklar global dihidupkan, saklar memcg dapat digunakan untuk mengontrol apakah fitur kode duptext diaktifkan untuk proses di setiap memcg. Nilai valid: 0 dan 1. Nilai default: 0.
|
Selain menggunakan saklar di atas, Anda dapat menggunakan metode berikut untuk menanyakan statistik subhalaman.
Tanyakan bidang
nr_duptextdi file/proc/vmstatatau bidangDupTextdi file/proc/meminfountuk melihat statistik subhalaman pada suatu instance.nr_duptextmenunjukkan jumlah subhalaman yang ditandai sebagai duptext di kernel.DupTextmenunjukkan jumlah memori yang menyimpan data duptext, dalam KB. Ukuran halaman memori tipikal adalah 4 KB.
Tanyakan file
/proc/pid/smapsuntuk melihat statistik subhalaman proses.
Gunakan fitur kode duptext
Dalam contoh ini, program uji bernama test.c dikompilasi dan dieksekusi pada instance ECS yang memiliki dua node NUMA.
Hubungkan ke instance ECS.
Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk terhubung ke instance Linux melalui SSH.
(Opsional) Jalankan perintah berikut untuk melihat informasi tentang node NUMA instance ECS:
numactl -HCatatanJika Anda belum menginstal alat
numactl, jalankan perintahsudo yum install numactluntuk menginstal alat tersebut.Gambar berikut menunjukkan bahwa instance memiliki dua node NUMA: node 0 dan node 1.

Jalankan perintah berikut untuk mengompilasi program uji dan menghasilkan file yang dapat dieksekusi.
Dalam contoh ini, file kode sumber test.c dikompilasi di node 1, dan node 1 menghasilkan cache halaman file test.
numactl -N 1 -m 1 gcc test.c -o testJalankan perintah berikut untuk menghidupkan saklar global untuk fitur kode duptext:
sudo sh -c 'echo 1 > /sys/kernel/mm/duptext/enabled'Jalankan perintah berikut untuk membuat direktori memcg dan mengaktifkan fitur duptext untuk memcg:
sudo mkdir /sys/fs/cgroup/memory/test sudo sh -c 'echo 1 > /sys/fs/cgroup/memory/test/memory.allow_duptext'Jalankan perintah berikut untuk menggunakan fitur kode duptext guna menghindari akses lintas-node.
Dalam contoh ini, alat cgexec dan numactl digunakan untuk menjalankan file yang dapat dieksekusi bernama test dan mengikat proses ke node 0. Dalam hal ini, salinan potongan kode terkait test dibuat di node 0. Program test dapat mengakses salinan potongan kode di node 0, tanpa akses lintas-node.
sudo cgexec -g "memory:test" numactl -N 0 -m 0 ./testCatatanJika Anda belum menginstal alat
cgexec, jalankan perintahsudo yum install -y libcgroup-toolsuntuk menginstal alat tersebut.Jalankan perintah berikut untuk melihat statistik subhalaman program test:
sudo cat /proc/$(pidof test)/smapsContoh keluaran perintah berikut menunjukkan statistik subhalaman program test. Salinan kode program test dihasilkan di node 0.
CatatanAnda juga dapat menjalankan perintah berikut untuk melihat statistik subhalaman pada instance:
cat /proc/vmstat | grep -i duptext cat /proc/meminfo | grep -i duptext
Nonaktifkan fitur kode duptext
Anda dapat menonaktifkan fitur kode duptext berdasarkan kebutuhan bisnis Anda. Ketika fitur kode duptext dinonaktifkan, kernel secara otomatis membersihkan semua subhalaman pada instance.
Hubungkan ke instance ECS.
Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk terhubung ke instance Linux melalui SSH.
Jalankan perintah berikut untuk menonaktifkan fitur kode duptext:
sudo sh -c 'echo 0 > /sys/kernel/mm/duptext/enabled'Jalankan perintah berikut untuk memverifikasi bahwa fitur kode duptext dinonaktifkan:
cat /proc/vmstat | grep -i duptext cat /proc/meminfo | grep -i duptextContoh keluaran perintah berikut menunjukkan bahwa semua subhalaman pada instance dibersihkan, yang menunjukkan bahwa fitur kode duptext dinonaktifkan.
