Thanks Tom. I've added a viewer for it on our db monitoring tool.
There's also one in ProTop.
(And in promon.)
Performance hit should (in theory) be less for self-service clients as you aren't pulling the stack data across a wire; the client process is writing it to shared memory. Gus has some info on performance considerations in his presentation.
If you just want to sample what a client is doing but don't want the hit of constant updates, option 3 (one-time stack) is useful. It's sort of like issuing a single kill -SIGUSR1 except that you don't have to go find a protrace file. Actually that's a simplification. Client statement caching only writes to _Connect when the client access the DB, whereas with kill -SIGUSR1 the client will give you a protrace even when non-CRUD code is running (provided it isn't hung or deadlocked).