There are a couple of ways blocks that are dirty can be written to disk. The easiest one to trigger at will is a checkpoint:
postgres=# checkpoint; CHECKPOINT postgres=# SELECT reldatabase,relfilenode,relblocknumber,isdirty FROM pg_buffercache WHERE relfilenode=16391; reldatabase | relfilenode | relblocknumber | isdirty | -------------+-------------+----------------+---------+ 11880 | 16391 | 0 | f | $ ls -l $PGDATA/base/11880/16391* -rw------- 1 postgres postgres 8192 2010-03-01 21:05 /home/postgres/pgwork/data/base/11880/16391 pgbench=# SELECT reldatabase,relfilenode,relblocknumber,isdirty,usagecount FROM pg_buffercache WHERE relfilenode=16399; reldatabase | relfilenode | relblocknumber | isdirty | usagecount ...