mem: warn user when running without NUMA support
[dpdk.git] / lib / librte_eal / linux / eal / eal_memory.c
index 23fe441..39cd359 100644 (file)
@@ -50,6 +50,7 @@
 #include "eal_internal_cfg.h"
 #include "eal_filesystem.h"
 #include "eal_hugepages.h"
+#include "eal_options.h"
 
 #define PFN_MASK_SIZE  8
 
@@ -2105,7 +2106,8 @@ memseg_primary_init_32(void)
                socket_id = rte_socket_id_by_idx(i);
 
 #ifndef RTE_EAL_NUMA_AWARE_HUGEPAGES
-               if (socket_id > 0)
+               /* we can still sort pages by socket in legacy mode */
+               if (!internal_config.legacy_mem && socket_id > 0)
                        break;
 #endif
 
@@ -2286,7 +2288,8 @@ memseg_primary_init(void)
                        int socket_id = rte_socket_id_by_idx(i);
 
 #ifndef RTE_EAL_NUMA_AWARE_HUGEPAGES
-                       if (socket_id > 0)
+                       /* we can still sort pages by socket in legacy mode */
+                       if (!internal_config.legacy_mem && socket_id > 0)
                                break;
 #endif
                        memtypes[cur_type].page_sz = hugepage_sz;
@@ -2445,6 +2448,13 @@ rte_eal_memseg_init(void)
        } else {
                RTE_LOG(ERR, EAL, "Cannot get current resource limits\n");
        }
+#ifndef RTE_EAL_NUMA_AWARE_HUGEPAGES
+       if (!internal_config.legacy_mem && rte_socket_count() > 1) {
+               RTE_LOG(WARNING, EAL, "DPDK is running on a NUMA system, but is compiled without NUMA support.\n");
+               RTE_LOG(WARNING, EAL, "This will have adverse consequences for performance and usability.\n");
+               RTE_LOG(WARNING, EAL, "Please use --"OPT_LEGACY_MEM" option, or recompile with NUMA support.\n");
+       }
+#endif
 
        return rte_eal_process_type() == RTE_PROC_PRIMARY ?
 #ifndef RTE_ARCH_64