https://github.com/zebp/procpin
A daemon for pinning processes to Zen CCXes
https://github.com/zebp/procpin
Last synced: about 2 months ago
JSON representation
A daemon for pinning processes to Zen CCXes
- Host: GitHub
- URL: https://github.com/zebp/procpin
- Owner: zebp
- License: mit
- Created: 2022-09-14T23:08:05.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-12T00:22:58.000Z (5 months ago)
- Last Synced: 2025-03-15T08:12:33.116Z (2 months ago)
- Language: Rust
- Size: 12.7 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# procpin
A daemon for pinning processes to specific Zen CCXes.
## Running
### systemd
Running under `systemd` is the same as any other service, simply start and enable the service.
```bash
systemctl enable procpin.service
systemctl start procpin.service
```## Configuration
To configure the procpin daemon create a `procpin.toml` file in `/etc`.
### Sample configuration
```toml
[programs]
hx = 0 # Pin Helix to CCX 1
ffmpeg = [2, 3] # Pin ffmpeg to either CCX 3 or 4.
```## Why would I want to pin processes?
AMD's [Zen](https://en.wikipedia.org/wiki/Zen_(microarchitecture)) series of architectures group cores into core complexes (commonly referred to as CCXes) with a shared L3 cache. When the scheduler moves processes to a different CCX there can be a performance penalty as there's higher latency to access L3 cache in the other complex, which can be critical for games. On top of that, starting with Zen 2, processors are built using multiple chips per socket called "chiplets". If a process moves between chiplets there is an even larger latency penalty and performance can be drastically impacted.