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:
Login dan buat file kubeconfig untuk server Management API jika Anda belum memilikinya.
Gunakan jalur ke file kubeconfig server Management API untuk menggantikan
MANAGEMENT_API_SERVERdalam 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:
| Variabel | Definisi |
|---|---|
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:
| Variabel | Definisi |
|---|---|
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