All-in-one Linux stress and benchmarking toolkit
Project description
Tux Toaster
████████╗██╗ ██╗██╗ ██╗
╚══██╔══╝██║ ██║╚██╗██╔╝
██║ ██║ ██║ ╚███╔╝
██║ ██║ ██║ ██╔██╗
██║ ╚██████╔╝██╔╝ ██╗
╚═╝ ╚═════╝ ╚═╝ ╚═╝
████████╗ ██████╗ █████╗ ███████╗████████╗███████╗██████╗
╚══██╔══╝██╔═══██╗██╔══██╗██╔════╝╚══██╔══╝██╔════╝██╔══██╗
██║ ██║ ██║███████║███████╗ ██║ █████╗ ██████╔╝
██║ ██║ ██║██╔══██║╚════██║ ██║ ██╔══╝ ██╔══██╗
██║ ╚██████╔╝██║ ██║███████║ ██║ ███████╗██║ ██║
╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝
================================================================
All-in-one Linux Stress Testing Toolkit
================================================================
⚠️ WARNING - RUN AT YOUR OWN RISK!⚠️
Tux Toaster is a workload generator that may harm your Linux system. Run it at your own risk. The developer is not responsible for any damage or data loss that may occur from using this software.
1. What is Tux Toaster?
Tux Toaster is an all-in-one performance toolkit designed for Linux systems. It triggers various load tests, referred to as "toasters," to help you evaluate the performance and stability of your system.
Project page: GitHub repository
2. Requirements
Tux Toaster targets Linux and relies on a few system tools in addition to Python:
- Python 3.8+ (tested on modern Linux kernels)
- Python package:
psutil(used by memory tests) - System utilities:
dd(coreutils),lsblkandtaskset(util-linux),pkill(procps) - Internet connectivity (network tests use public endpoints)
Optional/privileged:
- Root privileges for the "Unclean GC" runaway memory test to adjust
oom_score_adj
Install psutil if needed:
pip3 install psutil
3. How to Install and Run
Install from PyPI (recommended):
pip install tuxtoaster
tuxtoaster
Alternative: Install from source (editable)
git clone https://github.com/samatild/tuxtoaster.git
cd tuxtoaster
pip install -U pip setuptools wheel
pip install -e .
tuxtoaster
Add install location to PATH
If your shell can't find tuxtoaster, add the install directory to PATH:
- System installs (scripts in /usr/local/bin):
export PATH=/usr/local/bin:$PATH
- User installs (scripts in ~/.local/bin):
export PATH="$HOME/.local/bin:$PATH"
To make it persistent (bash):
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
Menu controls (console app):
- Use arrow keys to navigate, Enter to select.
- Many submenus support multi-select; hints are shown in the UI.
- Press
q,x, orEscin a menu to go back. - During tests, press Enter to stop.
Menu example
Main Menu
> CPU
Memory
Disk
Network
Multiple
About
Exit
Main Menu > Disk IO
> IOPS Reads
IOPS Writes
Random IOPS R/W
IOPS 50-50 R/W
Throughput Reads
Throughput Writes
Random Throughput R/W
Throughput 50-50 R/W
Read while write cache is getting flushed
Write on Buffer Cache
Back to Main
4. Available Tests
Tux Toaster offers a variety of tests to stress different system components:
- CPU:
- Single Core
- All Cores
- Custom Number of Cores (uses
taskset; experimental)
- Memory:
- Single Runaway Thread
- Multiple Runaway Threads
- Memory spikes
- Unclean GC (requires root to set
oom_score_adj)
- Disk:
- IOPS Reads (4K, direct I/O)
- IOPS Writes (4K, direct I/O)
- Random IOPS R/W (4K, random, direct I/O)
- IOPS 50-50 R/W (4K, direct I/O)
- Throughput Reads (4MB, direct I/O)
- Throughput Writes (4MB, direct I/O)
- Random Throughput R/W (4MB, random, direct I/O)
- Throughput 50-50 R/W (4MB, direct I/O)
- Read while write cache is getting flushed (page cache warm-up then read)
- Network:
- Network IN (Single) — downloads
https://proof.ovh.net/files/100Mb.dat - Network OUT (Single) — UDP to
8.8.8.8:53 - Network IN (Multiple) — N parallel downloads of the OVH file
- Network OUT (Multiple) — N parallel UDP senders to
8.8.8.8:53 - Socket Exhaustion (⚠️ Under development ⚠️)
- Simulate Latencies (⚠️ Under development ⚠️)
- Simulate disconnects (⚠️ Under development ⚠️)
- Simulate packet loss (⚠️ Under development ⚠️)
- Network IN (Single) — downloads
- Multiple tests at once: (⚠️Under Developement⚠️)
5. Detailed Notes per Category
-
CPU
- Single/All Cores spin tight loops to saturate CPU; stop with Enter.
- Custom Number of Cores pins workloads using
taskset. This path invokes an internal stress script; consider it experimental.
-
Memory
- Single Runaway Thread: allocates 1 GiB chunks repeatedly via anonymous
mmap; press Enter to stop. - Multiple Runaway Threads: user-selectable threads and per-allocation size (MB), stops on low memory; requires
psutil. - Memory spikes: bursts up to ~80–99% of RAM for 1s, pauses 1–10s, repeats.
- Unclean GC (runaway): attempts to set
oom_score_adj = -1000(root required) then allocates indefinitely. High risk of system instability.
- Single Runaway Thread: allocates 1 GiB chunks repeatedly via anonymous
-
Disk
- You select one or more mounted filesystems. For each, the tool creates
io_test_temp/and a temporary file, runsddloops, and cleans up on stop. - IOPS tests use 4K blocks; Throughput tests use 4MB blocks; many use
oflag=direct/iflag=directto bypass the page cache by design. - "Read while write cache is getting flushed" pre-creates a file to demonstrate delayed allocation/cache flush effects before sustained reads.
- Some filesystems may not support direct I/O on regular files; in that case,
ddmay print errors.
- You select one or more mounted filesystems. For each, the tool creates
-
Network
- IN tests stream a public test object; OUT tests send UDP to a public DNS server. Use responsibly; organizational firewalls may block this traffic.
- Multi-socket modes prompt for the number of parallel sockets; bandwidth is reported per socket when stopped.
6. Safety, Cleanup, and Permissions
- This tool intentionally creates heavy load; run in controlled environments.
- Disk tests write temporary files under the selected mount points and delete them on exit.
- Press Enter to stop any running test. If a test becomes unresponsive, you may need to terminate the Python process.
- The Unclean GC test needs root; otherwise it will warn and abort.
7. Known Limitations
- Several menu items are marked "Under development" and are placeholders.
- The CPU "Custom Number of Cores" mode is experimental and relies on
taskset; it may require additional internal scripts. - Direct I/O flags may not be honored on some filesystems or containerized environments.
- Network endpoints (
proof.ovh.net,8.8.8.8:53) may be blocked by your network policy.
8. Credits
This project menu makes use of the magnific Simple Term Menu library, which is available under the MIT License.
See LICENSE for project licensing details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tuxtoaster-1.2.3.tar.gz.
File metadata
- Download URL: tuxtoaster-1.2.3.tar.gz
- Upload date:
- Size: 19.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86fea7b9ae3bfaf2bf6fae964dcd5bae41c09df1e78b6eb9b8d85393c81d34ac
|
|
| MD5 |
1b18ce1dca93f4673fd8462db14ad7ff
|
|
| BLAKE2b-256 |
661c3950785a89d257024cf8680a002f6fff454899cc0e623c7132d8bb34ca35
|
File details
Details for the file tuxtoaster-1.2.3-py3-none-any.whl.
File metadata
- Download URL: tuxtoaster-1.2.3-py3-none-any.whl
- Upload date:
- Size: 35.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dba90d6abb12092996a7ac1310666d96e06ce330767468315c32084ce11c8ff8
|
|
| MD5 |
fb9997c52dbae11781571c16d2c2b95d
|
|
| BLAKE2b-256 |
461e2c7bd568f691d977f8ca406c395d4c6585455c7cd1930371b868f40e7c2f
|