On 14 July 2015 at 09:32, Shlomo Pongratz <shlomopongr...@gmail.com> wrote: > Hi, > > I'm running aarm64 QEMU and I'm counting the number of instructions which > "belong" to user space vs kernel space. My measurements shows that 99 > percent of instructions are in kernel space. > I've used both the address of the instructions and the EL just to be sure. I > also added an option to disable block chaining just to make sure that all > the instructions in every TB is counted. > When examining some kernel's instructions against the objdump of the kernel > I've noticed that most of them are in interrupts/timers area. > > Does this make sense? > Did someone also encountered this phenomenon?
Depends entirely on your workload, obviously. If the system only boots then most instructions will be in kernel space. If the system is only sitting idle then it'll just be executing the kernel space idle loop. If you're measuring solely the section of time where a userspace program is doing real work with the CPU and you're still seeing a 99% figure then the obvious conclusion would be that your measurement approach is wrong... If your measurement instrumentation is intrusive and is significantly slowing down QEMU then you'll naturally find that the guest spends more time in timer interrupt handling, because the timer interrupts come in in real time, and you've just effectively reduced the speed of your CPU, so it can get less useful work done between timer interrupts. -- PMM