eal/windows: set pthread affinity
Checks
Commit Message
Sometimes OS tries to switch the core. So, bind the lcore thread
to a fixed core.
Implement affinity call on Windows similar to Linux.
Signed-off-by: Qiao Liu <qiao.liu@intel.com>
Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
---
lib/eal/windows/eal.c | 4 ++++
1 file changed, 4 insertions(+)
Comments
On Thu, Jan 20, 2022 at 04:17:49PM -0800, Pallavi Kadam wrote:
> Sometimes OS tries to switch the core. So, bind the lcore thread
> to a fixed core.
> Implement affinity call on Windows similar to Linux.
>
> Signed-off-by: Qiao Liu <qiao.liu@intel.com>
> Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
> ---
> lib/eal/windows/eal.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c
> index 67db7f099a..ca3c41aaa7 100644
> --- a/lib/eal/windows/eal.c
> +++ b/lib/eal/windows/eal.c
> @@ -422,6 +422,10 @@ rte_eal_init(int argc, char **argv)
> /* create a thread for each lcore */
> if (eal_thread_create(&lcore_config[i].thread_id) != 0)
> rte_panic("Cannot create thread\n");
> + ret = pthread_setaffinity_np(lcore_config[i].thread_id,
> + sizeof(rte_cpuset_t), &lcore_config[i].cpuset);
> + if (ret != 0)
> + RTE_LOG(DEBUG, EAL, "Cannot set affinity\n");
> }
>
Acked-by: Narcisa Vasile <navasile@linux.microsoft.com>
On 1/20/2022 4:17 PM, Pallavi Kadam wrote:
> Sometimes OS tries to switch the core. So, bind the lcore thread
> to a fixed core.
> Implement affinity call on Windows similar to Linux.
>
> Signed-off-by: Qiao Liu<qiao.liu@intel.com>
> Signed-off-by: Pallavi Kadam<pallavi.kadam@intel.com>
> ---
> lib/eal/windows/eal.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c
> index 67db7f099a..ca3c41aaa7 100644
> --- a/lib/eal/windows/eal.c
> +++ b/lib/eal/windows/eal.c
> @@ -422,6 +422,10 @@ rte_eal_init(int argc, char **argv)
> /* create a thread for each lcore */
> if (eal_thread_create(&lcore_config[i].thread_id) != 0)
> rte_panic("Cannot create thread\n");
> + ret = pthread_setaffinity_np(lcore_config[i].thread_id,
> + sizeof(rte_cpuset_t), &lcore_config[i].cpuset);
> + if (ret != 0)
> + RTE_LOG(DEBUG, EAL, "Cannot set affinity\n");
> }
>
> /* Initialize services so drivers can register services during probe. */
Acked-by: Ranjit Menon <ranjit.menon@intel.com>
> Subject: [PATCH] eal/windows: set pthread affinity
>
> External email: Use caution opening links or attachments
>
>
> Sometimes OS tries to switch the core. So, bind the lcore thread to a fixed
> core.
> Implement affinity call on Windows similar to Linux.
>
> Signed-off-by: Qiao Liu <qiao.liu@intel.com>
> Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
> ---
> lib/eal/windows/eal.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c index
> 67db7f099a..ca3c41aaa7 100644
> --- a/lib/eal/windows/eal.c
> +++ b/lib/eal/windows/eal.c
> @@ -422,6 +422,10 @@ rte_eal_init(int argc, char **argv)
> /* create a thread for each lcore */
> if (eal_thread_create(&lcore_config[i].thread_id) != 0)
> rte_panic("Cannot create thread\n");
> + ret = pthread_setaffinity_np(lcore_config[i].thread_id,
> + sizeof(rte_cpuset_t), &lcore_config[i].cpuset);
> + if (ret != 0)
> + RTE_LOG(DEBUG, EAL, "Cannot set affinity\n");
> }
>
> /* Initialize services so drivers can register services during probe. */
> --
> 2.31.1.windows.1
Acked-by: Tal Shnaiderman <talshn@nvidia.com>
> Subject: RE: [PATCH] eal/windows: set pthread affinity
>
> > Subject: [PATCH] eal/windows: set pthread affinity
> >
> > External email: Use caution opening links or attachments
> >
> >
> > Sometimes OS tries to switch the core. So, bind the lcore thread to a
> > fixed core.
> > Implement affinity call on Windows similar to Linux.
> >
> > Signed-off-by: Qiao Liu <qiao.liu@intel.com>
> > Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
> > ---
> > lib/eal/windows/eal.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/lib/eal/windows/eal.c b/lib/eal/windows/eal.c index
> > 67db7f099a..ca3c41aaa7 100644
> > --- a/lib/eal/windows/eal.c
> > +++ b/lib/eal/windows/eal.c
> > @@ -422,6 +422,10 @@ rte_eal_init(int argc, char **argv)
> > /* create a thread for each lcore */
> > if (eal_thread_create(&lcore_config[i].thread_id) != 0)
> > rte_panic("Cannot create thread\n");
> > + ret = pthread_setaffinity_np(lcore_config[i].thread_id,
> > + sizeof(rte_cpuset_t), &lcore_config[i].cpuset);
> > + if (ret != 0)
> > + RTE_LOG(DEBUG, EAL, "Cannot set affinity\n");
> > }
> >
> > /* Initialize services so drivers can register services during
> > probe. */
> > --
> > 2.31.1.windows.1
>
> Acked-by: Tal Shnaiderman <talshn@nvidia.com>
Tested-by: Idan Hackmon <idanhac@nvidia.com>
> > > Sometimes OS tries to switch the core. So, bind the lcore thread to a
> > > fixed core.
> > > Implement affinity call on Windows similar to Linux.
> > >
> > > Signed-off-by: Qiao Liu <qiao.liu@intel.com>
> > > Signed-off-by: Pallavi Kadam <pallavi.kadam@intel.com>
> > Acked-by: Tal Shnaiderman <talshn@nvidia.com>
> Tested-by: Idan Hackmon <idanhac@nvidia.com>
Applied, thanks.
@@ -422,6 +422,10 @@ rte_eal_init(int argc, char **argv)
/* create a thread for each lcore */
if (eal_thread_create(&lcore_config[i].thread_id) != 0)
rte_panic("Cannot create thread\n");
+ ret = pthread_setaffinity_np(lcore_config[i].thread_id,
+ sizeof(rte_cpuset_t), &lcore_config[i].cpuset);
+ if (ret != 0)
+ RTE_LOG(DEBUG, EAL, "Cannot set affinity\n");
}
/* Initialize services so drivers can register services during probe. */