I'm running a DBCC SHRINKFILE on a HUGE database (315Gb) after a major prune (Around 60%) and it's taking forever. Anyways, found a helpful nugget on the internets for determining it's progress.

SELECT percent_complete, * FROM sys.dm_exec_requests

And you get something like this:

image

I've noticed that even though it says "suspended" it's still progressing. I think it must be that this task is constantly firing off child tasks (Like #194 above) and waiting for them to complete (And thus the status of "suspended" most of the time).