Windows Vista's built-in tool does not give any status of current state of defragmentation. And TuneUp is very heavy. Is there any other good defragmentation tool for Windows Vista?
Edit: I want a free tool (may be open source.)
Defraggler from Piriform, the folk who gave us CCleaner, is my favourite. Free and portable.
Check out this Lifehacker post for more options.
I like Auslogics defrag. It has a scheduler and an auto-defrag function.
Read 'The 2009 Defrag Shootout', which should cover lots of the answers popping up here.
Sysinternals' Contig
If you're not comfortable with a command line utility, here's a graphical user interface for it:
Very high defragmentation speed, efficiency and ease of use.
Contig & PowerDefragmenter GUI are both freeware and portable, no installation is required.
Maximum PC magazine ran a defrag utility performance comparison a while back, and found that the built-in defragmenter is the most effective. That is, defragging with Windows' built-in defragmenter netted slight performance gains, while defragging with the third-party utilities actually decreased performance slightly in most cases. (Unfortunately, the article is now almost two years old, so things may have changed since then.)
In the end they did recommended Auslogics Disk Defrag over the other third-party defrag utilities they tested, if you need a pretty graph and other features.