Menetapkan jumlah thread per inti


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 multithread hardware tunggal, dan dua vCPU berbagi setiap core CPU fisik dengan secara default.

Dengan Compute Engine, Anda dapat menetapkan nilai secara manual untuk dan menggunakan thread per inti. Misalnya, beban kerja dengan masalah berikut mungkin mendapat manfaat dari menonaktifkan SMT (menyetel jumlah thread per core menjadi 1):

  • Performa: Mengurangi jumlah thread yang berjalan pada setiap inti CPU fisik dapat membantu meningkatkan performa beban kerja yang sangat paralel atau yang melakukan 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 pemberian lisensi memiliki persyaratan yang terkait dengan jumlah vCPU yang Anda gunakan. Mengurangi jumlah thread per core dari 2:1 dapat mengurangi biaya lisensi Anda. Untuk informasi selengkapnya, hubungi perjanjian lisensi.

Untuk banyak tugas komputasi umum yang memerlukan banyak I/O, SMT dapat meningkatkan throughput aplikasi secara signifikan. Untuk tugas yang terikat komputasi dengan kedua core virtual terikat dengan komputasi, SMT dapat menghambat keseluruhan aplikasi kinerja dan dapat menambah variasi pekerjaan yang tidak dapat diprediksi. Dalam hal ini, mengubah di luar SMT memungkinkan performa yang lebih dapat diprediksi dan dapat mengurangi waktu pekerjaan.

Batasan

  • Anda tidak dapat menetapkan jumlah thread per core di VM untuk jenis mesin:

  • Untuk instance bare metal C3 dan X4, jumlah hyperthread yang Anda miliki akses setara dengan jumlah {i> hyperthread<i} pada komputer.

  • Di konsol Google Cloud, saat jumlah thread per core ditetapkan ke 1, metrik pemakaian CPU hanya dapat diskalakan hingga maksimum 50%. Jika jumlah thread per inti ditetapkan ke 2, metrik penggunaan CPU dapat mencapai skala hingga 100%.

Harga

Anda akan ditagih untuk jumlah vCPU yang ditentukan oleh jenis mesin VM, bukan jumlah thread yang berjalan di 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 selengkapnya tentang cara penagihan VM, lihat Instance VM harga.

Mengubah jumlah thread per inti selama pembuatan VM

Untuk mengubah jumlah thread per core selama pembuatan VM, gunakan Konsol Google Cloud, gcloud CLI, atau Compute Engine API.

Izin yang diperlukan untuk langkah ini

Untuk melakukan tugas ini, Anda harus memiliki izin berikut:

Konsol

Untuk mengubah jumlah thread per core selama pembuatan VM, gunakan perintah berikut Prosedur konsol Google Cloud:

  1. Di Konsol Google Cloud, buka halaman Buat instance.

    Buka halaman Buat instance

  2. Di kolom Nama, masukkan nama untuk VM.

  3. Pilih Region dan Zone untuk VM.

  4. Pilih Machine family dan Jenis mesin yang didukung.

  5. Klik Advanced configurations untuk meluaskan bagian tersebut.

  6. Di rasio vCPU dan inti, pilih jumlah thread per inti.

  7. Selesaikan konfigurasi setelan lain 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. Harus berupa jenis mesin dengan 2 vCPU atau lebih.
  • THREADS_PER_CORE: jumlah thread per inti fisik. Tetapkan ke 2 atau 1.

Jalankan mengikuti 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. Harus berupa jenis mesin dengan 2 vCPU atau lebih.
  • VM_NAME: nama untuk VM baru.
  • THREADS_PER_CORE: jumlah thread per inti fisik. Tetapkan ke 2 atau 1.

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 Console, gcloud CLI, atau Compute Engine API.

Izin yang diperlukan untuk langkah ini

Untuk melakukan tugas ini, Anda harus memiliki izin berikut:

  • compute.instances.get pada project
  • compute.instances.update pada project

Konsol

Untuk mengubah jumlah thread per core pada VM yang ada, gunakan prosedur konsol Google Cloud berikut:

  1. Di Konsol Google Cloud, buka halaman Instance VM.

    Buka Instance VM

  2. Klik Nama VM.

  3. Jika Status VM adalah Running, klik Stop.

  4. Klik Edit.

  5. Klik Advanced configurations untuk meluaskan bagian tersebut.

  6. Di menu drop-down Rasio vCPUs dan inti, pilih jumlah thread per inti.

  7. Klik Simpan.

gcloud

Untuk mengubah jumlah thread per inti pada VM yang ada, lakukan hal berikut:

  1. Ekspor properti VM dengan menggunakan perintah gcloud compute instances export berikut:

    gcloud compute instances export VM_NAME \
        --destination=YAML_FILE_PATH \
        --zone=ZONE
    

    Ganti kode berikut:

    • VM_NAME: nama VM yang propertinya akan diekspor

    • YAML_FILE_PATH: jalur dan nama file File .yaml tempat menyimpan data konfigurasi yang diekspor

    • ZONE: zona yang berisi VM

  2. Dalam file konfigurasi VM yang disimpan di FILE_PATH, perbarui nilai untuk threadsPerCore. Jika nilainya tidak ada dalam file, tambahkan hal berikut:

    advancedMachineFeatures:
      threadsPerCore: THREADS_PER_CORE
    
  3. Update VM dengan jumlah thread per inti yang baru menggunakan perintah gcloud compute instances update-from-file berikut:

    gcloud compute instances update-from-file VM_NAME \
        --source=FILE_PATH \
        --most-disruptive-allowed-action=RESTART \
        --zone=ZONE
    

    Ganti kode berikut:

    • VM_NAME: nama VM yang diupdate

    • FILE_PATH: jalur ke VM yang diupdate file konfigurasi

    • ZONE: 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 project

  • ZONE: zona yang berisi VM.

  • VM_NAME: nama VM yang propertinya akan diekspor

  • THREADS_PER_CORE: jumlah thread per core

Melihat jumlah thread per inti

Untuk melihat jumlah thread per inti, gunakan prosedur yang sesuai dengan yang berjalan pada VM.

Linux

Untuk melihat jumlah thread per core pada VM berbasis Linux, gunakan perintah berikut prosedur:

  1. Hubungkan ke VM Linux.

  2. Jalankan perintah lscpu.

    lscpu
    
  3. Tinjau output untuk melihat jumlah thread per inti.

    Pada contoh output berikut dari mesin n2-standard-16, nilai untuk jumlah thread per inti adalah 1 seperti yang ditunjukkan dalam baris Thread(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:

  1. Hubungkan ke VM Windows.

  2. Luncurkan Powershell.

  3. Jalankan perintah berikut.

    Get-WmiObject -Class Win32_processor | Select-Object NumberOfCores, @{Name="Thread(s) per core";Expression={$_.NumberOfLogicalProcessors/$_.NumberOfCores}}
    
  4. Tinjau output untuk melihat jumlah thread per inti.

    Pada contoh output berikut dari mesin n2-standard-16, nilai untuk jumlah thread per inti adalah 1 seperti yang ditunjukkan dalam kolom Thread(s) per core.

    NumberOfCores Thread(s) per core
    ------------- ------------------
                8                  1
    

Langkah berikutnya