but no mounted hugetlbfs found for that size
阿新 • • 發佈:2020-09-01
[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 device0000: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; } ...... ...... }