如何在内核和用户空间之间共享巨页

时间:2014-10-02 19:26:06

标签: linux-kernel shared-memory huge-pages

我知道如何在Linux内核中获取普通页面并使用基于此代码的mmap与用户进程共享:http://people.ee.ethz.ch/~arkeller/linux/multi/kernel_user_space_howto-8.html 现在我想将其扩展为使用 hugepages (2M)。

将备份共享内存的文件放在hugetlbfs文件系统中是否足够? 你能否指点我使用largepages的教程?

到目前为止的进展:  我使用hugeadm来启用大页面和透明的大页面,并添加了相应的grub配置。

stackoverflow上的

This post表示对alloc_pages使用以下参数

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

它没有用,因为/ proc / meminfo仍然说所有大页面都是免费的。

然后我改变了

vma->vm_flags |= VM_RESERVED;

vma->vm_flags |= VM_HUGETLB;

但发生以下错误:

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 

0 个答案:

没有答案