Y at-il une limite sur le nombre d'entrées hugepage qui peuvent être stockées dans la TLB

voix
0

Je suis en train d'analyser les performances de booste réseau les machines virtuelles obtiennent quand ils utilisent hugepages. Pour cela, je configuré l'hyperviseur d'avoir plusieurs hugepages 1G (36) en changeant la ligne de commande sans tête et en redémarrant et lors du lancement des machines virtuelles je me suis assuré les hugepages étaient transmises aux machines virtuelles. Lors du lancement 8 machines virtuelles (chacune avec 2 1G pages énormes) et l'exécution des tests de débit de réseau entre eux, il a été constaté que le débit était considérablement plus faible que lors de l'exécution sans hugepages. Cela m'a fait demander si elle avait quelque chose à voir avec le nombre de hugepages que j'utilisais. Y at-il une limite au nombre de 1G hugepages qui peuvent être référencées en utilisant la TLB et si oui, est-il inférieur à la limite des pages de taille régulière? Comment puis-je savoir ces informations. Dans ce scénario, j'utilisais un système Ivy Bridge, et en utilisant la commande CPUID, j'ai vu quelque chose comme

cache and TLB information (2):
  0x63: data TLB: 1G pages, 4-way, 4 entries
  0x03: data TLB: 4K pages, 4-way, 64 entries
  0x76: instruction TLB: 2M/4M pages, fully, 8 entries
  0xff: cache data is in CPUID 4
  0xb5: instruction TLB: 4K, 8-way, 64 entries
  0xf0: 64 byte prefetching
  0xc1: L2 TLB: 4K/2M pages, 8-way, 1024 entries

Est-ce que cela signifie que je peux avoir seulement 4 1G applications de hugepage dans le TLB à tout moment?

Créé 07/11/2018 à 20:21
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
2

Oui bien sûr. Ayant une limite supérieure du nombre illimité d'entrées TLB nécessiterait une quantité illimitée de l'espace physique dans la matrice du processeur.

Chaque TLB dans chaque architecture a une limite supérieure du nombre d'entrées qu'il peut contenir.

Pour le cas x86 ce nombre est inférieur à ce que vous comptiez: il est 4.
Il était 4 dans votre Ivy Bridge et il est encore 4 dans mon Kaby Lake, quatre générations plus tard.

Il convient de noter que 4 entrées couvrent 4GiB de RAM (4x1GiB), qui est semble suffisante pour gérer la mise en réseau si correctement utilisé .
Enfin, TLB sont les ressources de base , chaque noyau a son ensemble de TLB.
Si vous désactivez SMT (par exemple Intel Hyper - Threading) ou d' affecter les deux fils sur un noyau à la même machine virtuelle, les machines virtuelles ne sera pas en concurrence pour les entrées TLB.

Toutefois , chaque machine virtuelle ne peut avoir dans la plupart des entrées de page en cache énorme 4xc, où C est le nombre de cœurs dédiés à cette machine virtuelle.
La capacité de la machine virtuelle d'exploiter pleinement ces entrées dépend de la façon dont le système d'exploitation hôte, l'hyper-visière et le travail de l' OS invité ensemble et sur la mise en mémoire de l'application d'invité d'intérêt (pages partagées entre les noyaux ont dupliqué entrées TLB dans chaque noyau ).
Il est difficile (presque impossible?) D'utiliser de manière transparente pages 1GiB, je ne suis pas sûr de savoir comment l'hyper-visière et la machine virtuelle vont utiliser ces pages - je dirais que vous avez besoin d'un soutien spécifique pour cela , mais je ne suis pas sûr.

Comme Peter Cordes a noté, pages 1GiB utilisent un seul niveau TLB (et Skylake, apparemment , il y a aussi un deuxième niveau TLB avec 16 entrées pour les pages 1 Go). Un premier coup d'1GiB TLB se traduira par une promenade de la page il est donc très important que tous les logiciels impliqués utilisez le code de la page Connaisseur.

Créé 08/11/2018 à 09:57
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more