Mengonfigurasi jaringan Tingkat 1 untuk VM

Dokumen ini menjelaskan cara mengonfigurasi performa jaringan Tier 1 untuk instance virtual machine (VM) tertentu di Google Distributed Cloud (GDC) yang terisolasi. VM dengan konfigurasi jaringan Tingkat 1 sangat berguna untuk workload komputasi besar yang terdistribusi dengan banyak komunikasi internode yang berat, seperti komputasi berperforma tinggi (HPC), machine learning (ML), dan deep learning (DL).

Dokumen ini ditujukan bagi developer dalam grup administrator platform atau operator aplikasi yang mengonfigurasi jaringan untuk VM di lingkungan Distributed Cloud. Untuk mengetahui informasi selengkapnya, lihat Audiens untuk dokumentasi GDC dengan air gap.

Sebelum memulai

Untuk menggunakan perintah antarmuka command line (CLI) gdcloud, pastikan Anda telah mendownload, menginstal, dan mengonfigurasi CLI gdcloud. Semua perintah untuk Distributed Cloud menggunakan CLI gdcloud atau kubectl, dan memerlukan lingkungan sistem operasi (OS).

Mendapatkan jalur file kubeconfig

Untuk menjalankan perintah terhadap server Management API, pastikan Anda memiliki resource berikut:

  1. Login dan buat file kubeconfig untuk server Management API jika Anda belum memilikinya.

  2. Gunakan jalur ke file kubeconfig server Management API untuk menggantikan MANAGEMENT_API_SERVER dalam petunjuk ini.

Meminta peran IAM

Hubungi Admin IAM Project Anda untuk meminta peran berikut di project Anda:

  • Admin Project Virtual Machine (project-vm-admin): membuat, mengubah, mencantumkan, dan menghapus VM di namespace project.

  • Project Viewer(project-viewer): melihat semua resource dalam namespace project.

Semua peran VM harus terikat ke namespace project tempat VM berada. Ikuti langkah-langkah untuk memverifikasi akses Anda.

Batasan

Jaringan Tingkat 1 didukung dengan jenis mesin N2, N3, N4, A2, dan A3 yang memiliki setidaknya 4 vCPU.

Tingkat bandwidth

Batas bandwidth masuk dan keluar menunjukkan jumlah maksimum data per unit waktu, seperti gigabit per detik (Gbps), yang diizinkan oleh GDC untuk ditransmisikan atau diterima instance VM dari antarmuka jaringan (NIC)-nya. Bandwidth mencakup data yang ditransfer antara instance VM dan penyimpanan objek.

GDC memiliki batas bandwidth berikut:

  • Batas bandwidth default adalah 10 Gbps.
  • Jaringan Tingkat 1 meningkatkan batas bandwidth keluar maksimum untuk instance komputasi. Batas bandwidth keluar maksimum berkisar dari 16 Gbps hingga 25 Gbps, bergantung pada ukuran dan jenis mesin instance Anda.
  • Bandwidth keluar yang sebenarnya selalu kurang dari atau sama dengan batas bandwidth keluar.

Untuk mencapai bandwidth traffic keluar setinggi mungkin, semua hal berikut harus terpenuhi:

  • Instance komputasi pengirim dan penerima harus berada di zona yang sama.
  • Paket yang dikirim antar-instance harus menggunakan tujuan alamat IP internal.
  • Jumlah alur TCP harus antara 4 dan 128 alur.
  • Instance pengirim harus mengaktifkan TCP Segmentation Offload (TSO), dan instance penerima harus mengaktifkan Generic Receive Offload (GRO).
  • OS tamu di instance pengirim telah mengonfigurasi Transmit Packet Steering (XPS) dan Interrupt Request (IRQ) pinning. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi penyematan OS tamu.

VM N2 dan N3

vCPU IP internal IP Internal Tingkat 1
2 10 Gbps Tidak berlaku
4 10 Gbps Tidak berlaku
8 10 Gbps 16 Gbps
12 10 Gbps 25 Gbps
16 10 Gbps 25 Gbps
32 10 Gbps 25 Gbps
64 10 Gbps 25 Gbps

VM N4

vCPU IP internal IP Internal Tingkat 1
4 10 Gbps Tidak berlaku
8 10 Gbps Tidak berlaku
16 10 Gbps 25 Gbps
32 10 Gbps 25 Gbps
48 10 Gbps 25 Gbps
64 10 Gbps 25 Gbps
80 10 Gbps 25 Gbps
160 10 Gbps 25 Gbps

VM A2

vCPU IP internal IP Internal Tingkat 1
12 10 Gbps 18 Gbps
24 10 Gbps 25 Gbps

VM A3

vCPU IP internal IP Internal Tingkat 1
28 10 Gbps 25 Gbps
56 10 Gbps 25 Gbps
112 10 Gbps 25 Gbps

Mengonfigurasi VM dengan jaringan Tingkat 1

Buat instance dan container yang menggunakan jaringan Tingkat 1:

gdcloud

gdcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --image=BOOT_DISK_IMAGE_NAME --image-project=vm-system \
    --boot-disk-size=BOOT_DISK_SIZE \
    --network-performance-tier=tier_1

Ganti kode berikut:

VariabelDefinisi
VM_NAME Nama VM baru. Nama hanya boleh berisi karakter alfanumerik dan tanda hubung, serta tidak boleh lebih dari 53 karakter.
MACHINE_TYPE Jenis mesin yang telah ditetapkan untuk VM baru. Pilih jenis mesin yang tersedia:
gdcloud compute machine-types list
BOOT_DISK_IMAGE_NAME Nama image yang akan digunakan untuk boot disk VM baru.
BOOT_DISK_SIZE Ukuran boot disk, seperti 20GB.
Nilai ini harus selalu lebih besar dari atau sama dengan minimumDiskSize image boot disk.

API

kubectl --kubeconfig MANAGEMENT_API_SERVER \
    apply -n PROJECT -f - <<EOF
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineDisk
metadata:
  name: VM_BOOT_DISK_NAME
spec:
  source:
    image:
      name: BOOT_DISK_IMAGE_NAME
      namespace: vm-system
  size: BOOT_DISK_SIZE
---
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
  name: VM_NAME
spec:
  compute:
    virtualMachineType: MACHINE_TYPE
  disks:
    - virtualMachineDiskRef:
        name: VM_BOOT_DISK_NAME
      boot: true
      autoDelete: BOOT_DISK_AUTO_DELETE
  network:
    networkPerformanceTier: Tier_1
EOF

Ganti kode berikut:

VariabelDefinisi
MANAGEMENT_API_SERVER File kubeconfig server Management API.
PROJECT Project Distributed Cloud untuk membuat VM.
VM_BOOT_DISK_NAME Nama disk boot VM baru.
BOOT_DISK_IMAGE_NAME Nama image yang akan digunakan untuk boot disk VM baru.
BOOT_DISK_SIZE Ukuran boot disk, seperti 20Gi.
Nilai ini harus selalu lebih besar dari atau sama dengan minimumDiskSize image boot disk.
VM_NAME Nama VM baru. Nama hanya boleh berisi karakter alfanumerik dan tanda hubung, serta tidak boleh lebih dari 53 karakter.
MACHINE_TYPE Jenis mesin yang telah ditetapkan untuk VM baru. Pilih jenis mesin yang tersedia:
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachineimage.virtualmachine.gdc.goog --namespace PROJECT
BOOT_DISK_AUTO_DELETE true atau false, yang menunjukkan apakah boot disk otomatis dihapus saat instance VM dihapus.

Mengonfigurasi penyematan OS tamu untuk performa yang konsisten

Untuk mencegah penurunan throughput jaringan dan mempertahankan bandwidth jaringan yang konsisten di VM tamu yang menggunakan jaringan Tingkat 1, konfigurasikan Transmit Packet Steering (XPS) dan pengaitan Interrupt Request (IRQ) di sistem operasi tamu.

Tanpa konfigurasi ini, penjadwal OS tamu dapat menggabungkan semua antrean transmisi dan interupsi jaringan ke dalam satu core CPU saat beban jaringan berat, sehingga membatasi throughput.

Sebelum mengonfigurasi XPS dan penyambungan IRQ, temukan jumlah CPU virtual (vCPU) yang ditetapkan ke VM Anda dengan menjalankan perintah berikut di VM tamu:

nproc

Gunakan nomor ini untuk mengganti NUM_VCPUS dalam konfigurasi berikut.

Mengonfigurasi penyematan XPS

Mendistribusikan antrean transmisi (TX) di seluruh CPU virtual (vCPU) yang ditetapkan ke VM. Distribusi seragam meningkatkan lokalitas cache dan menyeimbangkan pemrosesan.

Untuk mengonfigurasi penyematan XPS di VM tamu, jalankan skrip berikut:

NUM_VCPUS=NUM_VCPUS

for i in $(seq 0 $((NUM_VCPUS - 1))); do
    cpu=$(( i % (NUM_VCPUS / 4) ))
    mask=$(printf "%x" $((1 << cpu)))
    echo "Queue tx-$i -> CPU $cpu (mask $mask)"
    echo $mask > /sys/class/net/enp1s0/queues/tx-$i/xps_cpus
done

Mengonfigurasi penyematan IRQ

Ikat interupsi antarmuka jaringan langsung ke core CPU tertentu yang bertanggung jawab untuk memproses antrean tersebut. Penyelarasan ini meminimalkan Inter-Processor Interrupts (IPI) dan pembatalan validasi cache.

Untuk mengonfigurasi penyambungan IRQ di VM tamu, jalankan skrip berikut:

NUM_VCPUS=NUM_VCPUS
irqs=$(grep "virtio0-" /proc/interrupts | awk -F: '{print $1}' | tr -d ' ')

idx=0
for irq in $irqs; do
    cpu=$(( idx % (NUM_VCPUS / 4) ))
    mask=$(printf "%x" $((1 << cpu)))
    echo "Mapping IRQ $irq to CPU $cpu (mask $mask)"
    echo $mask > /proc/irq/$irq/smp_affinity
    idx=$(( idx + 1 ))
done