Multithreading simultan (SMT), yang dikenal dalam prosesor Intel sebagai Hyper-Threading Technology (HTT), memungkinkan inti CPU berjalan sebagai dua hardware multithread. Di Compute Engine, setiap CPU virtual (vCPU) diimplementasikan sebagai satu hardware multithread, dan dua vCPU berbagi setiap inti CPU fisik secara default.
Compute Engine memungkinkan Anda menetapkan nilai jumlah thread per inti secara manual. Misalnya, beban kerja dengan masalah berikut mungkin lebih menguntungkan jika SMT dinonaktifkan (menetapkan jumlah thread per inti ke 1):
Performa: Mengurangi jumlah thread yang dapat berjalan pada setiap inti CPU fisik dapat membantu meningkatkan performa beban kerja yang terikat komputasi. Hal ini bermanfaat untuk aplikasi dan beban kerja komputasi berperforma tinggi (HPC) yang sangat paralel dan melakukan banyak penghitungan floating point.
Keamanan: Jika VM menjalankan kode tidak tepercaya, mengurangi jumlah thread per inti dapat membantu mengurangi kerentanan CPU seperti Pengambilan Sampling Data Mikroarsitektur.
Pemberian lisensi: Beberapa perjanjian lisensi memiliki persyaratan terkait jumlah vCPU yang Anda gunakan. Mengurangi jumlah thread per inti dari 2 menjadi 1 dapat mengurangi biaya lisensi Anda. Untuk mengetahui informasi selengkapnya, lihat perjanjian lisensi Anda.
Untuk banyak tugas komputasi umum atau tugas yang membutuhkan banyak I/O, SMT dapat meningkatkan throughput aplikasi secara signifikan. Untuk tugas yang terikat komputasi dengan kedua inti virtual terikat komputasi, SMT dapat menghambat performa aplikasi secara keseluruhan dan dapat menambah varians yang tidak dapat diprediksi ke tugas. Dalam hal ini, menonaktifkan SMT memungkinkan performa yang lebih dapat diprediksi dan dapat mengurangi waktu tugas.
Batasan
Anda tidak dapat menetapkan jumlah thread per inti pada VM untuk jenis mesin berikut:
- Semua jenis mesin C4A
- Semua jenis mesin H4D
- Semua jenis mesin H3
- Semua jenis mesin N4A
- Semua jenis mesin Tau T2A
- Semua jenis mesin Tau T2D
- Jenis mesin yang memiliki kurang dari 2 vCPU, misalnya,
n1-standard-1 - Jenis mesin dengan
inti bersama, seperti
e2-small.
Untuk instance bare metal, jumlah hyperthread yang dapat Anda akses setara dengan jumlah hyperthread di mesin.
Masalah umum
Di Google Cloud konsol, jika jumlah thread per inti ditetapkan ke 1, metrik penggunaan CPU akan ditingkatkan skalanya hingga maksimum 50%. Ini adalah error visualisasi yang diketahui. Penggunaan CPU sebenarnya dua kali lipat dari yang ditampilkan.
Harga
Anda dikenai biaya untuk jumlah vCPU yang ditentukan oleh jenis mesin VM, bukan jumlah thread yang berjalan pada setiap inti. Misalnya, jenis mesin n2-standard-8 dapat menjalankan hingga 8 vCPU, yaitu 2 vCPU untuk setiap 4 inti CPU fisik. Jika, dengan jenis mesin n2-standard-8, Anda memutuskan untuk hanya menjalankan 1 thread per inti, yaitu 4 vCPU, Anda tetap akan dikenai biaya untuk 8 vCPU. Untuk mengetahui informasi lebih lanjut mengenai cara penagihan Anda untuk VM, lihat Harga instance VM.
Mengubah jumlah thread per inti selama pembuatan VM
Untuk mengubah jumlah thread per inti selama pembuatan VM, gunakan Google Cloud konsol, gcloud CLI, atau Compute Engine API.
Izin yang diperlukan untuk langkah ini
Untuk melakukan tugas ini, Anda harus memiliki izin berikut:
- Semua izin yang diperlukan untuk membuat VM baru
Konsol
Untuk mengubah jumlah thread per inti selama pembuatan VM, gunakan prosedur konsol berikut: Google Cloud
Di Google Cloud konsol, buka halaman Create an instance.
Di kolom Nama, masukkan nama untuk VM.
Pilih Region dan Zone untuk VM.
Pilih kelompok mesin dan jenis mesin yang didukung.
Klik Advanced configurations untuk meluaskan bagian tersebut.
Di vCPUs to core ratio, pilih jumlah thread per inti.
Selesaikan konfigurasi setelan lainnya untuk VM, lalu klik Create.
gcloud
Untuk mengubah jumlah thread per inti selama pembuatan VM, gunakan
perintah gcloud compute instances create.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- VM_NAME: nama untuk VM baru.
- ZONE: zona untuk VM baru.
- MACHINE_TYPE: jenis mesin untuk VM baru. Jenis mesin ini harus berupa mesin dengan 2 vCPU atau lebih.
- THREADS_PER_CORE: jumlah thread per inti fisik. Tetapkan ke
2atau1.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud compute instances create VM_NAME \ --zone=ZONE \ --machine-type=MACHINE_TYPE \ --threads-per-core=THREADS_PER_CORE
Windows (PowerShell)
gcloud compute instances create VM_NAME ` --zone=ZONE ` --machine-type=MACHINE_TYPE ` --threads-per-core=THREADS_PER_CORE
Windows (cmd.exe)
gcloud compute instances create VM_NAME ^ --zone=ZONE ^ --machine-type=MACHINE_TYPE ^ --threads-per-core=THREADS_PER_CORE
Anda akan melihat respons seperti berikut:
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME]. NAME: VM_NAME ZONE: ZONE MACHINE_TYPE: MACHINE_TYPE PREEMPTIBLE: INTERNAL_IP: EXTERNAL_IP EXTERNAL_IP: INTERNAL_IP STATUS: RUNNING
REST
Untuk mengubah jumlah thread per inti selama pembuatan VM, gunakan metode
instances.insert dengan kolom
threadsPerCore.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: ID project.
- ZONE: zona untuk VM baru.
- MACHINE_TYPE: jenis mesin untuk VM baru. Jenis mesin ini harus berupa mesin dengan 2 vCPU atau lebih.
- VM_NAME: nama untuk VM baru.
- THREADS_PER_CORE: jumlah thread per inti fisik. Tetapkan ke
2atau1.
Metode HTTP dan URL:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
Meminta isi JSON:
{
"machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE",
"name": "VM_NAME",
"advancedMachineFeatures": {
"threadsPerCore": THREADS_PER_CORE
},
"disks": [
{
"type": "PERSISTENT",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-11"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/default"
}
]
}
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{
"kind": "compute#operation",
"id": "7334609091572405391",
"name": "operation-1663806045894-5e939085735d8-7499db32-c12fcc03",
"zone": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE",
"operationType": "insert",
"targetLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
"targetId": "1226375378512516273",
"status": "RUNNING",
"user": "EMAIL_ADDRESS",
"progress": 0,
"insertTime": "2022-09-21T17:20:48.751-07:00",
"startTime": "2022-09-21T17:20:48.751-07:00",
"selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations/operation-1663806045894-5e939085735d8-7499db32-c12fcc03"
}
Mengubah jumlah thread per inti pada VM
Untuk mengubah jumlah thread per inti di VM, gunakan Google Cloud konsol, gcloud CLI, atau Compute Engine API.
Izin yang diperlukan untuk langkah ini
Untuk melakukan tugas ini, Anda harus memiliki izin berikut:
-
compute.instances.getpada project -
compute.instances.updatepada project
Konsol
Untuk mengubah jumlah thread per inti pada VM yang ada, gunakan berikut Google Cloud prosedur konsol:
Di Google Cloud konsol, buka halaman VM instances.
Klik Nama VM.
Klik Stop untuk menghentikan VM. Jika tidak ada opsi Stop, klik More actions > Stop.
Klik Edit.
Klik Advanced configurations untuk meluaskan bagian tersebut.
Di menu drop-down vCPUs to core ratio, pilih jumlah thread per inti.
Klik Simpan.
gcloud
Untuk mengubah jumlah thread per inti pada VM yang ada, lakukan hal berikut:
Ekspor properti VM menggunakan perintah
gcloud compute instances exportberikut:gcloud compute instances export VM_NAME \ --destination=YAML_FILE_PATH \ --zone=ZONEGanti kode berikut:
VM_NAME: nama VM yang propertinya akan dieksporYAML_FILE_PATH: jalur dan nama file YAML tempat menyimpan data konfigurasi yang dieksporZONE: zona yang berisi VM
Di file konfigurasi VM yang disimpan di FILE_PATH, perbarui nilai untuk
threadsPerCore. Jika nilai tidak ada dalam file, tambahkan hal berikut:advancedMachineFeatures: threadsPerCore: THREADS_PER_CORE
Update VM dengan jumlah thread per inti yang baru menggunakan perintah
gcloud compute instances update-from-fileberikut:gcloud compute instances update-from-file VM_NAME \ --source=FILE_PATH \ --most-disruptive-allowed-action=RESTART \ --zone=ZONEGanti kode berikut:
VM_NAME: nama VM yang diupdateFILE_PATH: jalur ke file konfigurasi VM yang diupdateZONE: zona yang berisi VM yang diupdate
REST
Untuk mengubah jumlah thread per inti pada VM yang ada, gunakan
metode instances.update
berikut:
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART
{
...
"advanced_machine_features": {
...
"threadsPerCore": "THREADS_PER_CORE"
},
...
}
Ganti kode berikut:
PROJECT_ID: ID projectZONE: zona yang berisi VM.VM_NAME: nama VM yang propertinya akan dieksporTHREADS_PER_CORE: jumlah thread per inti
Melihat jumlah thread per inti
Untuk melihat jumlah thread per inti, gunakan prosedur yang sesuai dengan OS yang berjalan di VM.
Linux
Untuk melihat jumlah thread per inti di VM berbasis Linux, gunakan prosedur berikut:
Jalankan perintah
lscpu.lscpu
Tinjau output untuk melihat jumlah thread per inti.
Dalam contoh output berikut dari mesin
n2-standard-16, nilai untuk jumlah thread per inti adalah1seperti yang ditunjukkan dalam barisThread(s) per core.... CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 1 Core(s) per socket: 8 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 85 Model name: Intel(R) Xeon(R) CPU @ 2.80GHz ...
Windows
Untuk melihat jumlah thread per inti di VM berbasis Windows, gunakan prosedur berikut:
Luncurkan Powershell.
Jalankan perintah berikut.
Get-WmiObject -Class Win32_processor | Select-Object NumberOfCores, @{Name="Thread(s) per core";Expression={$_.NumberOfLogicalProcessors/$_.NumberOfCores}}Tinjau output untuk melihat jumlah thread per inti.
Dalam contoh output berikut dari mesin
n2-standard-16, nilai untuk jumlah thread per inti adalah1seperti yang ditunjukkan dalam kolomThread(s) per core.NumberOfCores Thread(s) per core ------------- ------------------ 8 1
Langkah berikutnya
- Pelajari tentang sistem operasi yang dapat Anda jalankan di VM Compute Engine.