While trying to defragment a 80 GB NTFS (4 KB cluster size) volume on Windows XP, I encountered a strange problem: the defragmentation process is very quick, but also very useless. Graphically, I could see some files moving all around, but the fragmentation level remains the same.
Here's what it looks like after the volume has been defragmented:

I know there is a 15% free space limit. Actually, the volume is free at 23%.
Of course, Windows Defragmenter shows a bunch of files it was unable to defragment. Some are large (up to 1 GB), but not too large to be unable to move them during defragmentation. Not counting, I imagine, hiberfil.sys and pagefile.sys (they are immovable, aren't they?).
How do I diagnose this issue?
PS. Installing other defragmentation software products, as suggested on a similar question, is not a solution in my case.