but it requires root access which I don't have.
Any sort of detailled insights into the overall system performance or interventions to influence behaviour will also require root access. What are you trying to achieve?
an estimated waitime until my program can run again.
So you've run
ps a few times and each time you've seen it in uninterruptible sleep, so your conclusion is that it has been in that state continuously? If so your logic is flawed.
We can't begin to guess when it might complete.Not only do we not know what your program does, we don't know what everything else on the system is doing, and we don't know what the capabilities of your storage are. Even if we did, measurements like utilization are somewhat misleading.
If it is IO bound then its likely to be using much less than RR_TIMESLICE (100ms) in the kernel on each invocation. How frequently it gets a to the top of the queue will depend on the number of runnable processes at any one time. But if most of the other processes are IO Bound too, then there will likely only be a very short interval when the process is runnable and not yet in the CPU.