1. 程式人生 > 實用技巧 >but no mounted hugetlbfs found for that size

but no mounted hugetlbfs found for that size

[root@localhost memzone]# build/app/helloworld -c 0xf -n 4 
EAL: Detected 128 lcore(s)
EAL: Detected 4 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: 256 hugepages of size 2097152 (2MB)reserved, but no mounted hugetlbfs found for that size
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: PCI device 
0000:05:00.0 on NUMA socket 0 EAL: probe driver: 19e5:200 net_hinic EAL: using IOMMU type 1 (Type 1) net_hinic: Initializing pf hinic-0000:05:00.0 in primary proces

[root@localhost dpdk-19.11]# ls /sys/kernel/mm/hugepages
hugepages-2048kB  hugepages-524288kB
[root@localhost dpdk-19.11]# 

[root@localhost dpdk-19.11
]# mount | grep huge cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel,pagesize=512M) none on /mnt/huge type hugetlbfs (rw,relatime,seclabel,pagesize=512M) ---掛了多個512M [root@localhost dpdk-19.11]# mkdir -p /mnt/huge_2M [root@localhost dpdk
-19.11]# umount /mnt/huge [root@localhost dpdk-19.11]# mount | grep huge cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel,pagesize=512M) [root@localhost dpdk-19.11]# mount -t hugetlbfs none /mnt/huge_2M -o pagesize=2MB [root@localhost dpdk-19.11]# mount | grep huge cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel,pagesize=512M) none on /mnt/huge_2M type hugetlbfs (rw,relatime,seclabel,pagesize=2M) [root@localhost dpdk-19.11]#

 /* first, check if we have a mountpoint */
                if (get_hugepage_dir(hpi->hugepage_sz,
                        hpi->hugedir, sizeof(hpi->hugedir)) < 0) {
                        uint32_t num_pages;

                        num_pages = get_num_hugepages(dirent->d_name);
                      if (num_pages > 0)
                                RTE_LOG(NOTICE, EAL,
                                        "%" PRIu32 " hugepages of size "
                                        "%" PRIu64 " reserved, but no mounted "
                                        "hugetlbfs found for that size\n",
                                        num_pages, hpi->hugepage_sz)

nt
eal_hugepage_info_init(void)
{
    const char dirent_start_text[] = "hugepages-";
    const size_t dirent_start_len = sizeof(dirent_start_text) - 1;
    unsigned i, num_sizes = 0;
    DIR *dir;
    struct dirent *dirent;
 
    dir = opendir(sys_dir_path);  //sys_dir_path[] = "/sys/kernel/mm/hugepages"
    if (dir == NULL) {
        RTE_LOG(ERR, EAL,
            "Cannot open directory %s to read system hugepage info\n",
            sys_dir_path);
        return -1;
    }
 
    /*遍歷/sys/kernel/mm/hugepages目錄下以“hugepages-”開頭的目錄*/
    for (dirent = readdir(dir); dirent != NULL; dirent = readdir(dir)) {
        struct hugepage_info *hpi;
 
        if (strncmp(dirent->d_name, dirent_start_text,
                dirent_start_len) != 0)
            continue;
 
        if (num_sizes >= MAX_HUGEPAGE_SIZES)
            break;
 
        /*internal_config為DPDK全域性變數*/
        hpi = &internal_config.hugepage_info[num_sizes];
 
        /*儲存hugepage的大小,最多儲存三種大小,一般也只用到了1G,2M*/
        hpi->hugepage_sz =
            rte_str_to_size(&dirent->d_name[dirent_start_len]);
 
        /*get_hugepage_dir函式會到/proc/mounts裡去尋找對應大小hugepage頁掛載的目錄 */
        hpi->hugedir = get_hugepage_dir(hpi->hugepage_sz);
 
        /* first, check if we have a mountpoint */
        if (hpi->hugedir == NULL) {
            uint32_t num_pages;
 
            num_pages = get_num_hugepages(dirent->d_name);
            if (num_pages > 0)
                RTE_LOG(NOTICE, EAL,
                    "%" PRIu32 " hugepages of size "
                    "%" PRIu64 " reserved, but no mounted "
                    "hugetlbfs found for that size\n",
                    num_pages, hpi->hugepage_sz);
            continue;
        }
......
......
}