I have a virtual machine that's using ip_tables to set up some connection forwarding. According to top, sar and /proc/stat, I'm > 99% idle. However, perf says I'm only about 72% idle, with the rest all accounted for by swapper in __do_softirq and various network related functions, most involving VMXnet 3, since that's the network driver I'm using.
VMware's own performance monitoring roughly corresponds to what perf is saying: about 25% of cpu being used.
Is there some way to monitor the actual amount of CPU being used, that includes time spent in network drivers, servicing soft irqs and all like that?