[dpdk-dev] [PATCH v2 1/1] net/hinic: use mutex replace spin lock
Xuanziyang (William, Chip Application Design Logic and Hardware Development Dept IT_Products & Solutions)
xuanziyang2 at huawei.com
Tue Jul 9 14:20:52 CEST 2019
> On 7/5/2019 7:47 AM, Ziyang Xuan wrote:
> > Using spin lock to protect critical resources of sending mgmt
> > messages. This will make high CPU usage for rte_delay_ms when sending
> > mgmt messages frequently. We can use mutex to protect the critical
> > resources and usleep to reduce CPU usage while keep functioning
> > properly.
> >
> > Signed-off-by: Ziyang Xuan <xuanziyang2 at huawei.com>
>
> <...>
>
> > +static inline int hinic_mutex_init(pthread_mutex_t *pthreadmutex,
> > + const pthread_mutexattr_t *mattr) {
> > + int err;
> > +
> > + err = pthread_mutex_init(pthreadmutex, mattr);
> > + if (unlikely(err))
> > + PMD_DRV_LOG(ERR, "Fail to initialize mutex, error: %d", err);
> > +
> > + return err;
> > +}
> > +
> > +static inline int hinic_mutex_destroy(pthread_mutex_t *pthreadmutex)
> > +{
> > + int err;
> > +
> > + err = pthread_mutex_destroy(pthreadmutex);
> > + if (unlikely(err))
> > + PMD_DRV_LOG(ERR, "Fail to destroy mutex, error: %d", err);
> > +
> > + return err;
> > +}
> > +
>
> There was a comment from Stephen to use pthread APIs directly, can you
> please comment on that?
I have reply him already.
>
>
> > @@ -713,7 +718,7 @@ int hinic_aeq_poll_msg(struct hinic_eq *eq, u32
> timeout, void *param)
> > }
> >
> > if (timeout != 0)
> > - rte_delay_ms(1);
> > + usleep(1000);
>
> Why is this change required? Aren't these are same?
The function rte_delay_ms is blocked and usleep is dispatched.
We get high CPU usage when we use rte_delay_ms but usleep.
It is the purpose of this patch.
Thanks!
More information about the dev
mailing list