This document discusses ways to diagnose performance issues in PostgreSQL. It begins with an introduction to common system resources like CPU, memory, disks, and network that can cause bottlenecks. It then covers specific PostgreSQL internal processes like locks that can lead to performance problems. The document provides examples of using tools like pg_stat_statements, gdb, perf, SystemTap, and trace files to analyze issues further. It emphasizes that performance problems can have complex causes and provides recommendations for improving monitoring and diagnostics.