Siège readme lion Shu OK1043A-C dpdk Ambient Experience

Feiling incorporé en Juin de cette année lancé à bord de noyau --FET1043A-C avec la conception du processeur LS1043A QorIQ® de NXP, l'architecture avec quatre ARMv8-A-A53 Cortex cadencé à noyaux 1.6G, faible consommation d'énergie, économes en énergie. Jusqu'à 10 Go de SerDes à quatre canaux comprend une variété de configurations flexibles, a joué un rendement de processeur de réseau LS1043A QorIQ® dans la mesure maximale pour soutenir la conception de plancher Feiling, l'utilisation d'un Gigabit, Gigabit six de conception, avec un processeur interne Les moteurs d'accélération DPAA1, combinée à grande capacité mémoire de 2 Go DDR4, la performance du réseau est tout simplement un monstre.

Siège readme lion Shu OK1043A-C dpdk Ambient Experience

Matériel si bon, le noyau Linux traditionnel aussi si son bon match? La réponse est non.

Les raisons sont les aspects suivants:

❶ la gestion des interruptions. Quand une grande quantité de paquet de réseau arrive, produira la demande d'interruption de matériel fréquent, le matériel d'interruption priorité inférieure peut interrompre interruption avant ou pendant douce l'exécution d'un appel système, si cela fréquemment interrompu, il produira plus les frais généraux de haute performance.

❷ copie de la mémoire. Dans des circonstances normales, un paquet de réseau à partir de la carte réseau à l'application passe par le processus suivant: les données transmises par le tampon du noyau pour ouvrir la carte via le DMA, etc., puis copiés à partir de l'espace du noyau vers l'espace en mode utilisateur, une pile de protocoles du noyau Linux cette fois le fonctionnement même de consommer représentait 57,1% du traitement global du paquet de données.

❸ changement de contexte. Arrivent souvent des interruptions matérielles et interruption logicielle peut appeler à tout moment pour saisir le fonctionnement du système, qui va générer beaucoup de changement de contexte au-dessus. En outre, dans le cadre de la conception à base de serveur multi-thread, la programmation entre les threads ont aussi un contexte fréquent de commutation en tête, la même énergie compétitive verrouillage est également un problème très grave.

❹ rupture localisée. Aujourd'hui, plus processeur grand public, ce qui signifie que le traitement d'un paquet sur plusieurs noyaux de processeur peut, par exemple, un paquet peut être interrompu en cpu0, le traitement en mode noyau CPU1, processus en mode utilisateur CPU2, de sorte croix noyaux multiples, susceptibles de provoquer l'invalidation du cache du processeur, entraînant une défaillance localisée. Si l'architecture NUMA, mais entraînera la mémoire d'accès multi-NUMA, la performance a été grandement affectée.

❺ gestion de la mémoire. page de mémoire traditionnelle du serveur est de 4 Ko, afin d'améliorer la vitesse d'accès à la mémoire, ce qui évite défaut de cache, le cache peut augmenter la table de mappage d'entrée, mais cela aurait une incidence sur l'efficacité de récupération de la CPU.

Sur la base des questions ci-dessus, nous pouvons voir le noyau lui-même est un goulot d'étranglement très grand. Il est clair que la solution est de trouver des moyens de contourner le noyau. De nombreuses personnes âgées grâce à la recherche pionnière, dpdk se distinguent dans de nombreux programmes.

Siège readme lion Shu OK1043A-C dpdk Ambient Experience

Siège readme lion Shu OK1043A-C dpdk Ambient Experience

« Papier venir Zhongjue savoir que cette pratique est essentielle, » Vivons la prochaine dpdk par un exemple.

Tout d'abord, l'environnement dpdk, le besoin de modifier l'arborescence des périphériques, la configuration du réseau à l'état de l'utilisateur. Vous devez utiliser le fichier arborescence des périphériques:

OK10xx-linux-fs / flexbuild / build / linux / linux / arm64 / FSL-ls1043a-RDB-usdpaa.dtb

Le conseil de développement FSL-ls1043a-RDB-usdpaa.dtb copié dans le répertoire racine, un arbre de dispositif de remplacement utilise les commandes suivantes:

mv / run / media / mmcblk0p2 / fsl-ls1043a-RDB-sdk.dtb / run / media / mmcblk0p2 / fsl-ls1043a-RDB-sdk.dtb.bak

cp / fsl-ls1043a-RDB-usdpaa.dtb / run / media / mmcblk0p2 / boot

LN-s /run/media/mmcblk0p2/boot/fsl-ls1043a-rdb-usdpaa.dtb/run/media/mmcblk0p2/boot/fsl-ls1043a-rdb-sdk.dtb

reboot

Après le lancement réussi du conseil de développement pour remplacer Entrée: ifconfigfm1-mac1

Si vous êtes invité Devicenot a constaté que le succès a été remplacé.

Restaurer la configuration par défaut après l'achèvement du dpdk test:

cp / run / media / mmcblk0p2 / fsl-ls1043a-RDB-sdk.dtb.bak / run / media / mmcblk0p2 / fsl-ls1043a-RDB-sdk.dtb

reboot

Une fois la configuration du réseau en mode utilisateur, alors comment pouvons-nous les utiliser? utilisation ye TCP / UDP? Ne vous inquiétez pas si vous utilisez TCP ou UDP dans un dpdk de transplantation doivent également dpdk la pile. étape d'entrée, nous commençons à l'expérience d'un dpdk contient une routine de test de niveau 2 transmettre.

topologie de réseau la transmission couche comme indiqué ci-dessous:

Siège readme lion Shu OK1043A-C dpdk Ambient Experience

Utilisation plate-forme Port2 et Port3 OK1043A-C (correspondant FM1-mac3 et FM1-MAC4), et les données entre LinuxHost OK1012A-C vers l'avant. LinuxHost et OK1012A-C vous pouvez remplacer d'autres périphériques réseau.

Configuration OK1043A-C:

l2fwd-c 0xf -n 1 - -p 0xc -Q 1 --no-mac-mise à jour

paramètres

explication

-c

Utilisation Core 4-core 0xf de masque

-n

Canaux de mémoire

-p

Port masque 0xc utilisation binaire 1100 port3 port2

-q

Les paramètres par défaut de chaque numéro de base à 1

--no-mac-mise à jour

Sinon MAC non converti

Configuration OK1012A-C:

ifconfigeth0 192.168.1.200

tcpdump-i eth0 -vv -n -e

Configuration hôte Linux:

ifconfigeth0 192.168.1.120

sudomodprobe pktgen.ko

echo "add_deviceeth0"> / proc / net / pktgen / kpktgend_0

echo "dst_mac6e: 56: 7d: 85: ce: 4d"> / proc / net / pktgen / eth0

echo "dst192.168.1.200"> / proc / net / pktgen / eth0

echo "pkt_size64"> / proc / net / pktgen / eth0

echo "count1000000"> / proc / net / pktgen / eth0

echo "start"> / proc / net / pktgen / pgctrl

Nous allons envoyer hôte LinuxHost d'un million de paquets de 64 octets, testez capacité de transmission OK1043A-CDPDK de ces paquets.

Siège readme lion Shu OK1043A-C dpdk Ambient Experience

En regardant une information de l'imprimante série OK1043A-C, nous avons trouvé dpdk ont ​​tous les paquets reçus transmis complètement. En même temps, attention, vous constaterez que lorsque vous utilisez le transfert de données dpdk, la charge du processeur est élevée, comme cela a été dans le sondage de la couche d'application, voir doivent être abordées si des paquets.

Lien original: https://www.forlinx.com/article_view_267.html

Je suppose que tu aimes

Origine blog.51cto.com/14771158/2485451
conseillé
Classement