Table des matières
La notion de niveau de stockage dans NUMA :
Utilisation de numactl
Maison Opération et maintenance exploitation et maintenance Linux Parlons de l'architecture numa sous Linux (explication détaillée avec images et texte)

Parlons de l'architecture numa sous Linux (explication détaillée avec images et texte)

Mar 03, 2022 am 06:00 AM
linux

Cet article vous apporte des connaissances pertinentes sur l'architecture numa sous Linux. J'espère qu'il vous sera utile.

Parlons de l'architecture numa sous Linux (explication détaillée avec images et texte)

Le cas suivant est basé sur Ubuntu 16.04 et est également applicable à d'autres systèmes Linux. L'environnement de cas que j'ai utilisé est le suivant :

Configuration machine : 32 CPU, 64 Go de mémoire

La notion de niveau de stockage dans NUMA :

Parlons de larchitecture numa sous Linux (explication détaillée avec images et texte)

1) Couche processeur : un seul cœur physique, appelé couche processeur. 2) Couche de nœud local : pour tous les processeurs d'un nœud, ce nœud est appelé nœud local. 3) Couche de nœud d'origine : le nœud adjacent au nœud local est appelé nœud d'origine. 4) Couche de nœuds distants : les nœuds qui ne sont pas des nœuds locaux ou des nœuds voisins sont appelés nœuds distants. La vitesse d'accès du processeur à la mémoire des différents types de nœuds est différente. La vitesse d'accès aux nœuds locaux est la plus rapide et la vitesse d'accès aux nœuds distants est la plus lente. Plus la distance est grande, plus la vitesse d'accès est lente. Cette distance est appelée For Node Distance. Les applications doivent essayer de minimiser l'interaction entre les différents modules CPU. Si l'application peut être corrigée dans un module CPU, les performances de l'application seront considérablement améliorées.

** Parlons de la composition de la puce CPU avec le processeur Kunpeng 920 : ** Chaque cluster super core du système sur puce du processeur Kunpeng 920 contient 6 clusters principaux, 2 clusters d'E/S et 4 contrôleurs DDR. Chaque cluster super core est intégré dans une puce CPU. Chaque puce intègre quatre canaux DDR4 haute vitesse de 72 bits (données 64 bits plus ECC 8 bits) avec un taux de transmission de données allant jusqu'à 3 200 MT/s. Une seule puce peut prendre en charge jusqu'à 512 Go × 4 d'espace de stockage DDR. Le cache L3 est physiquement divisé en deux parties : L3 Cache TAG et L3 Cache DATA. L3 Cache TAG est intégré dans chaque cluster principal pour réduire la latence d'écoute. L3 Cache DATA est directement connecté au bus sur puce. Hydra Root Agent (Hydra Home Agent, HHA) est un module qui gère le protocole de cohérence du cache des systèmes multi-puces. POE_ICL est un accélérateur matériel configuré par le système, qui peut généralement être utilisé comme séquenceur de paquets, file d'attente de messages, distribution de messages ou pour implémenter des tâches spécifiques d'un certain cœur de processeur. De plus, chaque cluster super core est physiquement configuré avec un module Generic Interrupt Controller Distributor (GICD), compatible avec la spécification GICv4 d'ARM. Lorsqu'il existe plusieurs clusters super core dans un système monopuce ou multipuce, un seul GICD est visible pour le logiciel système.

Parlons de larchitecture numa sous Linux (explication détaillée avec images et texte)

Utilisation de numactl

Linux fournit une commande de réglage manuel numactl (non installée par défaut) La commande d'installation sur Ubuntu est la suivante :

sudo apt install numactl -y
Copier après la connexion

Tout d'abord, vous pouvez en apprendre davantage via man numactl ou numactl. --h La fonction des paramètres et le contenu de la sortie. Vérifiez l'état numérique du système :

numactl --hardware
Copier après la connexion

Exécutez les résultats suivants :

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
Copier après la connexion

Parlons de larchitecture numa sous Linux (explication détaillée avec images et texte)

Selon les résultats obtenus à partir de cette image et de la commande, vous pouvez voir que ce système a un total de 4 nœuds, chacun recevant 8 Processeurs et mémoire 16G. Ce qu'il faut noter ici, c'est que le cache L3 partagé par le CPU recevra également lui-même l'espace correspondant. Vous pouvez vérifier l'état de numa via la commande numastat. Le contenu de la valeur de retour :

numa_hit : Il est destiné à allouer de la mémoire sur ce nœud, et le nombre de fois qu'elle a été allouée à partir de ce nœud ; allouer de la mémoire sur ce nœud, mais elle a finalement été allouée depuis d'autres nœuds. Le nombre d'allocations

numa_foreign : C'est le nombre de fois que la mémoire est allouée depuis ce nœud lorsqu'elle est destinée à être allouée sur d'autres nœuds ; interleave_hit : le nombre de fois que la mémoire est allouée depuis ce nœud en utilisant la stratégie d'entrelacement

local_node : Le processus sur ce nœud est alloué depuis ce nœud Le nombre de fois alloué sur le nœud

other_node : C'est le nombre de fois d'autres processus de nœud sont alloués sur le nœud

Remarque : si la valeur numa_miss s'avère relativement élevée, cela signifie que la stratégie d'allocation doit être ajustée. Par exemple, l'association de processus spécifiée est liée au processeur spécifié, améliorant ainsi le taux d'accès à la mémoire.

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
Copier après la connexion

NUMA stratégie d'allocation de mémoire

--localalloc ou -l : spécifie que le processus demande une allocation de mémoire au nœud local. --membind=nodes ou -m nodes : Spécifie que le processus ne peut demander une allocation de mémoire qu'aux nœuds spécifiés. --preferred=node : Spécifiez un nœud recommandé pour obtenir de la mémoire. Si l'acquisition échoue, essayez un autre nœud. --interleave=nodes ou -i nodes : Spécifie que le processus demande de manière entrelacée une allocation de mémoire aux nœuds spécifiés à l'aide de l'algorithme round robin.

 numactl --interleave=all mongod -f /etc/mongod.conf
Copier après la connexion

因为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
Copier après la connexion

相关推荐:《Linux视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

À quoi sert Linux? À quoi sert Linux? Apr 12, 2025 am 12:20 AM

Linux convient aux serveurs, aux environnements de développement et aux systèmes intégrés. 1. En tant que système d'exploitation de serveurs, Linux est stable et efficace, et est souvent utilisé pour déployer des applications à haute monnaie. 2. En tant qu'environnement de développement, Linux fournit des outils de ligne de commande efficaces et des systèmes de gestion des packages pour améliorer l'efficacité du développement. 3. Dans les systèmes intégrés, Linux est léger et personnalisable, adapté aux environnements avec des ressources limitées.

Comment démarrer Apache Comment démarrer Apache Apr 13, 2025 pm 01:06 PM

Les étapes pour démarrer Apache sont les suivantes: Installez Apache (Commande: Sudo apt-get install Apache2 ou téléchargez-le à partir du site officiel) Start Apache (Linux: Sudo SystemCTL Démarrer Apache2; Windows: Cliquez avec le bouton droit sur le service "APACHE2.4" et SELECT ") Vérifiez si elle a été lancée (Linux: SUDO SYSTEMCTL STATURE APACHE2; (Facultatif, Linux: Sudo SystemCTL

Que faire si le port Apache80 est occupé Que faire si le port Apache80 est occupé Apr 13, 2025 pm 01:24 PM

Lorsque le port Apache 80 est occupé, la solution est la suivante: découvrez le processus qui occupe le port et fermez-le. Vérifiez les paramètres du pare-feu pour vous assurer qu'Apache n'est pas bloqué. Si la méthode ci-dessus ne fonctionne pas, veuillez reconfigurer Apache pour utiliser un port différent. Redémarrez le service Apache.

Comment surveiller les performances de Nginx SSL sur Debian Comment surveiller les performances de Nginx SSL sur Debian Apr 12, 2025 pm 10:18 PM

Cet article décrit comment surveiller efficacement les performances SSL des serveurs Nginx sur les systèmes Debian. Nous utiliserons NginxExporter pour exporter des données d'état NGINX à Prometheus, puis l'afficher visuellement via Grafana. Étape 1: Configuration de Nginx Tout d'abord, nous devons activer le module Stub_Status dans le fichier de configuration NGINX pour obtenir les informations d'état de Nginx. Ajoutez l'extrait suivant dans votre fichier de configuration Nginx (généralement situé dans /etc/nginx/nginx.conf ou son fichier incluant): emplacement / nginx_status {Stub_status

Comment commencer la surveillance d'Oracle Comment commencer la surveillance d'Oracle Apr 12, 2025 am 06:00 AM

Les étapes pour démarrer un écouteur Oracle sont les suivantes: cochez l'état de l'écouteur (en utilisant la commande LSNRCTL Status) pour Windows, démarrez le service "TNS Écouteur" dans Oracle Services Manager pour Linux et Unix, utilisez la commande LSNRCTL LSNRCTL pour démarrer l'auditeur pour exécuter la commande LSNRCTL STAT

Comment configurer un bac de recyclage dans le système Debian Comment configurer un bac de recyclage dans le système Debian Apr 12, 2025 pm 10:51 PM

Cet article présente deux méthodes de configuration d'un bac de recyclage dans un système Debian: une interface graphique et une ligne de commande. Méthode 1: Utilisez l'interface graphique Nautilus pour ouvrir le gestionnaire de fichiers: Recherchez et démarrez le gestionnaire de fichiers Nautilus (généralement appelé "fichier") dans le menu de bureau ou d'application. Trouvez le bac de recyclage: recherchez le dossier de bac de recyclage dans la barre de navigation gauche. S'il n'est pas trouvé, essayez de cliquer sur "Autre emplacement" ou "ordinateur" pour rechercher. Configurer les propriétés du bac de recyclage: cliquez avec le bouton droit sur "Recycler le bac" et sélectionnez "Propriétés". Dans la fenêtre Propriétés, vous pouvez ajuster les paramètres suivants: Taille maximale: Limitez l'espace disque disponible dans le bac de recyclage. Temps de rétention: définissez la préservation avant que le fichier ne soit automatiquement supprimé dans le bac de recyclage

Comment redémarrer le serveur Apache Comment redémarrer le serveur Apache Apr 13, 2025 pm 01:12 PM

Pour redémarrer le serveur Apache, suivez ces étapes: Linux / MacOS: Exécutez Sudo SystemCTL Restart Apache2. Windows: Exécutez net stop apache2.4 puis net start apache2.4. Exécuter netstat -a | Findstr 80 pour vérifier l'état du serveur.

Comment optimiser les performances de Debian Readdir Comment optimiser les performances de Debian Readdir Apr 13, 2025 am 08:48 AM

Dans Debian Systems, les appels du système ReadDir sont utilisés pour lire le contenu des répertoires. Si ses performances ne sont pas bonnes, essayez la stratégie d'optimisation suivante: simplifiez le nombre de fichiers d'annuaire: divisez les grands répertoires en plusieurs petits répertoires autant que possible, en réduisant le nombre d'éléments traités par appel ReadDir. Activer la mise en cache de contenu du répertoire: construire un mécanisme de cache, mettre à jour le cache régulièrement ou lorsque le contenu du répertoire change et réduire les appels fréquents à Readdir. Les caches de mémoire (telles que Memcached ou Redis) ou les caches locales (telles que les fichiers ou les bases de données) peuvent être prises en compte. Adoptez une structure de données efficace: si vous implémentez vous-même la traversée du répertoire, sélectionnez des structures de données plus efficaces (telles que les tables de hachage au lieu de la recherche linéaire) pour stocker et accéder aux informations du répertoire

See all articles