Mastodon
Zuletzt aktualisiert am
Phoronix Linux News
Michael Larabel

Linux 6.17 optimiert khugepaged für ARM64 mit enormer "16x"-Auswirkung für einen Code-Pfad

Andrew Morton hat diese Woche einige zusätzliche Änderungen an der Speicherverwaltung (MM) für Linux 6.17 eingesandt, die die vielen MM-Patches der letzten Woche ergänzen, von neuen Optimierungen bis hin zu weiteren DAMON-Features. Am bemerkenswertesten bei diesem zweiten Satz von Patches sind khugepaged-Optimierungen, die besonders ARM64-Linux-Systemen helfen.
Eine Übersetzung von 🇬🇧 Phoronix.com

Khugepaged ist Teil der Transparent Hugepage-Unterstützung im Linux-Kernel und erfährt in Linux 6.17 für AArch64-Hardware einige interessante Optimierungen. Die Optimierungen verbessern den Khugepaged-Durchsatz durch Batching von PTE-Operationen für große Folios.

Dev Jain von Arm erklärte die Patch-Serie für die Arbeit:

Wenn das zugrundeliegende Folio, das durch die ptes abgebildet wird, groß ist, können wir diese ptes in einem Stapel mit folio_pte_batch() verarbeiten.

Speziell für arm64 führt dies zu einer 16-fachen Reduzierung der Anzahl der ptep_get()-Aufrufe, da ptep_get() auf arm64 bei einem Contig-Block alle 16 Einträge durchläuft, um a/d-Bits zu sammeln. Anschließend wird ptep_clear() über contpte_try_unfold() ein TLBI für jeden Contig-Block im Bereich auslösen. Verwenden Sie stattdessen clear_ptes(), um die TLBI nur für den ersten und letzten Contig-Block des Bereichs durchzuführen.

Bei Split-Folios findet kein pte-Batching statt; die von folio_pte_batch() zurückgegebene Batchgröße ist 1. Bei geteilten Folios mit Seitentabellen verweisen die ptes weiterhin auf dasselbe große Folio; für arm64 führt dies zu der oben beschriebenen Optimierung, und für andere Architekturenn wird eine geringfügige Verbesserung aufgrund einer Verringerung der Anzahl von Funktionsaufrufen und der Stapelung von atomaren Operationen erwartet.

Der ptep_get()-Aufruf, der eine 16-fache Reduzierung aufweist, ist eine Hilfsfunktion für den sicheren Zugriff auf Seitentabelleneinträge (PTEs). Bei ARM64-Systemen wird auch die Anzahl der TLB-Flushes als Ergebnis dieser khugepaged-Optimierungen reduziert.

Der zusätzliche MM-Pull-Request für Linux 6.17 beinhaltet zusätzlich die Aktivierung der EXECMEM_ROX_CACHE-Unterstützung für ftrace und kprobes. Der zusammengeführte Code bringt auch Leistungsverbesserungen für den mTHP-Swap-in-Code.

Unterstützen Sie Michael

Ein Service von s3n🧩net

Comments