DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ilya Maximets <i.maximets@samsung.com>
To: Hemant Agrawal <hemant.agrawal@nxp.com>,
	dev@dpdk.org, David Marchand <david.marchand@6wind.com>,
	Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>,
	Thomas Monjalon <thomas@monjalon.net>
Cc: Heetae Ahn <heetae82.ahn@samsung.com>,
	Yuanhan Liu <yliu@fridaylinux.org>,
	 Jianfeng Tan <jianfeng.tan@intel.com>,
	Neil Horman <nhorman@tuxdriver.com>,
	Yulong Pei <yulong.pei@intel.com>,
	Bruce Richardson <bruce.richardson@intel.com>,
	Jerin Jacob <jerin.jacob@caviumnetworks.com>
Subject: Re: [dpdk-dev] [PATCH v9 1/2] mem: balanced allocation of hugepages
Date: Thu, 29 Jun 2017 09:08:35 +0300	[thread overview]
Message-ID: <29378009-05d1-954b-fb20-edc84269c378@samsung.com> (raw)
In-Reply-To: <48da8415-8fa0-b8f4-0b0d-0965d8fb1315@samsung.com>

On 29.06.2017 08:48, Ilya Maximets wrote:
> On 29.06.2017 08:32, Hemant Agrawal wrote:
>> On 6/27/2017 3:54 PM, Ilya Maximets wrote:
>>> Currently EAL allocates hugepages one by one not paying attention
>>> from which NUMA node allocation was done.
>>>
>>> Such behaviour leads to allocation failure if number of available
>>> hugepages for application limited by cgroups or hugetlbfs and
>>> memory requested not only from the first socket.
>>>
>>> Example:
>>>     # 90 x 1GB hugepages availavle in a system
>>>
>>>     cgcreate -g hugetlb:/test
>>>     # Limit to 32GB of hugepages
>>>     cgset -r hugetlb.1GB.limit_in_bytes=34359738368 test
>>>     # Request 4GB from each of 2 sockets
>>>     cgexec -g hugetlb:test testpmd --socket-mem=4096,4096 ...
>>>
>>>     EAL: SIGBUS: Cannot mmap more hugepages of size 1024 MB
>>>     EAL: 32 not 90 hugepages of size 1024 MB allocated
>>>     EAL: Not enough memory available on socket 1!
>>>          Requested: 4096MB, available: 0MB
>>>     PANIC in rte_eal_init():
>>>     Cannot init memory
>>>
>>>     This happens beacause all allocated pages are
>>>     on socket 0.
>>>
>>> Fix this issue by setting mempolicy MPOL_PREFERRED for each hugepage
>>> to one of requested nodes using following schema:
>>>
>>>     1) Allocate essential hugepages:
>>>         1.1) Allocate as many hugepages from numa N to
>>>              only fit requested memory for this numa.
>>>         1.2) repeat 1.1 for all numa nodes.
>>>     2) Try to map all remaining free hugepages in a round-robin
>>>        fashion.
>>>     3) Sort pages and choose the most suitable.
>>>
>>> In this case all essential memory will be allocated and all remaining
>>> pages will be fairly distributed between all requested nodes.
>>>
>>> New config option RTE_EAL_NUMA_AWARE_HUGEPAGES introduced and
>>> enabled by default for linuxapp except armv7 and dpaa2.
>>> Enabling of this option adds libnuma as a dependency for EAL.
>>>
>>> Fixes: 77988fc08dc5 ("mem: fix allocating all free hugepages")
>>>
>>> Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
>>> ---
>>>  config/common_base                        |   1 +
>>>  config/common_linuxapp                    |   1 +
>>>  config/defconfig_arm-armv7a-linuxapp-gcc  |   3 +
>>>  config/defconfig_arm64-dpaa2-linuxapp-gcc |   3 +
>>>  lib/librte_eal/linuxapp/eal/Makefile      |   3 +
>>>  lib/librte_eal/linuxapp/eal/eal_memory.c  | 120 ++++++++++++++++++++++++++++--
>>>  mk/rte.app.mk                             |   3 +
>>>  7 files changed, 126 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/config/common_base b/config/common_base
>>> index f6aafd1..660588a 100644
>>> --- a/config/common_base
>>> +++ b/config/common_base
>>> @@ -103,6 +103,7 @@ CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
>>>  CONFIG_RTE_EAL_IGB_UIO=n
>>>  CONFIG_RTE_EAL_VFIO=n
>>>  CONFIG_RTE_MALLOC_DEBUG=n
>>> +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n
>>>
>>>  #
>>>  # Recognize/ignore the AVX/AVX512 CPU flags for performance/power testing.
>>> diff --git a/config/common_linuxapp b/config/common_linuxapp
>>> index b3cf41b..64bef87 100644
>>> --- a/config/common_linuxapp
>>> +++ b/config/common_linuxapp
>>> @@ -35,6 +35,7 @@
>>>  CONFIG_RTE_EXEC_ENV="linuxapp"
>>>  CONFIG_RTE_EXEC_ENV_LINUXAPP=y
>>>
>>> +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
>>>  CONFIG_RTE_EAL_IGB_UIO=y
>>>  CONFIG_RTE_EAL_VFIO=y
>>>  CONFIG_RTE_KNI_KMOD=y
>>> diff --git a/config/defconfig_arm-armv7a-linuxapp-gcc b/config/defconfig_arm-armv7a-linuxapp-gcc
>>> index 19607eb..e06b1d4 100644
>>> --- a/config/defconfig_arm-armv7a-linuxapp-gcc
>>> +++ b/config/defconfig_arm-armv7a-linuxapp-gcc
>>> @@ -47,6 +47,9 @@ CONFIG_RTE_ARCH_STRICT_ALIGN=y
>>>  CONFIG_RTE_TOOLCHAIN="gcc"
>>>  CONFIG_RTE_TOOLCHAIN_GCC=y
>>>
>>> +# NUMA is not supported on ARM
>>> +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n
>>> +
>>>  # ARM doesn't have support for vmware TSC map
>>>  CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n
>>>
>>> diff --git a/config/defconfig_arm64-dpaa2-linuxapp-gcc b/config/defconfig_arm64-dpaa2-linuxapp-gcc
>>> index 2304ab6..f78449d 100644
>>> --- a/config/defconfig_arm64-dpaa2-linuxapp-gcc
>>> +++ b/config/defconfig_arm64-dpaa2-linuxapp-gcc
>>> @@ -45,6 +45,9 @@ CONFIG_RTE_CACHE_LINE_SIZE=64
>>>
>>>  CONFIG_RTE_PKTMBUF_HEADROOM=256
>>>
>>> +# Doesn't support NUMA
>>> +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y
>>> +
>>
>> DPAA2 does not support NUMA so,
>> CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n
> 
> Oh, sorry. Just typo.
> Thanks for catching this.

Fixed. Hemant, please, check the new version (v10).

> Sergio, I'll send v10 with only this change and will keep your
> acked-by because the change is trivial.
> 
>>>  #
>>>  # Compile Support Libraries for DPAA2
>>>  #
>>> diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile
>>> index 640afd0..8651e27 100644
>>> --- a/lib/librte_eal/linuxapp/eal/Makefile
>>> +++ b/lib/librte_eal/linuxapp/eal/Makefile
>>> @@ -50,6 +50,9 @@ LDLIBS += -ldl
>>>  LDLIBS += -lpthread
>>>  LDLIBS += -lgcc_s
>>>  LDLIBS += -lrt
>>> +ifeq ($(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),y)
>>> +LDLIBS += -lnuma
>>> +endif
>>>
>>>  # specific to linuxapp exec-env
>>>  SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) := eal.c
>>> diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c
>>> index e17c9cb..647d89c 100644
>>> --- a/lib/librte_eal/linuxapp/eal/eal_memory.c
>>> +++ b/lib/librte_eal/linuxapp/eal/eal_memory.c
>>> @@ -54,6 +54,10 @@
>>>  #include <sys/time.h>
>>>  #include <signal.h>
>>>  #include <setjmp.h>
>>> +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES
>>> +#include <numa.h>
>>> +#include <numaif.h>
>>> +#endif
>>>
>>>  #include <rte_log.h>
>>>  #include <rte_memory.h>
>>> @@ -348,6 +352,14 @@ static int huge_wrap_sigsetjmp(void)
>>>      return sigsetjmp(huge_jmpenv, 1);
>>>  }
>>>
>>> +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES
>>> +/* Callback for numa library. */
>>> +void numa_error(char *where)
>>> +{
>>> +    RTE_LOG(ERR, EAL, "%s failed: %s\n", where, strerror(errno));
>>> +}
>>> +#endif
>>> +
>>>  /*
>>>   * Mmap all hugepages of hugepage table: it first open a file in
>>>   * hugetlbfs, then mmap() hugepage_sz data in it. If orig is set, the
>>> @@ -356,18 +368,78 @@ static int huge_wrap_sigsetjmp(void)
>>>   * map continguous physical blocks in contiguous virtual blocks.
>>>   */
>>>  static unsigned
>>> -map_all_hugepages(struct hugepage_file *hugepg_tbl,
>>> -        struct hugepage_info *hpi, int orig)
>>> +map_all_hugepages(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi,
>>> +          uint64_t *essential_memory __rte_unused, int orig)
>>>  {
>>>      int fd;
>>>      unsigned i;
>>>      void *virtaddr;
>>>      void *vma_addr = NULL;
>>>      size_t vma_len = 0;
>>> +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES
>>> +    int node_id = -1;
>>> +    int essential_prev = 0;
>>> +    int oldpolicy;
>>> +    struct bitmask *oldmask = numa_allocate_nodemask();
>>> +    bool have_numa = true;
>>> +    unsigned long maxnode = 0;
>>> +
>>> +    /* Check if kernel supports NUMA. */
>>> +    if (numa_available() != 0) {
>>> +        RTE_LOG(DEBUG, EAL, "NUMA is not supported.\n");
>>> +        have_numa = false;
>>> +    }
>>> +
>>> +    if (orig && have_numa) {
>>> +        RTE_LOG(DEBUG, EAL, "Trying to obtain current memory policy.\n");
>>> +        if (get_mempolicy(&oldpolicy, oldmask->maskp,
>>> +                  oldmask->size + 1, 0, 0) < 0) {
>>> +            RTE_LOG(ERR, EAL,
>>> +                "Failed to get current mempolicy: %s. "
>>> +                "Assuming MPOL_DEFAULT.\n", strerror(errno));
>>> +            oldpolicy = MPOL_DEFAULT;
>>> +        }
>>> +        for (i = 0; i < RTE_MAX_NUMA_NODES; i++)
>>> +            if (internal_config.socket_mem[i])
>>> +                maxnode = i + 1;
>>> +    }
>>> +#endif
>>>
>>>      for (i = 0; i < hpi->num_pages[0]; i++) {
>>>          uint64_t hugepage_sz = hpi->hugepage_sz;
>>>
>>> +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES
>>> +        if (maxnode) {
>>> +            unsigned int j;
>>> +
>>> +            for (j = 0; j < maxnode; j++)
>>> +                if (essential_memory[j])
>>> +                    break;
>>> +
>>> +            if (j == maxnode) {
>>> +                node_id = (node_id + 1) % maxnode;
>>> +                while (!internal_config.socket_mem[node_id]) {
>>> +                    node_id++;
>>> +                    node_id %= maxnode;
>>> +                }
>>> +                essential_prev = 0;
>>> +            } else {
>>> +                node_id = j;
>>> +                essential_prev = essential_memory[j];
>>> +
>>> +                if (essential_memory[j] < hugepage_sz)
>>> +                    essential_memory[j] = 0;
>>> +                else
>>> +                    essential_memory[j] -= hugepage_sz;
>>> +            }
>>> +
>>> +            RTE_LOG(DEBUG, EAL,
>>> +                "Setting policy MPOL_PREFERRED for socket %d\n",
>>> +                node_id);
>>> +            numa_set_preferred(node_id);
>>> +        }
>>> +#endif
>>> +
>>>          if (orig) {
>>>              hugepg_tbl[i].file_id = i;
>>>              hugepg_tbl[i].size = hugepage_sz;
>>> @@ -422,7 +494,7 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl,
>>>          if (fd < 0) {
>>>              RTE_LOG(DEBUG, EAL, "%s(): open failed: %s\n", __func__,
>>>                      strerror(errno));
>>> -            return i;
>>> +            goto out;
>>>          }
>>>
>>>          /* map the segment, and populate page tables,
>>> @@ -433,7 +505,7 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl,
>>>              RTE_LOG(DEBUG, EAL, "%s(): mmap failed: %s\n", __func__,
>>>                      strerror(errno));
>>>              close(fd);
>>> -            return i;
>>> +            goto out;
>>>          }
>>>
>>>          if (orig) {
>>> @@ -458,7 +530,12 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl,
>>>                  munmap(virtaddr, hugepage_sz);
>>>                  close(fd);
>>>                  unlink(hugepg_tbl[i].filepath);
>>> -                return i;
>>> +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES
>>> +                if (maxnode)
>>> +                    essential_memory[node_id] =
>>> +                        essential_prev;
>>> +#endif
>>> +                goto out;
>>>              }
>>>              *(int *)virtaddr = 0;
>>>          }
>>> @@ -469,7 +546,7 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl,
>>>              RTE_LOG(DEBUG, EAL, "%s(): Locking file failed:%s \n",
>>>                  __func__, strerror(errno));
>>>              close(fd);
>>> -            return i;
>>> +            goto out;
>>>          }
>>>
>>>          close(fd);
>>> @@ -478,6 +555,22 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl,
>>>          vma_len -= hugepage_sz;
>>>      }
>>>
>>> +out:
>>> +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES
>>> +    if (maxnode) {
>>> +        RTE_LOG(DEBUG, EAL,
>>> +            "Restoring previous memory policy: %d\n", oldpolicy);
>>> +        if (oldpolicy == MPOL_DEFAULT) {
>>> +            numa_set_localalloc();
>>> +        } else if (set_mempolicy(oldpolicy, oldmask->maskp,
>>> +                     oldmask->size + 1) < 0) {
>>> +            RTE_LOG(ERR, EAL, "Failed to restore mempolicy: %s\n",
>>> +                strerror(errno));
>>> +            numa_set_localalloc();
>>> +        }
>>> +    }
>>> +    numa_free_cpumask(oldmask);
>>> +#endif
>>>      return i;
>>>  }
>>>
>>> @@ -562,6 +655,11 @@ find_numasocket(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi)
>>>              if (hugepg_tbl[i].orig_va == va) {
>>>                  hugepg_tbl[i].socket_id = socket_id;
>>>                  hp_count++;
>>> +#ifdef RTE_EAL_NUMA_AWARE_HUGEPAGES
>>> +                RTE_LOG(DEBUG, EAL,
>>> +                    "Hugepage %s is on socket %d\n",
>>> +                    hugepg_tbl[i].filepath, socket_id);
>>> +#endif
>>>              }
>>>          }
>>>      }
>>> @@ -1000,6 +1098,11 @@ rte_eal_hugepage_init(void)
>>>
>>>      huge_register_sigbus();
>>>
>>> +    /* make a copy of socket_mem, needed for balanced allocation. */
>>> +    for (i = 0; i < RTE_MAX_NUMA_NODES; i++)
>>> +        memory[i] = internal_config.socket_mem[i];
>>> +
>>> +
>>>      /* map all hugepages and sort them */
>>>      for (i = 0; i < (int)internal_config.num_hugepage_sizes; i ++){
>>>          unsigned pages_old, pages_new;
>>> @@ -1017,7 +1120,8 @@ rte_eal_hugepage_init(void)
>>>
>>>          /* map all hugepages available */
>>>          pages_old = hpi->num_pages[0];
>>> -        pages_new = map_all_hugepages(&tmp_hp[hp_offset], hpi, 1);
>>> +        pages_new = map_all_hugepages(&tmp_hp[hp_offset], hpi,
>>> +                          memory, 1);
>>>          if (pages_new < pages_old) {
>>>              RTE_LOG(DEBUG, EAL,
>>>                  "%d not %d hugepages of size %u MB allocated\n",
>>> @@ -1060,7 +1164,7 @@ rte_eal_hugepage_init(void)
>>>                sizeof(struct hugepage_file), cmp_physaddr);
>>>
>>>          /* remap all hugepages */
>>> -        if (map_all_hugepages(&tmp_hp[hp_offset], hpi, 0) !=
>>> +        if (map_all_hugepages(&tmp_hp[hp_offset], hpi, NULL, 0) !=
>>>              hpi->num_pages[0]) {
>>>              RTE_LOG(ERR, EAL, "Failed to remap %u MB pages\n",
>>>                      (unsigned)(hpi->hugepage_sz / 0x100000));
>>> diff --git a/mk/rte.app.mk b/mk/rte.app.mk
>>> index bcaf1b3..4fe22d1 100644
>>> --- a/mk/rte.app.mk
>>> +++ b/mk/rte.app.mk
>>> @@ -186,6 +186,9 @@ ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),n)
>>>  # The static libraries do not know their dependencies.
>>>  # So linking with static library requires explicit dependencies.
>>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL)            += -lrt
>>> +ifeq ($(CONFIG_RTE_EXEC_ENV_LINUXAPP)$(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),yy)
>>> +_LDLIBS-$(CONFIG_RTE_LIBRTE_EAL)            += -lnuma
>>> +endif
>>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED)          += -lm
>>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_SCHED)          += -lrt
>>>  _LDLIBS-$(CONFIG_RTE_LIBRTE_METER)          += -lm
>>>
>>
>>
>>
>>
>>

  reply	other threads:[~2017-06-29  6:08 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20170216130139eucas1p2512567d6f5db9eaac5ee840b56bf920a@eucas1p2.samsung.com>
2017-02-16 13:01 ` [dpdk-dev] [PATCH] " Ilya Maximets
2017-02-16 13:26   ` Tan, Jianfeng
2017-02-16 13:55     ` Ilya Maximets
2017-02-16 13:57       ` Ilya Maximets
2017-02-16 13:31   ` Bruce Richardson
2017-03-06  9:34   ` Ilya Maximets
2017-03-08 13:46     ` Sergio Gonzalez Monroy
2017-03-09 12:57       ` Ilya Maximets
2017-03-27 13:01         ` Sergio Gonzalez Monroy
2017-03-27 14:43           ` Ilya Maximets
2017-04-07 15:14             ` Ilya Maximets
2017-04-07 15:44               ` Thomas Monjalon
2017-04-10  7:11                 ` Ilya Maximets
2017-04-10  7:51                   ` Sergio Gonzalez Monroy
2017-04-10  8:05                     ` Ilya Maximets
     [not found]   ` <CGME20170410080425eucas1p27fd424ae58151f13b1a7a3723aa4ad1e@eucas1p2.samsung.com>
2017-04-10  8:04     ` [dpdk-dev] [PATCH v2] " Ilya Maximets
2017-04-10 10:03       ` Thomas Monjalon
     [not found]       ` <CGME20170606062227eucas1p2c49a95fb0fe11a4cadd5b4ceeb9712b1@eucas1p2.samsung.com>
2017-06-06  6:22         ` [dpdk-dev] [PATCH v3 0/2] Balanced " Ilya Maximets
     [not found]           ` <CGME20170606062232eucas1p11d2c304a28353d32b93ddfbd134d4da9@eucas1p1.samsung.com>
2017-06-06  6:22             ` [dpdk-dev] [PATCH v3 1/2] mem: balanced " Ilya Maximets
     [not found]           ` <CGME20170606062237eucas1p1de58fdde1bff816e480e50308804ba7a@eucas1p1.samsung.com>
2017-06-06  6:22             ` [dpdk-dev] [PATCH v3 2/2] config: enable vhost numa awareness by default Ilya Maximets
     [not found]           ` <CGME20170606081359eucas1p2f7eafa1abc346c5bb910c783df1d1520@eucas1p2.samsung.com>
2017-06-06  8:13             ` [dpdk-dev] [PATCH v4 0/2] Balanced allocation of hugepages Ilya Maximets
     [not found]               ` <CGME20170606081403eucas1p20c561b9177a51cfe58dd53b76cbfaaf7@eucas1p2.samsung.com>
2017-06-06  8:13                 ` [dpdk-dev] [PATCH v4 1/2] mem: balanced " Ilya Maximets
     [not found]               ` <CGME20170606081409eucas1p2eed4a7dc49f1028c723f8c0a7a61fadf@eucas1p2.samsung.com>
2017-06-06  8:13                 ` [dpdk-dev] [PATCH v4 2/2] config: enable vhost numa awareness by default Ilya Maximets
     [not found]               ` <CGME20170606133348eucas1p1cc5c3c05f88b2101c2ea47b26e0cac24@eucas1p1.samsung.com>
2017-06-06 13:33                 ` [dpdk-dev] [PATCH v5 0/2] Balanced allocation of hugepages Ilya Maximets
     [not found]                   ` <CGME20170606133352eucas1p13d1e860e996057a50a084f9365189e4d@eucas1p1.samsung.com>
2017-06-06 13:33                     ` [dpdk-dev] [PATCH v5 1/2] mem: balanced " Ilya Maximets
     [not found]                   ` <CGME20170606133354eucas1p284ae347e9ff07d6e8ab2bc09344ad1e5@eucas1p2.samsung.com>
2017-06-06 13:33                     ` [dpdk-dev] [PATCH v5 2/2] config: enable vhost numa awareness by default Ilya Maximets
2017-06-08 11:21                   ` [dpdk-dev] [PATCH v5 0/2] Balanced allocation of hugepages Ilya Maximets
2017-06-08 12:14                     ` Bruce Richardson
2017-06-08 15:44                       ` Sergio Gonzalez Monroy
2017-06-14  6:11                         ` Ilya Maximets
2017-06-19 11:10                           ` Hemant Agrawal
2017-06-20 13:07                             ` Thomas Monjalon
2017-06-20 13:58                               ` Ilya Maximets
2017-06-20 14:35                                 ` Thomas Monjalon
2017-06-20 14:58                                   ` Sergio Gonzalez Monroy
2017-06-20 15:41                                     ` Jerin Jacob
2017-06-20 15:51                                       ` Sergio Gonzalez Monroy
2017-06-21  8:14                                       ` Hemant Agrawal
2017-06-21  8:25                                         ` Sergio Gonzalez Monroy
2017-06-21  8:36                                           ` Ilya Maximets
2017-06-21  8:41                                           ` Jerin Jacob
2017-06-21  8:49                                             ` Thomas Monjalon
2017-06-21  9:27                                               ` Jerin Jacob
2017-06-21  9:58                                                 ` Thomas Monjalon
2017-06-21 10:29                                                   ` Jerin Jacob
2017-06-21 10:36                                                     ` Ilya Maximets
2017-06-21 11:22                                                       ` Jerin Jacob
2017-06-21 11:29                                                         ` Thomas Monjalon
2017-06-27  9:13                                                         ` Hemant Agrawal
2017-06-27  9:26                                                           ` Thomas Monjalon
2017-06-27  9:48                                                             ` Hemant Agrawal
     [not found]                   ` <CGME20170621080434eucas1p18d3d4e4133c1cf885c849d022806408d@eucas1p1.samsung.com>
2017-06-21  8:04                     ` [dpdk-dev] [PATCH v6 " Ilya Maximets
     [not found]                       ` <CGME20170621080441eucas1p2dc01b29e7c8e4c1546ace6cd76ae51ff@eucas1p2.samsung.com>
2017-06-21  8:04                         ` [dpdk-dev] [PATCH v6 1/2] mem: balanced " Ilya Maximets
2017-06-21  8:51                           ` Thomas Monjalon
2017-06-21  8:58                             ` Bruce Richardson
2017-06-21  9:25                               ` Ilya Maximets
2017-06-21  9:34                                 ` Bruce Richardson
2017-06-21  9:28                               ` Thomas Monjalon
     [not found]                       ` <CGME20170621080448eucas1p28951fac6e4910cc599fe88d7edac9734@eucas1p2.samsung.com>
2017-06-21  8:04                         ` [dpdk-dev] [PATCH v6 2/2] config: enable vhost numa awareness by default Ilya Maximets
     [not found]                       ` <CGME20170621100837eucas1p1c570092cac733a66d939ca7ff04ac9e6@eucas1p1.samsung.com>
2017-06-21 10:08                         ` [dpdk-dev] [PATCH v7 0/2] Balanced allocation of hugepages Ilya Maximets
     [not found]                           ` <CGME20170621100841eucas1p1114078b1d8a38920c3633e9bddbabc02@eucas1p1.samsung.com>
2017-06-21 10:08                             ` [dpdk-dev] [PATCH v7 1/2] mem: balanced " Ilya Maximets
     [not found]                           ` <CGME20170621100845eucas1p2a457b1694d20de8e2d8126df679c43ae@eucas1p2.samsung.com>
2017-06-21 10:08                             ` [dpdk-dev] [PATCH v7 2/2] config: enable vhost numa awareness by default Ilya Maximets
2017-06-27  9:20                               ` Hemant Agrawal
2017-06-26 10:44                           ` [dpdk-dev] [PATCH v7 0/2] Balanced allocation of hugepages Ilya Maximets
2017-06-26 14:07                             ` Jerin Jacob
2017-06-26 15:33                             ` Sergio Gonzalez Monroy
2017-06-27  8:42                               ` Ilya Maximets
     [not found]                           ` <CGME20170627084632eucas1p28133ee4b425b3938e2564fca03e1140b@eucas1p2.samsung.com>
2017-06-27  8:46                             ` [dpdk-dev] [PATCH v8 " Ilya Maximets
     [not found]                               ` <CGME20170627084637eucas1p2c591db905fa9f143fa5dbb3c08fae82f@eucas1p2.samsung.com>
2017-06-27  8:46                                 ` [dpdk-dev] [PATCH v8 1/2] mem: balanced " Ilya Maximets
     [not found]                               ` <CGME20170627084641eucas1p182cac065efef74445ffa234a6dcbb23d@eucas1p1.samsung.com>
2017-06-27  8:46                                 ` [dpdk-dev] [PATCH v8 2/2] config: enable vhost numa awareness by default Ilya Maximets
2017-06-27  9:18                                   ` Hemant Agrawal
2017-06-27  9:21                                     ` Thomas Monjalon
2017-06-27  9:41                                       ` Hemant Agrawal
2017-06-27  9:59                                         ` Thomas Monjalon
2017-06-27  9:59                                         ` Jerin Jacob
2017-06-27 12:17                                           ` Hemant Agrawal
2017-06-27 12:45                                             ` Jerin Jacob
2017-06-27 13:00                                               ` Hemant Agrawal
2017-06-27  9:19                                   ` Thomas Monjalon
2017-06-27 10:26                                     ` Ilya Maximets
     [not found]                               ` <CGME20170627102447eucas1p15a57bbaaf46944c0935d4ef71b55cd83@eucas1p1.samsung.com>
2017-06-27 10:24                                 ` [dpdk-dev] [PATCH v9 0/2] Balanced allocation of hugepages Ilya Maximets
     [not found]                                   ` <CGME20170627102451eucas1p2254d8679f70e261b9db9d2123aa80091@eucas1p2.samsung.com>
2017-06-27 10:24                                     ` [dpdk-dev] [PATCH v9 1/2] mem: balanced " Ilya Maximets
2017-06-28 10:30                                       ` Sergio Gonzalez Monroy
2017-06-29  5:32                                       ` Hemant Agrawal
2017-06-29  5:48                                         ` Ilya Maximets
2017-06-29  6:08                                           ` Ilya Maximets [this message]
     [not found]                                   ` <CGME20170627102454eucas1p14b2a1024d77158ad0bf40d62e6ad4365@eucas1p1.samsung.com>
2017-06-27 10:24                                     ` [dpdk-dev] [PATCH v9 2/2] config: enable vhost numa awareness by default Ilya Maximets
2017-06-29  5:31                                       ` Hemant Agrawal
     [not found]                                   ` <CGME20170629055928eucas1p17e823d821cfe95953bfa59dc9883ca4f@eucas1p1.samsung.com>
2017-06-29  5:59                                     ` [dpdk-dev] [PATCH v10 0/2] Balanced allocation of hugepages Ilya Maximets
     [not found]                                       ` <CGME20170629055933eucas1p1e5eba5f07850f63f9afbd48e6ca64c42@eucas1p1.samsung.com>
2017-06-29  5:59                                         ` [dpdk-dev] [PATCH v10 1/2] mem: balanced " Ilya Maximets
2017-06-29  7:03                                           ` Hemant Agrawal
     [not found]                                       ` <CGME20170629055940eucas1p1c9adcb26bec3ce5de97fe56753fd941a@eucas1p1.samsung.com>
2017-06-29  5:59                                         ` [dpdk-dev] [PATCH v10 2/2] config: enable vhost numa awareness by default Ilya Maximets
2017-06-30 15:50                                           ` Thomas Monjalon
2017-06-29  6:29                                       ` [dpdk-dev] [PATCH v10 0/2] Balanced allocation of hugepages Jerin Jacob
2017-06-30  8:36                                         ` Ilya Maximets
2017-06-30 16:12                                       ` [dpdk-dev] [PATCH v11 " Thomas Monjalon
2017-06-30 16:12                                         ` [dpdk-dev] [PATCH v11 1/2] mem: balanced " Thomas Monjalon
2017-06-30 16:12                                         ` [dpdk-dev] [PATCH v11 2/2] config: enable vhost NUMA awareness by default Thomas Monjalon
2017-07-01 10:59                                         ` [dpdk-dev] [PATCH v11 0/2] Balanced allocation of hugepages Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=29378009-05d1-954b-fb20-edc84269c378@samsung.com \
    --to=i.maximets@samsung.com \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@6wind.com \
    --cc=dev@dpdk.org \
    --cc=heetae82.ahn@samsung.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=jerin.jacob@caviumnetworks.com \
    --cc=jianfeng.tan@intel.com \
    --cc=nhorman@tuxdriver.com \
    --cc=sergio.gonzalez.monroy@intel.com \
    --cc=thomas@monjalon.net \
    --cc=yliu@fridaylinux.org \
    --cc=yulong.pei@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).