Comment partager hugepage entre le noyau et l'espace utilisateur

voix
1

Je sais comment obtenir des pages normales dans le noyau linux et partager avec processus utilisateur en utilisant mmap en fonction de ce code: http://people.ee.ethz.ch/~arkeller/linux/multi/kernel_user_space_howto-8.html Maintenant , je veux de l' étendre à utiliser hugepages (2M).

Est-ce suffisant pour mettre le fichier qui sauvegarde la mémoire partagée dans le système de fichiers hugetlbfs? Pouvez-vous indiquer aussi que je un tutoriel sur l'utilisation hugepages?

Progrès jusqu'à présent: j'utilisé hugeadm pour permettre hugepages et hugepages transparent et a ajouté les configs sans tête correspondants.

Ce poste sur stackoverflow dit d'utiliser les paramètres suivants pour alloc_pages

struct page *p = alloc_pages(GFP_TRANSHUGE, HPAGE_PMD_ORDER);

Il n'a pas fonctionné comme / proc / meminfo dit encore toutes les pages énormes sont gratuits.

Ensuite, je l'ai changé

vma->vm_flags |= VM_RESERVED;

à

vma->vm_flags |= VM_HUGETLB;

mais l'erreur suivante est arrivé:

Oct  4 15:43:50 masoud-VirtualBox kernel: [ 2756.091381] BUG: unable to handle kernel paging request at 00000000006f0082
Oct  4 15:43:50 masoud-VirtualBox kernel: [ 2756.091387] IP: [<ffffffff8119522e>] hugetlb_fault+0x3e/0x760
Oct  4 15:43:50 masoud-VirtualBox kernel: [ 2756.091394] PGD bde87067 PUD c2ad7067 PMD b79ca067 PTE 0
Oct  4 15:43:50 masoud-VirtualBox kernel: [ 2756.091399] Oops: 0000 [#1] SMP 
Créé 02/10/2014 à 20:26
source utilisateur
Dans d'autres langues...                            

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