145 lines
5.8 KiB
Markdown
145 lines
5.8 KiB
Markdown
|
# falcond - Advanced Linux Gaming Performance Daemon
|
||
|
|
||
|
falcond is a powerful system daemon designed to automatically optimize your Linux gaming experience. It intelligently manages system resources and performance settings on a per-game basis, eliminating the need to manually configure settings for each game.
|
||
|
|
||
|
## Features
|
||
|
|
||
|
- **Automatic Game Detection**: Automatically detects running games and applies optimized settings
|
||
|
- **Per-Game Profiles**: Customizable profiles for different games
|
||
|
- **Performance Mode**: Enables system-wide performance optimizations when gaming
|
||
|
- **3D vcache Management**: Smart management of AMD 3D vcache settings
|
||
|
- **SCX Scheduler Integration**: Dynamically pick a scheduler that is best for the specific game
|
||
|
- **Proton Compatibility**: Full support for Steam Proton games, with a global profile for excellent game coverage
|
||
|
- **Low Overhead**: Minimal system resource usage
|
||
|
- **Different Device Modes**: Profiles for desktops, handhelds, HTPC etc
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
falcond is available on PikaOS via the falcond package or via the Pika Gameutils Metapackage. For other distributions, please check your package manager or build from source.
|
||
|
|
||
|
## Configuration
|
||
|
|
||
|
The configuration file is located at `/etc/falcond/config.conf`. Here's an example configuration, it will be generated automatically on first run:
|
||
|
|
||
|
```
|
||
|
enable_performance_mode = true
|
||
|
scx_sched = none
|
||
|
scx_sched_props = default
|
||
|
vcache_mode = none
|
||
|
profile_mode = none
|
||
|
```
|
||
|
|
||
|
This is global configuration and all options other than profile_mode override individual game profiles.
|
||
|
|
||
|
There is also a list of proton/wine system processes in `/usr/share/falcond/system.conf`. This list can be updated if for example a crash handler is intercepting your profile and needs to be ignored.
|
||
|
|
||
|
### Configuration Options
|
||
|
|
||
|
- `enable_performance_mode`: Enable/disable performance mode (default: true)
|
||
|
- `scx_sched`: SCX scheduler (options: none, bpfland, lavd, rusty, flash)
|
||
|
- `scx_sched_props`: SCX scheduler mode (options: default, gaming, power, latency, server)
|
||
|
- `vcache_mode`: VCache management mode (options: none, cache, freq)
|
||
|
- `profile_mode`: What type of device is in use, none means desktop (options: none, handheld, htpc)
|
||
|
|
||
|
## Profile Modes
|
||
|
Falcond now supports different profile modes for different device types:
|
||
|
- Default (none): Uses profiles from `/usr/share/falcond/profiles`
|
||
|
- Handheld: Uses profiles from `/usr/share/falcond/profiles/handheld`
|
||
|
- HTPC: Uses profiles from `/usr/share/falcond/profiles/htpc`
|
||
|
|
||
|
To set a profile mode, add this to your config file:
|
||
|
```
|
||
|
profile_mode = "handheld" # or "htpc" or "none"
|
||
|
```
|
||
|
|
||
|
## Game Profiles
|
||
|
|
||
|
Game profiles are stored in `/usr/share/falcond/profiles/` and define specific optimizations for individual games. You can contribute new profiles via PR at:
|
||
|
[Falcond Profiles Repository](https://github.com/PikaOS-Linux/falcond-profiles)
|
||
|
|
||
|
Example profile:
|
||
|
```
|
||
|
name = "game.exe"
|
||
|
performance_mode = true
|
||
|
scx_sched = bpfland
|
||
|
scx_sched_props = gaming
|
||
|
vcache_mode = cache
|
||
|
```
|
||
|
|
||
|
### Available Options
|
||
|
|
||
|
- `name`: The exe name (examples: cs2, PathOfExileSteam.exe)
|
||
|
- `performance_mode`: Enable/disable performance mode (default: true)
|
||
|
- `scx_sched`: SCX scheduler (options: none, bpfland, lavd, rusty, flash)
|
||
|
- `scx_sched_props`: SCX scheduler mode (options: none, gaming, power, latency, server)
|
||
|
- `vcache_mode`: VCache management mode (options: none, cache, freq)
|
||
|
|
||
|
## Service Management
|
||
|
|
||
|
To restart the daemon:
|
||
|
```bash
|
||
|
sudo systemctl restart falcond
|
||
|
```
|
||
|
|
||
|
To check the status:
|
||
|
```
|
||
|
sudo systemctl status falcond
|
||
|
```
|
||
|
|
||
|
## Source Code
|
||
|
|
||
|
The source code for falcond can be found at:
|
||
|
[Falcond Source Repository](https://git.pika-os.com/general-packages/falcond)
|
||
|
|
||
|
## Important Notes
|
||
|
|
||
|
⚠️ **Compatibility Warning** ⚠️ falcond should not be used alongside Feral GameMode or Falcon GameMode as they may conflict with each other. falcond provides similar functionality with additional features and optimizations.
|
||
|
|
||
|
## Why falcond?
|
||
|
|
||
|
Traditional gaming on Linux often requires manual optimization for each game - tweaking CPU governors, scheduling priorities, and cache settings. falcond automates this entire process by:
|
||
|
|
||
|
1. Automatically detecting when games are running
|
||
|
2. Applying optimized settings based on pre-configured profiles
|
||
|
3. Reverting settings when games are closed
|
||
|
4. Providing a centralized way to manage gaming performance
|
||
|
5. Easy switching of options for different device types
|
||
|
|
||
|
This means you can focus on gaming while falcond handles all the technical optimizations in the background!
|
||
|
|
||
|
## License
|
||
|
|
||
|
falcond is released under the [MIT License](http://git.pika-os.com/general-packages/falcond/raw/branch/main/LICENSE).
|
||
|
|
||
|
## Contiributing
|
||
|
|
||
|
Please fork the [PikaOS-Linux/falcond](https://github.com/PikaOS-Linux/falcond) repository and submit a pull request.
|
||
|
|
||
|
## Build Dependencies
|
||
|
|
||
|
zig 0.14.0+
|
||
|
|
||
|
## Building from Source
|
||
|
|
||
|
```
|
||
|
git clone https://git.pika-os.com/general-packages/falcond.git
|
||
|
cd falcond
|
||
|
cd falcond
|
||
|
zig build -Doptimize=ReleaseFast
|
||
|
```
|
||
|
|
||
|
## Runtime Dependencies
|
||
|
|
||
|
These should be feature detected by falcond so if not present that specific feature will not be used.
|
||
|
|
||
|
power-profiles-daemon or tuned + tuned-ppd
|
||
|
scx-sched
|
||
|
Linux kernel patched with AMD 3D vcache support
|
||
|
|
||
|
## Packaging
|
||
|
|
||
|
falcond should be placed in /usr/bin/falcond and run via a service file. There is an example systemd service file in ./falcond/debian/falcond.service
|
||
|
|
||
|
falcond needs profiles to be useful, these should be placed in /usr/share/falcond/profiles alongside the system.conf in /usr/share/falcond/system.conf. Upto date profiles can be found in the [PikaOS-Linux/falcond-profiles](https://github.com/PikaOS-Linux/falcond-profiles) repository. We currently pull the latest profiles from there on building of this package but you could also package seperately and depend on that package.
|
||
|
|
||
|
There is a config file in /etc/falcond/config.conf which is generated automatically on first run. You could also package that if you need different default settings.
|