Re: Question about IPI

Yuxin Ren <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <CAAKbDrdUAf+TBs3TCtad2eXPMovUb6JLXqi=jHVzuH3BdXcByg@mail.gmail.com>
Hi,

That happens during IPC loop.
I am pretty there is no migration during my IPC.
However the helping lock will cause migration, right?
Bur I do not think this will happen in my case.
Do you think something can delay the dequeue operation so that
the __pending_rqq is still in the queue when next request happens?
Because after I add some delay in the IPC path (add printf somewhere),
the number of IPIs is exactly 4 for flex-page mapping IPC, and 2 for simple
data-only IPC.

Thanks a lot.
Yuxin


On Thu, Jul 24, 2014 at 4:46 PM, Adam Lackorzynski <
[email protected]> wrote:

> On Mon Jul 21, 2014 at 10:09:27 +0800, Yuxin Ren wrote:
> > I think I have found the reson. But I cannot understand the logic of that
> > code.
> > In the Context::enqueue_drq method, there is a piece of code to determin
> if
> > IPI is needed.
> >           if (!_pending_rq.queued())
> >           {
> >               if (!q.first())
> >                     ipi = true;
> >               q.enqueue(&_pending_rq);
> >           }
> > In my understanding, the logic behind this is to check if _pending_rq is
> > queued first, if it is queued, it's done; else enqueue it.
> > And check if the queue is empty. If it is empty, IPI is needed, else this
> > request can be picked up by IPI of other request.
> > The problem is I cannot image in what case the _pending_rq is already
> > queued, at least in my program.
> > My scenario is: there is only one client and one server in different
> core,
> > and client sends ipc in a tight loop. I think each time the server
> receives
> > the request, it should dequeue _pending_rq, so it is not possible for
> > client to see the _pending_rq is queued when it wants to ipc.But I
> observed
> > this indeed happan sometime.
>
> As I read the code this part is handling the case of migration that
> might happen to the thread. Your description does not like like threads
> would move between cores. Do you see this during your IPC loop or
> before?
>
>
>
> Adam
> --
> Adam                 [email protected]
>   Lackorzynski         http://os.inf.tu-dresden.de/~adam/
>
> _______________________________________________
> l4-hackers mailing list
> [email protected]
> http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
>

_______________________________________________
l4-hackers mailing list
[email protected]
http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.