X-Plane Performance on Linux
X-Plane 12 is a cross-platform application — the general graphics settings (textures, shadows, clouds, anti-aliasing) work the same on all operating systems and are documented in the official documentation. This page covers performance analysis on Linux: internal diagnostic tools, Linux-specific monitoring utilities, and targeted optimization recommendations. The Linux-specific graphics settings are documented under Configuration, system tuning under System Tuning.
Internal Diagnostic Tools
FPS Display
The FPS display (Frames per Second) is the simplest tool for assessing performance. It shows how many frames are calculated per second — but the average value alone reveals little. What matters is the frame time: the time in milliseconds that a single frame requires. A stable 30 FPS (≈ 33 ms per frame) delivers a smoother experience than a fluctuating average of 40 FPS with regular spikes to 60 ms.
Reference Values
| FPS | Frame Time | Rating |
|---|---|---|
| 50+ | < 20 ms | Very smooth |
| 30–49 | 20–33 ms | Smooth |
| 20–29 | 33–50 ms | Acceptable |
| < 20 | > 50 ms | Noticeable stuttering |
Activation: In the menu under Settings → Data Output, enable the frame rate option. The display appears in the upper left corner of the screen. Alternatively, the FPS display can be toggled with the keyboard shortcut Shift+Ctrl+F — provided the binding has not been changed.
Microprofiler
While the FPS display only shows the overall result, the Microprofiler breaks down frame generation into individual tasks. This reveals whether physics calculations, scenery rendering, plugins, or the GPU are causing the bottleneck.
Activation: In the menu, select Developer → Toggle Microprofiler. A real-time graphical display appears showing the time distribution per frame.
Task Categories
| Category | What is measured | Typical values (30 FPS) |
|---|---|---|
| Flight Model | Physics and aerodynamics | 5–15 ms |
| Scenery | Landscapes, buildings, roads | 5–10 ms |
| Clouds/Weather | Clouds, rain, fog | 3–8 ms |
| Plugins | Installed plugins and addons | 2–10 ms |
| Swapchain Acquire | CPU/GPU synchronization | 1–5 ms |
Identifying CPU-bound vs. GPU-bound
The total time splits into CPU time (physics, plugins, scenery logic) and GPU time (textures, shadows, clouds). If CPU time is significantly higher than GPU time, the processor is the bottleneck — lowering graphics settings will have little effect. Conversely, GPU bottlenecks respond well to reducing texture quality, shadows, or anti-aliasing. The table in the Optimization Tips section maps each bottleneck to specific measures.
Calculation Example
| Component | Time |
|---|---|
| Total frame time | 33.3 ms (30 FPS) |
| Physics calculation | 10 ms |
| Scenery rendering | 8 ms |
| Clouds/weather | 7 ms |
| Plugins | 5 ms |
| Swapchain Acquire | 3 ms |
| Total CPU time | 20 ms |
| Total GPU time | 13 ms |
In this example, the CPU at 20 ms is the limiting factor. Physics calculations and plugin load are the largest individual items — this is where optimizations should focus.
External Tools
X-Plane shows what is slow — Linux tools show why. The internal diagnostic tools (Microprofiler, FPS display) identify bottlenecks within the simulation. External tools provide the system perspective: GPU utilization, CPU frequency, I/O wait times, and thermal throttling.
MangoHUD — In-Game Performance Overlay
MangoHUD is a Vulkan layer overlay that displays performance metrics directly in-game.
Installation and Launch
Displayed Metrics
- FPS and frame time graph
- GPU load, temperature, clock speed, and VRAM usage
- CPU load, temperature, and frequency per core
- RAM usage
Frame time graph — the most important tool: spikes reveal stutters that the average FPS hides. A stable graph at 33 ms (30 FPS) is better than a fluctuating one averaging 25 ms.
Configuration
MangoHUD can be customized via a configuration file. A compact layout works well for X-Plane:
~/.config/MangoHud/X-Plane-x86_64.conf
fps
frame_timing
gpu_stats
gpu_temp
gpu_core_clock
gpu_mem_clock
vram
cpu_stats
cpu_temp
cpu_mhz
ram
position=top-left
font_size=20
Keyboard Shortcuts
| Shortcut | Function |
|---|---|
Shift_R+F12 |
Toggle overlay |
Shift_L+F2 |
Start/stop CSV logging |
CSV logging records metrics for post-flight analysis — log files are saved under /tmp/MangoHud/.
GPU Monitoring
| GPU | Tool | Installation | Command |
|---|---|---|---|
| NVIDIA | nvidia-smi | (included with driver) | nvidia-smi dmon |
| AMD | radeontop | sudo apt install radeontop |
sudo radeontop |
| Intel | intel_gpu_top | sudo apt install intel-gpu-tools |
sudo intel_gpu_top |
For NVIDIA cards, a compact CSV monitor can be started:
nvidia-smi --query-gpu=utilization.gpu,utilization.memory,temperature.gpu,clocks.gr,power.draw --format=csv -l 2
Identifying GPU Bottlenecks
- GPU 95–100% + low FPS → GPU-bound (reduce graphics settings)
- GPU < 70% + low FPS → CPU-bound (check Microprofiler for blocking thread)
Diagnostic Workflows
The following table connects typical symptoms with the appropriate toolchain. Details on the Linux tools can be found under System Monitoring.
| Symptom | Toolchain | What to check |
|---|---|---|
| Micro-stutters during flight | MangoHUD frame time + iostat |
NVMe wake-up latency (APST) |
| Low FPS with low GPU load | Microprofiler + htop |
CPU-bound — which thread is blocking? |
| Stutter during scenery transitions | iotop + fatrace |
Which files are being read? |
| FPS drop after driver update | MangoHUD comparison before/after | Clear shader cache, driver regression? |
| Periodic stutters every ~30 s | mpstat -I CPU 1 |
IRQ storm on application cores? |
Optimization Tips
The Microprofiler shows where frame time is being lost. The following table maps each bottleneck to the most effective measure.
| Bottleneck | Measure | Setting |
|---|---|---|
| CPU (Physics) | Reduce flight models | Flight Models per Frame: 2–4 |
| CPU (Plugins) | Disable resource-heavy addons | — |
| CPU (Scenery) | Reduce objects and AI aircraft | Lower Object Density |
| GPU (Textures) | Lower texture quality | Texture Quality: Medium or High |
| GPU (Shadows) | Reduce shadows and anti-aliasing | Lower Shadow Quality and MSAA level |
| GPU (Clouds) | Adjust cloud quality | Lower Cloud Quality |
For Linux-specific optimizations (CPU governor, interrupt routing, memory parameters) see System Tuning. Benchmarking methods and rendering options are documented under Configuration.