Thread (9 messages) 9 messages, 5 authors, 2016-08-05

doubt on schedule_work() - work task getting scheduled lately

From: Ricardo Ribalda Delgado <hidden>
Date: 2016-07-29 13:48:24

you can use http://lttng.org/ for analyzing this

Regards!

On Fri, Jul 29, 2016 at 12:44 PM, Pranay Srivastava [off-list ref] wrote:
On Fri, Jul 29, 2016 at 4:02 PM, Muni Sekhar [off-list ref] wrote:
quoted
Hi All,

I have a doubt regarding the workqueue scheduling.

I am using the workqueue for processing the Rx Interrupt data. I am
calling schedule_work() on receiving the Rx interrupt from hardware.

I calculated the time between calling the schedule_work() and
workqueue task actually getting executed, Here I see many cases of
less than 100 us(It is fairly good).

But sometimes I see 10?s of ms and a lot in the 100?s of ms. I have
seen over 0.5 secs too. I would like to know why does sometimes kernel
takes longer time(in milli seconds) to schedule it? Is there any way
to reduce this time gap?


My code:

static void my_workqueuetask(struct work_struct *work)
{
    printk("In %s() \n",__func__);
You probably don't need this if it's just for your work_fn, yeah but
if there's race between this and something else...
quoted
    mutex_lock(&bh_mutex);

    //Do something here

    mutex_unlock(&bh_mutex);
}


static irqreturn_t my_irq_handler(int irq, void *dev)
{
        ??;

        if(Rx Interrupt)
             schedule_work(&rx_work);
Maybe system_wq has too much already on it's plate?
Have you tried the same with completion and a kthread? or
with your own workqueue, overkill but you can give it a shot.
quoted
return IRQ_HANDLED;
}

--
Thanks,
Sekhar

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


--
        ---P.K.S

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies at kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


-- 
Ricardo Ribalda
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help