


Lassen Sie uns über die Numa-Architektur unter Linux sprechen (ausführliche Erklärung mit Bildern und Text)
Dieser Artikel vermittelt Ihnen relevantes Wissen über die Numa-Architektur in Linux. Ich hoffe, er wird Ihnen hilfreich sein.
Der folgende Fall basiert auf Ubuntu 16.04 und ist auch auf andere Linux-Systeme anwendbar. Die Gehäuseumgebung, die ich verwendet habe, ist wie folgt:
Maschinenkonfiguration: 32 CPU, 64 GB Speicher
Das Konzept der Speicherebene in NUMA:
1) Prozessorschicht: ein einzelner physischer Kern, der als Prozessorschicht bezeichnet wird. 2) Lokale Knotenschicht: Für alle Prozessoren in einem Knoten wird dieser Knoten als lokaler Knoten bezeichnet. 3) Heimatknotenschicht: Der Knoten neben dem lokalen Knoten wird als Heimatknoten bezeichnet. 4) Remote-Knotenschicht: Knoten, die keine lokalen Knoten oder Nachbarknoten sind, werden als Remote-Knoten bezeichnet. Die Geschwindigkeit, mit der die CPU auf den Speicher verschiedener Knotentypen zugreift, ist am schnellsten und die Geschwindigkeit beim Zugriff auf entfernte Knoten am langsamsten. Das heißt, die Zugriffsgeschwindigkeit hängt von der Entfernung des Knotens ab . Je weiter die Entfernung, desto langsamer ist die Zugriffsgeschwindigkeit. Diese Entfernung wird als Knotenentfernung bezeichnet. Anwendungen sollten versuchen, die Interaktion zwischen verschiedenen CPU-Modulen zu minimieren. Wenn die Anwendung in einem CPU-Modul fixiert werden kann, wird die Leistung der Anwendung erheblich verbessert.
** Lassen Sie uns über die Zusammensetzung des CPU-Chips mit dem Kunpeng 920-Prozessor sprechen: ** Jeder Super-Core-Cluster des Kunpeng 920-Prozessor-System-on-Chip enthält 6 Core-Cluster, 2 I/O-Cluster und 4 DDR-Controller. Jeder Super-Core-Cluster ist in einen CPU-Chip verpackt. Jeder Chip integriert vier 72-Bit-Hochgeschwindigkeits-DDR4-Kanäle (64-Bit-Daten plus 8-Bit-ECC) mit einer Datenübertragungsrate von bis zu 3200 MT/s. Ein einzelner Chip kann bis zu 512 GB × 4 DDR-Speicherplatz unterstützen. Der L3-Cache ist physisch in zwei Teile unterteilt: L3-Cache-TAG und L3-Cache-Daten. L3-Cache-TAG ist in jedem Kerncluster integriert, um die Abhörlatenz zu reduzieren. L3-Cache-Daten sind direkt mit dem On-Chip-Bus verbunden. Hydra Root Agent (Hydra Home Agent, HHA) ist ein Modul, das das Cache-Konsistenzprotokoll von Multi-Chip-Systemen verwaltet. POE_ICL ist ein vom System konfigurierter Hardwarebeschleuniger, der im Allgemeinen als Paketsequenzer, Nachrichtenwarteschlange, Nachrichtenverteilung oder zur Implementierung bestimmter Aufgaben eines bestimmten Prozessorkerns verwendet werden kann. Darüber hinaus ist jeder Super-Core-Cluster physisch mit einem Generic Interrupt Controller Distributor (GICD)-Modul konfiguriert, das mit der GICv4-Spezifikation von ARM kompatibel ist. Wenn in einem Single-Chip- oder Multi-Chip-System mehrere Super-Core-Cluster vorhanden sind, ist für die Systemsoftware nur ein GICD sichtbar.
Verwendung von numactl
Linux bietet einen manuellen Optimierungsbefehl numactl (nicht standardmäßig installiert). Der Installationsbefehl unter Ubuntu lautet wie folgt:
sudo apt install numactl -y
Zunächst können Sie sich über man numactl oder numactl darüber informieren --h Die Funktion von Parametern und der Inhalt der Ausgabe. Überprüfen Sie den Numa-Status des Systems:
numactl --hardware
Führen Sie die folgenden Ergebnisse aus:
available: 4 nodes (0-3) node 0 cpus: 0 1 2 3 4 5 6 7 node 0 size: 16047 MB node 0 free: 3937 MB node 1 cpus: 8 9 10 11 12 13 14 15 node 1 size: 16126 MB node 1 free: 4554 MB node 2 cpus: 16 17 18 19 20 21 22 23 node 2 size: 16126 MB node 2 free: 8403 MB node 3 cpus: 24 25 26 27 28 29 30 31 node 3 size: 16126 MB node 3 free: 7774 MB node distances: node 0 1 2 3 0: 10 20 20 20 1: 20 10 20 20 2: 20 20 10 20 3: 20 20 20 10
Anhand der Ergebnisse aus diesem Bild und dem Befehl können Sie sehen, dass dieses System insgesamt 4 Knoten hat, von denen jeder 8 empfängt CPUs und 16G Speicher. Hierbei ist zu beachten, dass der von der CPU gemeinsam genutzte L3-Cache auch selbst den entsprechenden Speicherplatz erhält. Sie können den Numa-Status mit dem Befehl numastat überprüfen. Der Inhalt des Rückgabewerts:
numa_hit: Es soll Speicher auf diesem Knoten zugewiesen werden und wie oft er von diesem Knoten zugewiesen wurde; Speicher auf diesem Knoten zuweisen, aber er wurde schließlich von anderen Knoten zugewiesen
numa_foreign: Dies ist die Häufigkeit, mit der Speicher von diesem Knoten zugewiesen wird, wenn er auf anderen Knoten zugewiesen werden soll interleave_hit: die Häufigkeit, mit der der Speicher von diesem Knoten mithilfe der Interleave-Strategie zugewiesen wird.
local_node: Der Prozess auf diesem Knoten wird auf diesem Knoten zugewiesen. Die Häufigkeit, mit der der Speicher auf dem Knoten zugewiesen wird.
other_node: Dies ist die Häufigkeit, mit der dieser Knoten zugewiesen wird Andere Knotenprozesse werden auf dem Knoten zugewiesen
Hinweis: Wenn festgestellt wird, dass der Wert von numa_miss relativ hoch ist, bedeutet dies, dass die Zuweisungsstrategie angepasst werden muss. Beispielsweise ist die angegebene Prozesszuordnung an die angegebene CPU gebunden, wodurch die Speichertrefferrate verbessert wird.
root@ubuntu:~# numastat node0 node1 node2 node3 numa_hit 19480355292 11164752760 12401311900 12980472384 numa_miss 5122680 122652623 88449951 7058 numa_foreign 122652643 88449935 7055 5122679 interleave_hit 12619 13942 14010 13924 local_node 19480308881 11164721296 12401264089 12980411641 other_node 5169091 122684087 88497762 67801
NUMA-Speicherzuweisungsstrategie
--localalloc oder -l: Gibt an, dass der Prozess die Speicherzuweisung vom lokalen Knoten anfordert. --membind=Knoten oder -m Knoten: Gibt an, dass der Prozess nur Speicherzuweisung von angegebenen Knoten anfordern kann. --preferred=node: Geben Sie einen empfohlenen Knoten an, um Speicher zu erhalten. Wenn die Erfassung fehlschlägt, versuchen Sie es mit einem anderen Knoten. --interleave=Knoten oder -i Knoten: Gibt an, dass der Prozess mithilfe des Round-Robin-Algorithmus interleaved Speicherzuweisung von den angegebenen Knoten anfordert.
numactl --interleave=all mongod -f /etc/mongod.conf
因为NUMA默认的内存分配策略是优先在进程所在CPU的本地内存中分配,会导致CPU节点之间内存分配不均衡,当开启了swap,某个CPU节点的内存不足时,会导致swap产生,而不是从远程节点分配内存。这就是所谓的swap insanity 现象。或导致性能急剧下降。所以在运维层面,我们也需要关注NUMA架构下的内存使用情况(多个内存节点使用可能不均衡),并合理配置系统参数(内存回收策略/Swap使用倾向),尽量去避免使用到Swap。
Node->Socket->Core->Processor
随着多核技术的发展,将多个CPU封装在一起,这个封装被称为插槽Socket;Core是socket上独立的硬件单元;通过intel的超线程HT技术进一步提升CPU的处理能力,OS看到的逻辑上的核Processor数量。
Socket = Node
Socket是物理概念,指的是主板上CPU插槽;Node是逻辑概念,对应于Socket。
Core = 物理CPU
Core是物理概念,一个独立的硬件执行单元,对应于物理CPU;
Thread = 逻辑CPU = Processor
Thread是逻辑CPU,也就是Processo
lscpu的使用
显示格式:
Architecture:架构
CPU(s):逻辑cpu颗数
Thread(s) per core:每个核心线程,也就是指超线程
Core(s) per socket:每个cpu插槽核数/每颗物理cpu核数
CPU socket(s):cpu插槽数
L1d cache:级缓存(google了下,这具体表示表示cpu的L1数据缓存)
L1i cache:一级缓存(具体为L1指令缓存)
L2 cache:二级缓存
L3 cache:三级缓存
NUMA node0 CPU(s) :CPU上的逻辑核,也就是超线程
执行lscpu,结果部分如下:
root@ubuntu:~# lscpu Architecture: x86_64 CPU(s): 32 Thread(s) per core: 1 Core(s) per socket: 8 Socket(s): 4 L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 20480K NUMA node0 CPU(s): 0-7 NUMA node1 CPU(s): 8-15 NUMA node2 CPU(s): 16-23 NUMA node3 CPU(s): 24-31
相关推荐:《Linux视频教程》
Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Numa-Architektur unter Linux sprechen (ausführliche Erklärung mit Bildern und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Dieser Artikel führt Sie bei der effektiven Fehlerbehebung und Lösung von OpenSSL -Problemen auf Debian -Systemen. 1. System- und Softwarepaket-Update Erstens stellen Sie sicher, dass Ihr Debian-System auf die neueste Version aktualisiert wurde: sudoaptupdatesudoaptupgrade 2. Installieren von OpenSSL und Development Library Installation OpenSSL und ihre erforderlichen Entwicklungsbibliotheken: sudoaptinInstallopensllibssl-DEV-Installation, verifizieren Sie, ob die Installation erfolgreich ist: OpenSSLSSLUSPENSIGN. Kompilieren und Installieren von OpenSSL: von OP

In Debian -Systemen befinden sich OpenSSL -Konfigurationsdateien normalerweise im Verzeichnis /etc /ssl. Der genaue Dateiort kann jedoch je nach Installationsmethode und OpenSSL -Version variieren. Hier sind einige gängige Dateien: SSL -Zertifikate und -tasten: normalerweise in/etc/ssl/certs und/etc/ssl/private Verzeichnisse gespeichert. Hauptkonfigurationsdatei: Die OpenSSL.cnf -Datei ist die Hauptkonfigurationsdatei von OpenSSL, die sich normalerweise in /etc/ssl/opensl.cnf befindet. Wenn Sie OpenSSL über einen Paketmanager wie APT installieren, sollten diese Dateien automatisch erstellt und im entsprechenden Verzeichnis platziert werden. bitte beachten Sie

Installieren Sie PHPStorm im Debian -System, um Ihre PHP -Entwicklungsumgebung einfach zu lösen! Die folgenden Schritte führen Sie durch den gesamten Installationsprozess. Installationsschritte: Laden Sie PHPSTORM herunter: Besuchen Sie die offizielle Website von JetBrains und laden Sie die neueste Version von PHPSTORM herunter. Unzippieren Sie das Installationspaket: Nach dem Herunterladen mit WGet oder Curl es in das angegebene Verzeichnis (z. B. /opt) in das angegebene Verzeichnis entpacken. Befehlsbeispiel: wgethttps: //download.jetbrains.com/phpstorm/phpstorm-2024.3.5.tar.gztar-xzfphpstorm-2024.3.5.tar.gz

Die bequemste Möglichkeit, die Debian -Systemsoftware zu installieren, besteht darin, den APT -Paketmanager zu verwenden. In den folgenden Schritten werden Sie effizient anhelfen, die pakete effizient zu verwenden: Aktualisieren Sie Paketinformationen: Aktualisieren Sie zunächst die lokale Paketliste, um sicherzustellen, dass die neuesten Softwareinformationen und verfügbaren Updates erhalten werden. Führen Sie den folgenden Befehl aus: sudoaptupdate Suchzielsoftware: Verwenden Sie den Befehl AptSearch, um die erforderliche Software zu finden. Um einen Texteditor zu finden, geben Sie ein: AptSearchEditor -System zurück, das alle übereinstimmenden Pakete zurückgibt. Installieren Sie die Software: Verwenden Sie nach dem Finden des Zielsoftwarepakets den Befehl Aptinstall, um es zu installieren. Installieren Sie beispielsweise den Nginx -Webserver: s

Die fünf Kernkomponenten von Linux sind Kernel-, Shell-, Dateisystem-, Systembibliotheks- und System -Tools. 1. Der Kernel verwaltet Hardware -Ressourcen und bietet Dienste für die Anwendung an. 2. Shell dient als Schnittstelle zwischen dem Benutzer und dem System, interpretiert und führt Befehle aus. 3. Das Dateisystem ist für die Speicherung und Organisation von Daten verantwortlich. 4. Die Systembibliothek bietet vorkompilierte Funktionen zur Bereitstellung von Programmanrufen. 5. Systemwerkzeuge werden für das Systemmanagement und die Wartung verwendet. Diese Komponenten arbeiten zusammen, um Linux leistungsfähige Funktionen und Flexibilität zu verleihen.

In diesem Artikel werden verschiedene Methoden eingeführt, um die OpenSSL -Konfiguration des Debian -Systems zu überprüfen, um den Sicherheitsstatus des Systems schnell zu erfassen. 1. Bestätigen Sie zuerst die OpenSSL -Version und stellen Sie sicher, ob OpenSSL installiert wurde und Versionsinformationen. Geben Sie den folgenden Befehl in das Terminal ein: Wenn OpenSslversion nicht installiert ist, fordert das System einen Fehler auf. 2. Zeigen Sie die Konfigurationsdatei an. Die Hauptkonfigurationsdatei von OpenSSL befindet sich normalerweise in /etc/ssl/opensl.cnf. Sie können einen Texteditor (z. B. Nano) verwenden: Sudonano/etc/ssl/openSSL.cnf Diese Datei enthält wichtige Konfigurationsinformationen wie Schlüssel-, Zertifikatpfad- und Verschlüsselungsalgorithmus. 3.. Verwenden Sie OPE

In diesem Leitfaden wird beschrieben, wie Sie eine Hadoop -Entwicklungsumgebung für ein Debian -System erstellen. 1. Installieren Sie Java Development Kit (JDK) zuerst, OpenJDK: Java_home = "/usr/lib/jvm/java-11-openjdk-amd64" speichern und beenden und dann ausführen: Quelle/etc.

Das effektive Verwalten von Hadoop -Ressourcen im Debian -System erfordert die folgenden Schritte: Hadoop -Bereitstellung: Füllen Sie zunächst die Installation und Konfiguration von Hadoop im Debian -System aus. Dies beinhaltet die erforderlichen Vorgänge wie das Herunterladen von Hadoop -Verteilungspaketen, Dekomprimierung, Einstellungsvariablen usw. Clusterkonfiguration: Konfigurieren Sie nach Abschluss der Installation den Hadoop -Cluster, wobei die Einstellungen von HDFs (Hadoop -verteiltes Dateisystem) und Garn (Yetanotherresourcenegotiator) abdeckt. Sie müssen die Kernkonfigurationsdatei ändern, wie z.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen