> 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 <xuanziya...@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!
  • ... Ziyang Xuan
    • ... Ferruh Yigit
    • ... Ferruh Yigit
    • ... Xuanziyang (William, Chip Application Design Logic and Hardware Development Dept IT_Products & Solutions)

Reply via email to