time output: Where does non-user, non-system time get spent?

When I run “time xxx” on a Linux box, where xxx is a single threaded application, I may get output like this:

real    12m45.376s
user    0m9.085s
sys     0m49.029s

Where did the almost 12 minutes go? The computer where this comes from has plenty of CPU: At all times when the application was running, CPU utilization was lower than 40% (according to SAR and a server monitoring tool), leaving at least to CPU cores available.

In an answer at https://stackoverflow.com/questions/7335920/what-specifically-are-wall-clock-time-user-cpu-time-and-system-cpu-time-in-uni it states:

on machine with single core CPU, the real and user will be nearly equal

However that’s clearly not the case in the example above.

The application performs a lot of disk reads. Would the “missing” 12 minutes likely be due to underlying storage slowness, or is I/O time already accounted for the the “sys” duration?

Is there an easy tool which lets me investigate how the non-user, non-sys time is spent?