Benchmarking delle prestazioni SSD locali

I limiti delle prestazioni dei dischi SSD locali indicati nella sezione Scegli un'opzione di archiviazione sono stati raggiunti utilizzando impostazioni specifiche sull'istanza SSD locale. Se l'istanza di macchina virtuale (VM) presenta problemi nel raggiungere questi limiti di prestazioni e hai già configurato l'istanza utilizzando le impostazioni SSD locali consigliate, puoi confrontare i limiti di prestazioni con i limiti pubblicati replicando le impostazioni utilizzate dal team di Compute Engine.

Queste istruzioni presuppongono che utilizzi un sistema operativo Linux su cui è installato apt gestore di pacchetti.

Crea una macchina virtuale con 8 vCPU e una partizione SSD locale

  1. Crea un'istanza SSD locale con quattro o otto vCPU per ciascun dispositivo, a seconda del carico di lavoro. Ad esempio, per collegare quattro partizioni SSD locali a un'istanza, utilizza un tipo di macchina con 16 o 32 vCPU.

    Il comando seguente crea una macchina virtuale con 8 vCPU e un singolo SSD locale:

    gcloud compute instances create ssd-test-instance \
        --machine-type "n1-standard-8" \
        --local-ssd interface=nvme
    
  2. Esegui lo script seguente nella VM. Lo script replica le impostazioni utilizzate per raggiungere le cifre delle prestazioni SSD fornite nella sezione relativa alle prestazioni. Tieni presente che il parametro --bs definisce la dimensione del blocco, che influisce sui risultati dei diversi tipi di operazioni di lettura e scrittura.

    # install tools
    sudo apt-get -y update
    sudo apt-get install -y fio util-linux
    
    # discard local SSD sectors
    sudo blkdiscard /dev/disk/by-id/google-local-nvme-ssd-0
    
    # full write pass - measures write bandwidth with 1M blocksize
    sudo fio --name=writefile --size=100G --filesize=100G \
    --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --bs=1M --nrfiles=1 \
    --direct=1 --sync=0 --randrepeat=0 --rw=write --refill_buffers --end_fsync=1 \
    --iodepth=200 --ioengine=libaio
    
    # rand read - measures max read IOPS with 4k blocks
    sudo fio --time_based --name=benchmark --size=100G --runtime=30 \
    --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --ioengine=libaio --randrepeat=0 \
    --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
    --numjobs=4 --rw=randread --blocksize=4k --group_reporting
    
    # rand write - measures max write IOPS with 4k blocks
    sudo fio --time_based --name=benchmark --size=100G --runtime=30 \
    --filename=/dev/disk/by-id/google-local-nvme-ssd-0 --ioengine=libaio --randrepeat=0 \
    --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
    --numjobs=4 --rw=randwrite --blocksize=4k --group_reporting
    

Crea una macchina virtuale con 32 vCPU e 24 partizioni SSD locali

  1. Se vuoi collegare 24 partizioni SSD locali a un'istanza, utilizza un tipo di macchina con 32 o più vCPU.

    Il comando seguente crea una macchina virtuale con 32 vCPU e 24 partizioni SSD locali:

    gcloud compute instances create ssd-test-instance \
    --machine-type "n1-standard-32" \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme \
    --local-ssd interface=nvme
    
  2. Installa lo strumento mdadm. Il processo di installazione per mdadm include una richiesta dell'utente che interrompe gli script, quindi esegui il processo manualmente:

    Debian e Ubuntu

    sudo apt update && sudo apt install mdadm --no-install-recommends
    

    CentOS e RHEL

    sudo yum install mdadm -y
    

    SLES e openSUSE

    sudo zypper install -y mdadm
    
  3. Usa il comando lsblk per identificare tutti gli SSD locali che vuoi montare insieme:

    lsblk
    

    L'output avrà il seguente aspetto:

    NAME    MAJ:MIN  RM  SIZE RO TYPE MOUNTPOINT
    sda       8:0     0   10G  0 disk
    └─sda1    8:1     0   10G  0 part /
    nvme0n1 259:0     0  375G  0 disk
    nvme0n2 259:1     0  375G  0 disk
    nvme0n3 259:2     0  375G  0 disk
    nvme0n4 259:3     0  375G  0 disk
    nvme0n5 259:4     0  375G  0 disk
    nvme0n6 259:5     0  375G  0 disk
    nvme0n7 259:6     0  375G  0 disk
    nvme0n8 259:7     0  375G  0 disk
    nvme0n9 259:8     0  375G  0 disk
    nvme0n10 259:9    0  375G  0 disk
    nvme0n11 259:10   0  375G  0 disk
    nvme0n12 259:11   0  375G  0 disk
    nvme0n13 259:12   0  375G  0 disk
    nvme0n14 259:13   0  375G  0 disk
    nvme0n15 259:14   0  375G  0 disk
    nvme0n16 259:15   0  375G  0 disk
    nvme0n17 259:16   0  375G  0 disk
    nvme0n18 259:17   0  375G  0 disk
    nvme0n19 259:18   0  375G  0 disk
    nvme0n20 259:19   0  375G  0 disk
    nvme0n21 259:20   0  375G  0 disk
    nvme0n22 259:21   0  375G  0 disk
    nvme0n23 259:22   0  375G  0 disk
    nvme0n24 259:23   0  375G  0 disk
    

    Le unità SSD locali in modalità SCSI hanno nomi standard simili a sdb. Gli SSD locali in modalità NVMe hanno nomi simili a nvme0n1.

  4. Utilizza lo strumento mdadm per combinare più dispositivi SSD locali in un unico array denominato /dev/md0. Questo esempio unisce ventiquattro dispositivi SSD locali in modalità NVMe. Per i dispositivi SSD locali in modalità SCSI, specifica i nomi ottenuti dal comando lsblk:

    sudo mdadm --create /dev/md0 --level=0 --raid-devices=24 \
    /dev/nvme0n1 /dev/nvme0n2 /dev/nvme0n3 /dev/nvme0n4 \
    /dev/nvme0n5 /dev/nvme0n6 /dev/nvme0n7 /dev/nvme0n8 \
    /dev/nvme0n9 /dev/nvme0n10 /dev/nvme0n11 /dev/nvme0n12 \
    /dev/nvme0n13 /dev/nvme0n14 /dev/nvme0n15 /dev/nvme0n16 \
    /dev/nvme0n17 /dev/nvme0n18 /dev/nvme0n19 /dev/nvme0n20 \
    /dev/nvme0n21 /dev/nvme0n22 /dev/nvme0n23 /dev/nvme0n24
    

    La risposta è simile alla seguente:

    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md0 started.
    
  5. Esegui lo script seguente nella VM. Lo script replica le impostazioni utilizzate per raggiungere le cifre delle prestazioni SSD fornite nella sezione relativa alle prestazioni. Il parametro --bs definisce la dimensione del blocco, che influisce sui risultati per diversi tipi di operazioni di lettura e scrittura.

    # install tools
    sudo apt-get -y update
    sudo apt-get install -y fio util-linux
    
    # full write pass - measures write bandwidth with 1M blocksize
    sudo fio --name=writefile --size=100G --filesize=100G \
    --filename=/dev/md0 --bs=1M --nrfiles=1 \
    --direct=1 --sync=0 --randrepeat=0 --rw=write --refill_buffers --end_fsync=1 \
    --iodepth=200 --ioengine=libaio
    
    # rand read - measures max read IOPS with 4k blocks
    sudo fio --time_based --name=benchmark --size=100G --runtime=30 \
    --filename=/dev/md0 --ioengine=libaio --randrepeat=0 \
    --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
    --numjobs=32 --rw=randread --blocksize=4k --group_reporting --norandommap
    
    # rand write - measures max write IOPS with 4k blocks
    sudo fio --time_based --name=benchmark --size=100G --runtime=30 \
    --filename=/dev/md0 --ioengine=libaio --randrepeat=0 \
    --iodepth=128 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
    --numjobs=32 --rw=randwrite --blocksize=4k --group_reporting --norandommap
    

Passaggi successivi