If the usual "cookbook" answers such as overheating, fs repair, etc don't seem to fix it, the best I can come up with is DTrace. You have to enable it in csrutil: boot into recovery by restarting with Cmd-R, open a Terminal, enter: csrutil enable --without dtrace (it will complain about an unsupported configuration), and reboot. There are a few dtrace scripts already on the machine (at least, there were in El Cap, I'd assume they are still there in Sierra or HS) such as iosnoop which you can run with sudo. Google for more info on which dtrace scripts are shipped with the Mac, and if all else fails, you can try writing your own.
I suspect that it's easy to be led astray by the output, unless you have a good idea of what a baseline looks like and obviously you won't have that advantage. Unfortunately I'm not aware of anything significantly better. If you turn up something better, please post!