Here's what I learned about PG maps from my investigation of the code.
First, they don't seem to be involved in deciding what needs reconstruction
when a dead OSD is revived. There is a version number stored with the PGs
that is probably used for that.
It looks like nothing but statistics - the ones you see in a 'ceph status' (or
more specifically, 'ceph pg stat' report - and I don't think those statistics
affect any automatic operation.
The PG map gets updated (version incremented) mainly when an OSD sends those
statistics to the monitor cluster. Each OSD sends a statistics report every 6
seconds (default - it's the osd_heartbeat_interval configuration variable) to
a monitor. If those statistics differ at all from the previous report, the
monitor generates a new PG map. Because the stats include I/O rates, they
do tend to be different every time.
But there is a limit of one update per second (default - it's the
'paxos_propose_interval' configuration variable) on updates to any of the maps
in the monitor database, so on any normal size system, you'll see updates once
a second.
--
Bryan Henderson San Jose, California