# Diagnose System Slowdown You are helping the user diagnose system laginess and performance issues. ## Your tasks: 1. **Gather initial information:** Ask the user: - When did the slowdown start? - Is it constant or intermittent? - What activities trigger it? (startup, specific applications, general use) - Any recent changes? (updates, new software, configuration changes) 2. **Check current system load:** - System load averages: `uptime` - Detailed load info: `w` - Number of processes: `ps aux | wc -l` 3. **CPU analysis:** - Real-time CPU usage: `top -b -n 1 | head -20` - Per-core CPU usage: `mpstat -P ALL 1 1` (if sysstat installed) - Top CPU consumers: `ps aux --sort=-%cpu | head -20` - CPU frequency and throttling: ```bash cat /proc/cpuinfo | grep MHz sudo cpupower frequency-info # if available ``` - Check for thermal throttling: ```bash sensors # if lm-sensors installed cat /sys/class/thermal/thermal_zone*/temp ``` 4. **Memory analysis:** - Memory usage: `free -h` - Detailed memory info: `cat /proc/meminfo` - Swap usage: `swapon --show` - Top memory consumers: `ps aux --sort=-%mem | head -20` - Check for memory leaks or runaway processes - OOM (Out of Memory) events: `sudo journalctl -k | grep -i "out of memory"` 5. **Disk I/O analysis:** - Disk usage: `df -h` - Inode usage: `df -i` - I/O statistics: `iostat -x 1 5` (if sysstat installed) - Top I/O processes: `sudo iotop -b -n 1 | head -20` (if iotop installed) - Check for high disk wait: `top` and look at `wa` (wait) percentage - Disk health: `sudo smartctl -H /dev/sda` (for each drive) 6. **Process analysis:** - List all running processes: `ps aux` - Process tree: `pstree -p` - Zombie processes: `ps aux | grep Z` - Processes in D state (uninterruptible sleep): `ps aux | grep " D "` - Long-running processes: `ps -eo pid,user,start,time,cmd --sort=-time | head -20` 7. **Check for system resource contention:** - Context switches: `vmstat 1 5` - Interrupts: `cat /proc/interrupts` - Check if system is swapping heavily: `vmstat 1 5` (look at si/so columns) 8. **Network issues (can cause perceived slowness):** - Network connections: `ss -s` - Active connections: `netstat -tunap | wc -l` or `ss -tunap | wc -l` - DNS resolution test: `time nslookup google.com` - Check for network errors: `ip -s link` 9. **Graphics/Desktop environment (for GUI slowness):** - Check X server or Wayland compositor CPU usage - GPU usage (if nvidia): `nvidia-smi` or `watch -n 1 nvidia-smi` - For AMD: `radeontop` (if installed) - Check compositor settings (KDE Plasma on Wayland) - Desktop effects CPU usage 10. **Check system logs for errors:** - Recent errors: `sudo journalctl -p err -b` - Kernel messages: `dmesg | tail -50` - System log: `sudo journalctl -xe --no-pager | tail -100` - Look for specific issues: - Hardware errors - Driver issues - Service failures - Filesystem errors 11. **Check for background services/processes:** - List all services: `systemctl list-units --type=service --state=running` - Failed services: `systemctl --failed` - Check for update managers, indexing services (updatedb, baloo, tracker) - Snap services: `snap list` and check for snap updates - Flatpak: `flatpak list` 12. **Application-specific checks:** If slowness is application-specific: - Browser: check extensions, tabs, cache size - Database: check for long-running queries - IDE: check for indexing, plugins - Check application logs: `~/.local/share/applications/` or specific app log locations 13. **Historical data (if available):** - Check sar data: `sar -u` (if sysstat/sar configured) - Check historical logs: `sudo journalctl --since "1 day ago" -p err` 14. **Analyze and report findings:** Categorize issues found: - **CPU bottleneck**: High CPU usage, identify culprit processes - **Memory bottleneck**: High memory usage, swapping, suggest adding RAM or killing processes - **Disk I/O bottleneck**: High wait times, slow disk, suggest SSD upgrade or I/O optimization - **Thermal throttling**: High temperatures causing CPU slowdown - **Runaway processes**: Specific process consuming excessive resources - **Resource leaks**: Memory or handle leaks in specific applications - **Background tasks**: Indexing, updates, backups running - **Network issues**: DNS problems, slow network affecting system 15. **Provide recommendations:** Based on findings, suggest: - Kill or restart specific problematic processes - Disable unnecessary services - Adjust swappiness: `sudo sysctl vm.swappiness=10` - Clean up disk space if low - Update or reinstall problematic drivers - Install missing performance tools (sysstat, iotop, htop) - Schedule resource-intensive tasks for off-hours - Hardware upgrades (RAM, SSD) if appropriate - Investigate and fix application-specific issues - Check for and apply system updates - Reboot if system has been up for extended period with memory leaks ## Important notes: - Install missing diagnostic tools if needed (sysstat, iotop, htop, lm-sensors) - Use sudo for system-level diagnostics - Be systematic - check CPU, memory, disk, and network in order - Correlate findings with user's description of when slowness occurs - Don't immediately kill processes - confirm with user first - Consider both hardware and software causes