Hi,
2. Can you explain the difference when thread state is "ThreadState_Running" and "ThreadState_Restart"?
This indicates if the thread is returning from a system call (therefore the instruction pointer needs to be updated) or a preemption. See the function activateThread which does the update.
3. I tried "SMP Benchmark" but I can't understand what this benchmark exactly means. What "Cycles" means in this benchmark?
This is an IPC throughput benchmark. "The existing multicore benchmark measures IPC throughput of a client and server, both pinned to the same processor, sending fastpath, 0-length IPC messages via seL4_Call and seL4_ReplyRecv . One pair of client and server is set up per core. Both threads are the same priority and the messages are 0 length. Each thread spins for a random amount with an upper bound N between each subsequent IPC. As N increases so does IPC throughput, as fewer calls are made." -- (from my phd thesis which used this benchmark - https://github.com/pingerino/phd/blob/master/phd.pdf?) Cycles corresponds to the upper bound on the number of cycles between IPC.
4. I try to measure IPC performance with SMP is on. I used "seL4_TCB_SetAffinity" function so server executed in Core1 and client executed Core2. But performance results are too excessive. seL4_Call(same vspace, ipc length is 0)' result is 129331186 cycles.
I can't offer further analysis without seeing your benchmark code. Those results don't look right. If you put your code up we're happy to take a look.
Are these results are available?
Sorry, we don't have an SMP IPC benchmark currently. ?Note that our current ipc benchmarks aren't written for multicore, and our SMP IPC path is not heavily optimised for the sake of simplicity in our initial multicore verification project.
Thanks,
Anna.
________________________________
From: Devel