在Linux中,通过虚拟文件系统“hugetlbfs”提供对大页面的访问。 libhugetlbfs库接口与hugetlbfs协同工作,提供更方便的特定应用程序级服务。
可以使用libhugetlbfs使现有应用程序为其所有malloc()调用使用hugepages。
要使用自动巨大页面malloc()function运行程序,我已经设置了以下环境variables。
现在我的新进程使用大页面(如果有的话),所有的malloc()内存。 但是当它执行fork()系统调用,并且系统上没有足够大的页面时,子程序将被SIGBUS终止。 这是因为当孩子试图更新malloc'd内存中的一些内存位置时,发生页面错误。 由于写时复制机制,系统会尝试将新的巨大页面分配给子页面来处理页面错误。 但是由于没有可用的大页面,内核会生成SIGBUS和错误。
我将不胜感激任何帮助/指针来解决SIGBUS丑陋的终结孩子,并造成核心。