12-25-2025, 08:16 AM
I'm a sysadmin managing a fleet of Ubuntu servers running a mixed workload of Java applications and PostgreSQL databases, and I'm trying to systematically tune them for better performance under load. I've adjusted basic kernel parameters like swappiness and vm.dirty_ratio, but I feel I'm missing a holistic methodology. For others who have optimized Linux servers for specific services, what tools and metrics do you prioritize for identifying bottlenecks, whether in I/O, memory, or CPU scheduling? How do you approach tuning filesystem mount options and PostgreSQL-specific kernel settings like shared_buffers and vm.overcommit_memory, and what monitoring do you have in place to validate that changes actually improve performance without introducing instability? I'm also curious about the real-world impact of switching to a different I/O scheduler.