Questa pagina descrive come testare il rendimento di un'istanza Google Cloud Managed Lustre utilizzando i client Compute Engine. Fornisce istruzioni per misurare il rendimento di un singolo client utilizzando fio e il rendimento aggregato di più client utilizzando lo strumento di benchmarking IOR.
Misurare il rendimento di un singolo client
Per testare il rendimento di lettura e scrittura da un singolo client Compute Engine, utilizza
lo strumento da riga di comando fio (Flexible I/O tester).
Installa fio:
Rocky 8
sudo dnf install fio -yUbuntu 20.04 e 22.04
sudo apt update sudo install fioEsegui questo comando:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/lustre --buffer_compress_percentage=50 \ --name=read --blocksize=1m --iodepth=64 --readwrite=read
Il completamento del test richiede circa 5 minuti. Al termine, vengono visualizzati i risultati. A seconda della configurazione, puoi prevedere un throughput fino a alla velocità di rete massima della VM e migliaia di IOPS per TiB.
Misurare il rendimento di più client
Per testare il rendimento di lettura e scrittura di Managed Lustre da più client Compute Engine, utilizza lo strumento di benchmarking IOR. Le seguenti istruzioni mostrano come automatizzare la configurazione del client e utilizzare IOR per testare l'I/O aggregato da più macchine client. IOR utilizza MPI, un protocollo di passaggio dei messaggi, per consentire alle più macchine client di coordinarsi tra loro.
Prima di iniziare, assicurati che il valore mtu della rete sia
impostato su 8896.
Impostare le variabili di ambiente e generare una chiave SSH
Prima di eseguire il deployment del cluster, genera una chiave SSH sulla macchina locale. Questa chiave verrà distribuita alle macchine client durante la creazione per abilitare la comunicazione senza password per MPI.
export SSH_USER="lustre-user"
export CLIENT_PREFIX="lustre-client"
# Generate an SSH key for the specified user
ssh-keygen -t rsa -b 4096 -C "${SSH_USER}" -N '' -f "./id_rsa"
chmod 600 "./id_rsa"
# Create a metadata file formatted for Google Cloud
echo "${SSH_USER}:$(cat "./id_rsa.pub") ${SSH_USER}" > "./keys.txt"
Creare lo script di avvio
Salva i seguenti contenuti in un file denominato install-ior.sh sulla macchina locale. Questo script rileva il sistema operativo, attende il rilascio dei blocchi di avvio, installa in modo sicuro il client Lustre e le dipendenze, compila una release stabile di IOR e monta il file system Managed Lustre.
Sostituisci LUSTRE_IP con l'indirizzo IP dell'istanza Managed Lustre e FS_NAME con il nome del file system.
#!/bin/bash
source /etc/os-release
if [[ "$ID" == "ubuntu" ]]; then
# Ubuntu
# Wait for apt lock
while fuser /var/lib/dpkg/lock-frontend >/dev/null 2>&1; do sleep 5; done
# Configure Artifact Registry repo for Ubuntu
curl -fsSL https://us-apt.pkg.dev/doc/repo-signing-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/us-apt-pkg-dev.gpg
if [[ "$VERSION_ID" == "22.04" ]]; then
REPO_NAME="lustre-client-ubuntu-jammy"
elif [[ "$VERSION_ID" == "24.04" ]]; then
REPO_NAME="lustre-client-ubuntu-noble"
fi
echo "deb [signed-by=/usr/share/keyrings/us-apt-pkg-dev.gpg] https://us-apt.pkg.dev/projects/lustre-client-binaries $REPO_NAME main" | sudo tee /etc/apt/sources.list.d/lustre-client.list
sudo apt-get update
while ! sudo apt-get install -y lustre-client-modules-$(uname -r) lustre-client-utils openmpi-bin libopenmpi-dev make gcc g++ wget git automake autoconf libaio-dev; do
sleep 5
done
sudo modprobe lustre
else
# Red Hat / Rocky Linux
while systemctl is-active --quiet dnf-makecache.service; do sleep 5; done
if [[ "$ID" == "rocky" && "$VERSION_ID" == 8* ]]; then
REPO="lustre-client-rocky-8"
elif [[ "$ID" == "rocky" && "$VERSION_ID" == 9* ]]; then
REPO="lustre-client-rocky-9"
elif [[ "$ID" == "rhel" && "$VERSION_ID" == 9* ]]; then
REPO="lustre-client-rocky-9"
fi
gcloud beta artifacts print-settings yum --repository=$REPO --location=us --project=lustre-client-binaries | sudo bash
while ! sudo dnf -y --enablerepo=$REPO install kmod-lustre-client lustre-client; do sleep 5; done
sudo modprobe lustre
while ! sudo dnf install -y openmpi openmpi-devel make gcc gcc-c++ wget git automake autoconf libaio-devel; do sleep 5; done