AFAIK, PostgreSQL `VACUUM` command only marks as free space occupied by deleted tuples and never shrinks the datafile itself. So it's impossible to tell how much space is considered "free" by DBMS itself.

Is there any good way to tell how much space in a datafile is actually occupied by data (or indexes or whatever else) and how much is free to use?