CPU Pinning di Proxmox VE

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.

image host

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
      2
    

    Output 2 berarti server menyediakan dua pilihan core, yaitu nomor 0 dan 1.

  • Cari tahu PID dari VM.
      root@pve1:~# cat /var/run/qemu-server/102.pid 
      2601246
    

    VM 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 taskset lagi untuk cek status pinning-nya.
      root@pve1:~# taskset -pc 2601246
      pid 2601246's current affinity list: 0
    

    Jika 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.

By Zaidan

Leave a Reply

Your email address will not be published. Required fields are marked *