Mengonfigurasi multi-threading simultan (SMT).


Halaman ini menunjukkan cara mengonfigurasi multi-threading simultan di cluster Google Kubernetes Engine (GKE).

Ringkasan

Node GKE adalah instance virtual machine (VM) Compute Engine yang dibuat GKE untuk Anda. Pada VM ini, biasanya simultaneous multi-threading (SMT) diaktifkan secara default. SMT adalah kemampuan untuk menjalankan beberapa thread independen pada satu inti CPU fisik. Dengan SMT diaktifkan, satu inti fisik dapat menjalankan dua CPU virtual (vCPU) sebagai thread independen yang terpisah. Misalnya, node GKE n2-standard-32 ternyata menjalankan 32 vCPU pada 16 inti CPU fisik.

Dengan diperkenalkannya konfigurasi SMT pada node GKE, Anda kini dapat mengonfigurasi SMT sehingga jumlah vCPU yang efektif sama dengan jumlah inti fisik, yang berarti bahwa node GKE Anda dapat menggunakan seluruh inti fisik per vCPU.

Manfaat

Mengonfigurasi SMT di GKE memberikan manfaat berikut.

Performa meningkat

Beberapa workload Komputasi Berperforma Tinggi (HPC) mungkin mengalami peningkatan performa dengan menonaktifkan SMT. Biasanya, untuk banyak tugas komputasi umum atau tugas yang memerlukan banyak I/O, SMT dapat meningkatkan throughput aplikasi secara signifikan. Sebaliknya, untuk tugas yang terikat dengan komputasi yang mana kedua inti virtual terikat oleh komputasi, SMT dapat menghambat performa aplikasi secara keseluruhan dan menambahkan varian nondeterministik ke tugas. Oleh karena itu, dengan menonaktifkan SMT, beberapa aplikasi HPC mungkin mendapatkan performa yang lebih baik dan lebih dapat diprediksi.

Mengurangi biaya lisensi

Beberapa perjanjian lisensi software memiliki model penagihan yang terikat dengan jumlah vCPU yang digunakan. Menonaktifkan SMT akan mengurangi jumlah vCPU untuk setiap inti hingga setengahnya, yang dapat mengurangi biaya pemberian lisensi Anda. Untuk informasi selengkapnya, lihat perjanjian lisensi Anda.

Lihat bagian pricing untuk memahami cara penagihan Google Cloud saat dikonfigurasi SMT.

Batasan

  • Jenis mesin: SMT tidak dapat dikonfigurasi pada jenis mesin yang memiliki kurang dari 2 vCPU (misalnya n1-standard-1) atau pada jenis mesin Tau T2D.
  • Penyediaan otomatis node: Kemampuan konfigurasi SMT tidak didukung untuk cluster yang mengaktifkan penyediaan otomatis node.
  • Autoscaler cluster: Penskalaan dari node nol dengan konfigurasi SMT hanya didukung di autoscaler cluster untuk cluster yang menjalankan GKE versi 1.21 atau yang lebih baru.
  • GKE Sandbox: Anda dapat mengonfigurasi setelan SMT di node GKE Sandbox di cluster GKE Standar yang menjalankan versi 1.24.2-gke.300 dan yang lebih baru menggunakan flag --threads-per-core, dan di versi sebelumnya menggunakan DaemonSet yang berdiri sendiri. Untuk mendapatkan petunjuk, lihat GKE Sandbox. Karena multithreading dinonaktifkan secara default di GKE Sandbox sebelum versi 1.24.2-gke.300, mengonfigurasi SMT menggunakan threads-per-core tidak didukung. Jika Anda menggunakan GKE Sandbox dan ingin mengaktifkan SMT, baca bagian SMT mungkin dinonaktifkan.
  • Mode cluster: Kemampuan konfigurasi SMT tidak didukung di cluster Autopilot GKE.

Harga

SMT untuk GKE ditagih berdasarkan harga Compute Engine yang mendasarinya untuk SMT. Anda dikenai biaya untuk jumlah vCPU yang ditentukan oleh jenis mesin VM, bukan jumlah thread yang berjalan pada setiap inti. Meskipun SMT dikonfigurasi, Anda akan terus ditagih sesuai jumlah default vCPU yang ditentukan oleh jenis mesin VM. Untuk mengetahui informasi lebih lanjut mengenai cara penagihan Anda untuk VM, lihat Harga instance VM.

Misalnya, node GKE yang dibuat menggunakan jenis mesin n2-standard-8 berjalan dengan SMT yang diaktifkan secara default, dan dapat menjalankan hingga 8 vCPU, yaitu 2 vCPU untuk masing-masing dari empat inti CPU fisik. Jika Anda mengonfigurasi SMT agar hanya menggunakan satu thread per inti (secara efektif 4 vCPU), Anda tetap dikenai biaya untuk 8 vCPU.

Mengonfigurasi SMT

Anda dapat mengonfigurasi SMT pada cluster atau node pool baru dengan menentukan jumlah thread per inti.

Tabel berikut menunjukkan kemungkinan nilai untuk thread per inti dan perilaku SMT yang sesuai untuk node:

Thread per core Perilaku SMT
null (tidak ditentukan) Default VM Compute Engine
0 Tidak valid
1 SMT nonaktif
2 SMT aktif
> 2 Tidak valid

Mengonfigurasi SMT pada cluster baru

Anda dapat mengonfigurasi SMT pada cluster baru menggunakan gcloud CLI atau Konsol Google Cloud.

gcloud

Untuk mengonfigurasi SMT, jalankan perintah berikut:

gcloud container clusters create CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --threads-per-core=THREADS_PER_CORE

Ganti kode berikut:

  • CLUSTER_NAME: nama untuk cluster baru.
  • MACHINE_TYPE: jenis mesin yang akan digunakan untuk node GKE Anda. Jenis mesin ini harus berupa mesin dengan 2 vCPU atau lebih.
  • THREADS_PER_CORE: jumlah thread per inti fisik. Tabel sebelumnya menampilkan nilai yang dapat Anda tentukan.

Untuk mengetahui daftar lengkap opsi, lihat dokumentasi gcloud container clusters create.

Konsol

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Klik Create.

  3. Pada dialog Create cluster, di samping GKE Standard, klik Configure.

  4. Di menu navigasi, di bagian node pool, klik nama node pool, lalu klik Node.

  5. Di bagian Machine Configuration, pilih Machine type yang didukung, seperti e2-standard-2.

  6. Klik CPU Platform and GPU.

  7. Dari menu drop-down vCPU ke rasio inti, pilih salah satu opsi berikut:

    • 1 vCPU per inti: nonaktifkan SMT.
    • 2 vCPU per inti: tetap aktifkan SMT.
  8. Konfigurasikan cluster dan node pool sesuai kebutuhan, lalu klik Create.

Mengonfigurasi SMT pada node pool baru

Anda dapat mengonfigurasi SMT pada node pool baru menggunakan gcloud CLI atau Konsol Google Cloud.

gcloud

Untuk mengonfigurasi SMT, jalankan perintah berikut:

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --threads-per-core=THREADS_PER_CORE

Ganti kode berikut:

  • POOL_NAME: nama untuk node pool baru.
  • CLUSTER_NAME: nama cluster yang ada.
  • MACHINE_TYPE: jenis mesin yang akan digunakan untuk node GKE Anda. Jenis mesin ini harus berupa mesin dengan 2 vCPU atau lebih.
  • THREADS_PER_CORE: jumlah thread per inti fisik. Tabel sebelumnya menampilkan nilai yang dapat Anda tentukan.

Untuk mengetahui daftar lengkap opsi, lihat dokumentasi gcloud container clusters create.

Konsol

  1. Buka halaman Google Kubernetes Engine di konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Klik nama cluster yang ingin diubah.

  3. Klik Add node pool.

  4. Di menu navigasi, klik Node.

  5. Di bagian Machine Configuration, pilih Machine family dan Machine type yang mendukung SMT, seperti n2-standard -2.

  6. Klik CPU Platform and GPU.

  7. Dari menu drop-down vCPU ke rasio inti, pilih salah satu opsi berikut:

    • 1 vCPU per inti: nonaktifkan SMT.
    • 2 vCPU per inti: tetap aktifkan SMT.
  8. Konfigurasikan node pool sesuai kebutuhan, lalu klik Create.

Memverifikasi konfigurasi SMT

Linux

Untuk memverifikasi konfigurasi SMT pada node Linux, lakukan langkah-langkah berikut:

  1. SSH ke node:

    gcloud compute ssh NODE_NAME
    

    Ganti NODE_NAME dengan nama node Anda.

  2. Periksa jumlah vCPU:

    cat /proc/cpuinfo | grep processor | wc -l
    

    Outputnya mirip dengan hal berikut ini:

    16
    

    Jika Anda menetapkan jumlah thread per inti ke 1, output akan menampilkan setengah dari jumlah default vCPU VM Compute Engine. Misalnya, output untuk n2-standard-32 dengan SMT nonaktif harus 16, bukan nilai default 32.

Windows

Untuk memverifikasi konfigurasi SMT pada node Windows, lakukan langkah-langkah berikut:

  1. Tetapkan nama pengguna dan sandi untuk RDP ke node:

    gcloud compute reset-windows-password NODE_NAME
    

    Ganti NODE_NAME dengan nama node Anda.

  2. Buat koneksi ke EXTERNAL_IP:3389 untuk VM.

  3. Jalankan perintah PowerShell berikut:

    Get-WmiObject -Class Win32_Processor -ComputerName. | Select-Object -Property [a-z]* | Select NumberOfCores,NumberOfLogicalProcessors
    

    Jika Anda menetapkan jumlah thread per inti ke 1, nilai NumberOfCores harus sama dengan nilai NumberOfLogicalProcessors, seperti dalam contoh output berikut:

    Output (example n1-standard-2 with SMT off)
    
    NumberOfCores NumberOfLogicalProcessors
    ------------- -------------------------
                1                         1
    

Langkah selanjutnya