First, some definitions.
- User code is software run outside the device kernel. This includes parts of the Android operating system
- System code is inside the kernel. This is where basic low level access to the device occurs.
- IRQ/Interrupts are how the device hardware communicates with the Operating System
Now, the columns are:
- User: CPU time spent executing user code.
- Nice: CPU time spend executing user code that has asked for low priority. The system runs "nice" processes after it has satisfied all normal CPU requirements.
- System: CPU time spent in system code
- Idle: CPU time where nothing happened.
- IO: CPU time spent waiting on I/O to the device. This is where loading an app counts its time, as well as any sort of storage operations like downloads, etc.
- IRQ: CPU time spent servicing device interrupts. Interrupts are how the device communicates hardware events to the kernel. Interrupts must be serviced quickly, and extra processing can be deferred to a SoftIRQ.
- SoftIRQ: Cpu time spent in softIrq processing. This is typically work resulting from the IRQ handling that is deferred