How to diagnosing hopeless performance

Recently, performance on some of the has collapsed to hopeless levels: whereas puppet used to take 5 - 10 minutes to run, processing essentially the same manifest is now taking around 40 minutes. Which is getting silly.

In struggling to diagnose this, I have tried cutting down the content of the node. And discovered that an EMPTY NODE DEFINITION is now taking something over 3 minutes. During this time, the CPU is 100% busy, with Puppet the only process running.

On a closely comparable machine, the "empty node" takes approximately 8 seconds...