

 **Unterstützung für die Verbesserung dieser Seite beitragen** 

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link **Diese Seite bearbeiten auf**, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Optimieren Sie die Leistung von Amazon FSx for Lustre auf Knoten (ohne EFA)
<a name="fsx-csi-tuning-non-efa"></a>

Sie können die Leistung von Amazon FSx for Lustre optimieren, indem Sie während der Knoteninitialisierung mithilfe von Benutzerdaten der Startvorlage Optimierungsparameter anwenden.

**Anmerkung**  
Informationen zur Erstellung und Bereitstellung des CSI-Treibers FSx für Lustre finden Sie unter. [Stellen Sie den FSx for Lustre-Treiber bereit](fsx-csi-create.md) Informationen zur Leistungsoptimierung mit EFA-fähigen Knoten finden Sie unter [Optimieren Sie die Leistung von Amazon FSx for Lustre auf Knoten (EFA)](fsx-csi-tuning-efa.md).

## Warum Benutzerdaten von Startvorlagen verwenden?
<a name="_why_use_launch_template_user_data"></a>
+ Wendet Optimierungen automatisch während der Knoten-Initialisierung an.
+ Gewährleistet eine konsistente Konfiguration auf allen Knoten.
+ Macht die manuelle Knotenkonfiguration überflüssig.

## Übersicht über das Beispiel-Skript
<a name="_example_script_overview"></a>

Das in diesem Thema definierte Beispiel-Skript führt die folgenden Vorgänge aus:

### `# 1. Install Lustre client`
<a name="_1_install_lustre_client"></a>
+ Erkennt automatisch Ihre Amazon Linux (AL) Betriebssystemversion.
+ Installation des entsprechenden Lustre-Client-Pakets.

### `# 2. Apply network and RPC tunings`
<a name="_2_apply_network_and_rpc_tunings"></a>
+ Festlegen von `ptlrpcd_per_cpt_max=64` für die parallele RPC-Verarbeitung.
+ Konfiguriert `ksocklnd credits=2560` zur Optimierung der Netzwerkpuffer.

### `# 3. Load Lustre modules`
<a name="_3_load_lustre_modules"></a>
+ Sichere Entfernung vorhandener Lustre-Module, falls vorhanden.
+ Entfernt vorhandene eingebundene Dateisysteme.
+ Lädt aktuelle Lustre-Module.

### `# 4. Lustre Network Initialization`
<a name="_4_lustre_network_initialization"></a>
+ Initialisiert die Lustre-Netzwerkkonfiguration.
+ Richtet die erforderlichen Netzwerkparameter ein.

### `# 5. Mount FSx filesystem`
<a name="_5_mount_fsx_filesystem"></a>
+ In diesem Abschnitt müssen Sie die Werte für Ihre Umgebung anpassen.

### `# 6. Apply tunings`
<a name="_6_apply_tunings"></a>
+ LRU-Abstimmungen (Lock Resource Unit):
  +  `lru_max_age=600000` 
  +  `lru_size` berechnet basierend auf der CPU-Anzahl
+ Client-Cache-Steuerung: `max_cached_mb=64` 
+ RPC-Steuerungen
  + OST `max_rpcs_in_flight=32` 
  + MDC `max_rpcs_in_flight=64` 
  + MDC `max_mod_rpcs_in_flight=50` 

### `# 7. Verify tunings`
<a name="_7_verify_tunings"></a>
+ Überprüft alle angewendeten Abstimmungen.
+ Meldet Erfolg oder Warnung für jeden Parameter.

### `# 8. Setup persistence`
<a name="_8_setup_persistence"></a>
+ Auch in diesem Abschnitt müssen Sie die Werte für Ihre Umgebung anpassen.
+ Erkennt automatisch Ihre Betriebssystemversion (AL2023), um zu bestimmen, welcher `Systemd` Service angewendet werden soll.
+ Das System startet.
+  `Systemd` startet den `lustre-tunings`-Service (aufgrund von `WantedBy=multi-user.target`).
+ Service führt `apply_lustre_tunings.sh` aus, das:
  + Überprüft, ob das Dateisystem eingebunden ist.
  + Bindet das Dateisystem, falls es noch nicht eingebunden ist.
  + Wartet auf erfolgreiche Einbindung (bis zu fünf Minuten).
  + Wendet nach erfolgreicher Einbindung die Abstimmungsparameter an.
+ Einstellungen bleiben bis zum Neustart aktiv.
+ Service wird nach Abschluss des Skripts beendet.
  + Systemd kennzeichnet den Service als „aktiv (beendet)“.
+ Der Vorgang wiederholt sich beim nächsten Neustart.

## Erstellen einer Startvorlage
<a name="_create_a_launch_template"></a>

1. Öffnen Sie die EC2 Amazon-Konsole unter https://console.aws.amazon.com/ec2/.

1. Wählen Sie **Startvorlagen** aus.

1. Wählen Sie **Startvorlage erstellen**.

1. Suchen Sie unter **Erweiterte Details** den Abschnitt **Benutzerdaten**.

1. Fügen Sie das folgende Skript ein und aktualisieren Sie es nach Bedarf.
**Wichtig**  
Passen Sie diese Werte sowohl im Abschnitt `# 5. Mount FSx filesystem` als auch in der `setup_persistence()`-Funktion von `apply_lustre_tunings.sh` im Abschnitt `# 8. Setup persistence` an Ihre Umgebung an:  

   ```
   FSX_DNS="<your-fsx-filesystem-dns>" # Needs to be adjusted.
   MOUNT_NAME="<your-mount-name>" # Needs to be adjusted.
   MOUNT_POINT="</your/mount/point>" # Needs to be adjusted.
   ```

   ```
   MIME-Version: 1.0
   Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
   --==MYBOUNDARY==
   Content-Type: text/x-shellscript; charset="us-ascii"
   #!/bin/bash
   exec 1> >(logger -s -t $(basename $0)) 2>&1
   # Function definitions
   check_success() {
       if [ $? -eq 0 ]; then
           echo "SUCCESS: $1"
       else
           echo "FAILED: $1"
           return 1
       fi
   }
   apply_tunings() {
       local NUM_CPUS=$(nproc)
       local LRU_SIZE=$((100 * NUM_CPUS))
       local params=(
           "ldlm.namespaces.*.lru_max_age=600000"
           "ldlm.namespaces.*.lru_size=$LRU_SIZE"
           "llite.*.max_cached_mb=64"
           "osc.*OST*.max_rpcs_in_flight=32"
           "mdc.*.max_rpcs_in_flight=64"
           "mdc.*.max_mod_rpcs_in_flight=50"
       )
       for param in "${params[@]}"; do
           lctl set_param $param
           check_success "Set ${param%%=*}"
       done
   }
   verify_param() {
       local param=$1
       local expected=$2
       local actual=$3
   
       if [ "$actual" == "$expected" ]; then
           echo "SUCCESS: $param is correctly set to $expected"
       else
           echo "WARNING: $param is set to $actual (expected $expected)"
       fi
   }
   verify_tunings() {
       local NUM_CPUS=$(nproc)
       local LRU_SIZE=$((100 * NUM_CPUS))
       local params=(
           "ldlm.namespaces.*.lru_max_age:600000"
           "ldlm.namespaces.*.lru_size:$LRU_SIZE"
           "llite.*.max_cached_mb:64"
           "osc.*OST*.max_rpcs_in_flight:32"
           "mdc.*.max_rpcs_in_flight:64"
           "mdc.*.max_mod_rpcs_in_flight:50"
       )
       echo "Verifying all parameters:"
       for param in "${params[@]}"; do
           name="${param%%:*}"
           expected="${param#*:}"
           actual=$(lctl get_param -n $name | head -1)
           verify_param "${name##*.}" "$expected" "$actual"
       done
   }
   setup_persistence() {
       # Create functions file
       cat << 'EOF' > /usr/local/bin/lustre_functions.sh
   #!/bin/bash
   apply_lustre_tunings() {
       local NUM_CPUS=$(nproc)
       local LRU_SIZE=$((100 * NUM_CPUS))
   
       echo "Applying Lustre performance tunings..."
       lctl set_param ldlm.namespaces.*.lru_max_age=600000
       lctl set_param ldlm.namespaces.*.lru_size=$LRU_SIZE
       lctl set_param llite.*.max_cached_mb=64
       lctl set_param osc.*OST*.max_rpcs_in_flight=32
       lctl set_param mdc.*.max_rpcs_in_flight=64
       lctl set_param mdc.*.max_mod_rpcs_in_flight=50
   }
   EOF
       # Create tuning script
       cat << 'EOF' > /usr/local/bin/apply_lustre_tunings.sh
   #!/bin/bash
   exec 1> >(logger -s -t $(basename $0)) 2>&1
   # Source the functions
   source /usr/local/bin/lustre_functions.sh
   # FSx details
   FSX_DNS="<your-fsx-filesystem-dns>" # Needs to be adjusted.
   MOUNT_NAME="<your-mount-name>" # Needs to be adjusted.
   MOUNT_POINT="</your/mount/point>" # Needs to be adjusted.
   # Function to check if Lustre is mounted
   is_lustre_mounted() {
       mount | grep -q "type lustre"
   }
   # Function to mount Lustre
   mount_lustre() {
       echo "Mounting Lustre filesystem..."
       mkdir -p ${MOUNT_POINT}
       mount -t lustre ${FSX_DNS}@tcp:/${MOUNT_NAME} ${MOUNT_POINT}
       return $?
   }
   # Main execution
   # Try to mount if not already mounted
   if ! is_lustre_mounted; then
       echo "Lustre filesystem not mounted, attempting to mount..."
       mount_lustre
   fi
   # Wait for successful mount (up to 5 minutes)
   for i in {1..30}; do
       if is_lustre_mounted; then
           echo "Lustre filesystem mounted, applying tunings..."
           apply_lustre_tunings
           exit 0
       fi
       echo "Waiting for Lustre filesystem to be mounted... (attempt $i/30)"
       sleep 10
   done
   echo "Timeout waiting for Lustre filesystem mount"
   exit 1
   EOF
       # Create systemd service
       cat << 'EOF' > /etc/systemd/system/lustre-tunings.service
   [Unit]
   Description=Apply Lustre Performance Tunings
   After=network.target remote-fs.target
   StartLimitIntervalSec=0
   [Service]
   Type=oneshot
   ExecStart=/usr/local/bin/apply_lustre_tunings.sh
   RemainAfterExit=yes
   Restart=on-failure
   RestartSec=30
   [Install]
   WantedBy=multi-user.target
   EOF
       chmod +x /usr/local/bin/lustre_functions.sh
       chmod +x /usr/local/bin/apply_lustre_tunings.sh
       systemctl enable lustre-tunings.service
       systemctl start lustre-tunings.service
   }
   echo "Starting FSx for Lustre configuration..."
   # 1. Install Lustre client
   if grep -q 'VERSION="2"' /etc/os-release; then
       amazon-linux-extras install -y lustre
   elif grep -q 'VERSION="2023"' /etc/os-release; then
       dnf install -y lustre-client
   fi
   check_success "Install Lustre client"
   # 2. Apply network and RPC tunings
   export PATH=$PATH:/usr/sbin
   echo "Applying network and RPC tunings..."
   if ! grep -q "options ptlrpc ptlrpcd_per_cpt_max" /etc/modprobe.d/modprobe.conf; then
       echo "options ptlrpc ptlrpcd_per_cpt_max=64" | tee -a /etc/modprobe.d/modprobe.conf
       echo "options ksocklnd credits=2560" | tee -a /etc/modprobe.d/modprobe.conf
   fi
   # 3. Load Lustre modules
   modprobe lustre
   check_success "Load Lustre modules" || exit 1
   # 4. Lustre Network Initialization
   lctl network up
   check_success "Initialize Lustre networking" || exit 1
   # 5. Mount FSx filesystem
   FSX_DNS="<your-fsx-filesystem-dns>" # Needs to be adjusted.
   MOUNT_NAME="<your-mount-name>" # Needs to be adjusted.
   MOUNT_POINT="</your/mount/point>" # Needs to be adjusted.
   if [ ! -z "$FSX_DNS" ] && [ ! -z "$MOUNT_NAME" ]; then
       mkdir -p $MOUNT_POINT
       mount -t lustre ${FSX_DNS}@tcp:/${MOUNT_NAME} ${MOUNT_POINT}
       check_success "Mount FSx filesystem"
   fi
   # 6. Apply tunings
   apply_tunings
   # 7. Verify tunings
   verify_tunings
   # 8. Setup persistence
   setup_persistence
   echo "FSx for Lustre configuration completed."
   --==MYBOUNDARY==--
   ```

1. Wählen Sie beim Erstellen von Amazon-EKS-Knotengruppen diese Startvorlage aus. Weitere Informationen finden Sie unter [Eine verwaltete Knotengruppe für Ihren Cluster erstellen](create-managed-node-group.md).

## Ähnliche Informationen
<a name="_related_information"></a>
+  [Stellen Sie den FSx for Lustre-Treiber bereit](fsx-csi-create.md) 
+  [Optimieren Sie die Leistung von Amazon FSx for Lustre auf Knoten (EFA)](fsx-csi-tuning-efa.md) 
+  [Amazon FSx für Lustre Performance](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html) 