2017-09-07 6 views
1

Jusqu'à présent, lorsque j'ai essayé d'utiliser un fichier dans/mnt/hugepages1G/en tant que support, j'ai des erreurs de segmentation. Cela fonctionne bien si j'utilise 2M superpages dans/mnt/hugepages/Puis-je utiliser des superpages 1G pour sauvegarder des mmaps partagés?

Je pense avoir lu quelque part que je ne trouve pas maintenant que Linux ne supporte que 2M pages pour la mémoire partagée? Mais je ne peux pas jurer. Impossible de le trouver dans la documentation.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/vm/hugetlbpage.txt?id=HEAD

$ hugeadm --pool liste prétend avoir les pages des deux 2M et 1G

Les commandes de montage ont réussi.

+0

Le doc du noyau énumère un grand nombre de conditions pour l'utilisation de pages énormes en mémoire partageable. Y compris le montage d'un système de fichiers avec une option * taille de page *, en étant membre d'un groupe d'utilisateurs spécifique, l'utilisation appropriée des fonctions * shxxx * et * mmap *. Avez-vous tout fait bien? –

+0

Je pense que ça vaut vraiment le coup d'être revérifié, alors je vais le faire maintenant. Merci. – Hal

Répondre

2

Pour la prochaine pauvre Bozo:

Vous pouvez certainement utiliser 1G superpages à dos mmaps partagés sur Linux x86-64.

J'ai obtenu des octets transférés entre les processus à travers un fichier 1G dans/mnt/hugepages1G correctement configuré et monté, en travaillant avec un noyau distro (ubu) 4.4. Il est plus fragile dans le sens où il est plus difficile d'obtenir le code correct ou vous obtenez SIGBUS etc paramètre de longueur et ftruncate taille de la région cartographiée semblent avoir besoin d'être multiples de la taille de la page lorsque la taille de la page est 1G - au moins Je pense que c'est ce qui le fait fonctionner. Aucune documentation à l'appui, et la page de manuel dit qu'il n'est pas nécessaire (mais peut-être pas de super pages à l'esprit).

La meilleure documentation est ici: https://lwn.net/Articles/375096/