On Thu Jul 17, 2014 at 13:03:31 -0400, Yuxin Ren wrote:
Now I want to how many IPIs are sent during an IPC. So I add a counter for IPI in the kernel, and in the user level, there is a client sending IPC to a server on another core. But I found some behavior are very strange.
- The total number of IPI are not multiple times of the number of IPC. It
seems that there are some "extra IPIs", and with the number of IPC increases, the number of "extra IPIs" are also increasing.
Well, as we already discussed, depending on the situation there might be two or four IPIs. Do you mean that with 'extra IPIs'?
So my question is if there are some background program in the kernel or L4Re to send IPIs?
In user-land there's nothing per default that runs on other CPUs, so no. The kernel will also only send IPIs around when necessary (what else :) ) such as when doing IPC.
- If I add printf statement in the kernel, the number of IPIs are also
increasing. Does printf in the kernel cause sending IPI? If it does, is there any methods to avoid this. Like in Linux, it has printk function in the kernel.
printf in the kernel does not use IPIs. But I could image that is alters timing and thus order which can lead to more IPIs for IPC (as above).
Adam