In some programs percentage of copying large files get to 100% very fast and then I'm waiting much more before it goes next step.
It's caused by buffer. How to I see amount of data that are going to be written?
The term for that is "dirty" data (data that has been changed, but not yet flushed to permanent storage).
On Linux you can find this from /proc/meminfo under Dirty:
$ cat /proc/meminfo | grep Dirty Dirty: 0 kB