Secara default, Proxmox VE mengatur alokasi CPU secara dinamis dengan cara memindahkan load yang ada di VM dari core satu ke core lain (pada CPU) secara bergantian tergantung dari tingkat load dari server.
Pengaturan load secara dinamis mungkin sudah cukup untuk aplikasi umum. Namun bisa jadi ada aplikasi dengan beban tinggi dan sensitif terhadap sinkronisasi waktu, perpindahan alokasi core dapat menimbulkan latensi. Kita dapat menggunakan CPU Pinning untuk membantu mengatasi masalah ini.
Apa Itu CPU Pinning?
CPU pinning adalah cara atau metode untuk mengunci suatu VM secara permanen ke core fisik tertentu pada server PVE. Penjelasan singkatnya bisa seperti ini:
- Kondisi standar (no pinning). VM A dapat menggunakan core 1 pada menit x, lalu pindah secara otomatis ke core 7 pada menit y.
- Menggunakan pinning. VM A bisa kita kunci pada core 1 dan 2 saja. VM A tidak akan pindah ke core lainnya.
Mengapa CPU Pinning Penting?
- Memaksimalkan Fungsi Cache Prosesor. Prosesor memiliki memori internal (yang biasa disebut L1, L2, L3 cache). Apabila data dari VM terus berpindah secara dinamis, data yang ada di cache ini akan terhapus dan dapat berpengaruh pada kecepatan pemrosesan data.
- Menghindari Gangguan dari VM Lain. Kita bisa mengisolasi VM penting pada core khusus agar performanya tidak terganggu oleh VM lain yang banyak menggunakan resource CPU.
- Meminimalisir Latensi. Aplikasi yang membutuhkan respons instan akan berjalan lebih stabil tanpa interupsi akibat jeda perpindahan jalur core fisik.
Implementasi
- Cari tahu berapa jumlah core yang ada. Gunakan perintah
nproc.root@pve1:~# nproc 2Output
2berarti server menyediakan dua pilihan core, yaitu nomor0dan1. - Cari tahu PID dari VM.
root@pve1:~# cat /var/run/qemu-server/102.pid 2601246VM 102 memiliki PID=2601246.
- Pin ke core yang ingin dipilih. Misalnya kita akan kunci VM 102 agar menggunakan core 0. Kita bisa gunakan perintah berikut:
root@pve1:~# taskset -pc 0 2601246 - Validasi hasil. Jalankan perintah
tasksetlagi untuk cek status pinning-nya.root@pve1:~# taskset -pc 2601246 pid 2601246's current affinity list: 0Jika muncul
current affinity list: 0, berarti sukses dan VM sekarang terkunci di Core 0.
Tulisan kali ini sampai di sini dulu ya. Sampai jumpa. Bye.
