Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
05413ce
[volt/scripts] add support for changing the min and max CPU frequency
pythonlover02 Aug 11, 2025
f71e627
[volt] lets actually handle the cases where the cpu files are for wha…
pythonlover02 Aug 11, 2025
9c02b85
[volt] fix the cpu apply button size
pythonlover02 Aug 11, 2025
af35b59
[volt] default to no systray just in case that the user has no systra…
pythonlover02 Aug 12, 2025
f2c0010
[volt] fix duplicated systray icon
pythonlover02 Aug 14, 2025
33c2664
[volt] remove redundant "CPU" on the settings names
pythonlover02 Aug 14, 2025
f056777
[volt] remove unneeded prints and make a little better the setToolTip
pythonlover02 Aug 14, 2025
8f9b54b
[volt] default to no transparency in the case the user DE dont suppor…
pythonlover02 Aug 14, 2025
2ebb7ae
[readme] add the missing max and min frequency change setting.
pythonlover02 Aug 14, 2025
645710b
[volt] standarice the way we use the option code
pythonlover02 Aug 14, 2025
a065ac9
[volt] add new kernel options, update recommended values and descript…
pythonlover02 Aug 20, 2025
429857c
[volt] add more info about kernel settings on the welcome window
pythonlover02 Aug 20, 2025
1839871
[volt] add more kernel settings
pythonlover02 Aug 20, 2025
5873e4b
[volt] reorganice kernel settings
pythonlover02 Aug 20, 2025
b47dbad
[volt] bump reported version to 1.2.0
pythonlover02 Aug 20, 2025
81770c6
[volt] add missing imports and remove unneded ones
pythonlover02 Aug 20, 2025
a7c115e
[volt] small refactor to the welcome window code
pythonlover02 Aug 22, 2025
a482dd6
[images] update images for 1.2.0
pythonlover02 Aug 31, 2025
c685ff5
[readme] add missing kernel documentation
pythonlover02 Aug 31, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 46 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ A graphical user interface for configuring GPU related environment variables and

- CPU Management
- Governor Selection: Choose from available CPU governors
- Adjust the maximum and minimum CPU frequencies within the permitted range.
- Scheduler Configuration: Select CPU pluggable schedulers (requires [scx](https://github.com/sched-ext/scx) and `Linux Kernel >= 6.12` or a `Custom Patched Kernel`)
- GPU Configuration
- Mesa Drivers: Configure Mesa Drivers specific environment variables
Expand All @@ -37,24 +38,64 @@ A graphical user interface for configuring GPU related environment variables and
- Kernel Configuration
- Choose /proc/sys/vm/compaction_proactiveness value
- Choose /proc/sys/vm/watermark_boost_factor value
- Choose /proc/sys/vm/watermark_scale_factor value
- Choose /proc/sys/vm/extfrag_threshold value
- Choose /proc/sys/vm/compact_unevictable_allowed value
- Choose /proc/sys/vm/defrag_mode value
- Choose /proc/sys/vm/min_free_kbytes value
- Choose /proc/sys/vm/overcommit_memory value
- Choose /proc/sys/vm/overcommit_ratio value
- Choose /proc/sys/vm/admin_reserve_kbytes value
- Choose /proc/sys/vm/user_reserve_kbytes value
- Choose /proc/sys/vm/max_map_count value
- Choose /proc/sys/vm/mmap_min_addr value
- Choose /proc/sys/vm/page_lock_unfairness value
- Choose /proc/sys/vm/swappiness value
- Choose /proc/sys/vm/page-cluster value
- Choose /proc/sys/vm/vfs_cache_pressure value
- Choose /proc/sys/vm/percpu_pagelist_high_fraction value
- Choose /proc/sys/vm/zone_reclaim_mode value
- Choose /proc/sys/vm/min_unmapped_ratio value
- Choose /proc/sys/vm/min_slab_ratio value
- Choose /proc/sys/vm/numa_stat value
- Choose /proc/sys/vm/oom_kill_allocating_task value
- Choose /proc/sys/vm/oom_dump_tasks value
- Choose /proc/sys/vm/panic_on_oom value
- Choose /proc/sys/vm/dirty_ratio value
- Choose /proc/sys/vm/dirty_background_ratio value
- Choose /proc/sys/vm/dirty_bytes value
- Choose /proc/sys/vm/dirty_background_bytes value
- Choose /proc/sys/vm/dirty_expire_centisecs value
- Choose /proc/sys/vm/dirty_writeback_centisecs value
- Choose /proc/sys/vm/vfs_cache_pressure value
- Choose /proc/sys/vm/dirtytime_expire_seconds value
- Choose /proc/sys/vm/laptop_mode value
- Choose /proc/sys/vm/nr_hugepages value
- Choose /proc/sys/vm/nr_overcommit_hugepages value
- Choose /proc/sys/vm/hugetlb_optimize_vmemmap value
- Choose /proc/sys/vm/stat_interval value
- Choose /sys/kernel/mm/transparent_hugepage/enabled value
- Choose /sys/kernel/mm/transparent_hugepage/shmem_enabled value
- Choose /sys/kernel/mm/transparent_hugepage/defrag value
- Choose /proc/sys/vm/zone_reclaim_mode value
- Choose /proc/sys/vm/page_lock_unfairness value
- Choose /sys/class/rtc/rtc0/max_user_freq value
- Choose /proc/sys/kernel/numa_balancing value
- Choose /proc/sys/kernel/randomize_va_space value
- Choose /proc/sys/kernel/perf_event_paranoid value
- Choose /proc/sys/kernel/sched_cfs_bandwidth_slice_us value
- Choose /proc/sys/kernel/sched_autogroup_enabled value
- Choose /proc/sys/kernel/sched_rt_runtime_us value
- Choose /proc/sys/kernel/sched_rt_period_us value
- Choose /proc/sys/kernel/sched_schedstats value
- Choose /proc/sys/kernel/timer_migration value
- Choose /proc/sys/kernel/watchdog value
- Choose /proc/sys/kernel/nmi_watchdog value
- Choose /proc/sys/vm/laptop_mode value
- Choose /proc/sys/kernel/hung_task_timeout_secs value
- Choose /proc/sys/kernel/pid_max value
- Choose /proc/sys/fs/file-max value
- Choose /proc/sys/net/core/rmem_max value
- Choose /proc/sys/net/core/wmem_max value
- Choose /proc/sys/net/ipv4/tcp_fastopen value
- Choose /proc/sys/net/ipv4/tcp_window_scaling value
- Choose /proc/sys/net/ipv4/tcp_timestamps value

- Launch Options: add custom Launch Options to the `volt` that will be passed to the program executed, example:
```
Expand Down Expand Up @@ -196,6 +237,7 @@ Documentation used:
- [NVIDIA 570 Drivers - Documentation](https://download.nvidia.com/XFree86/Linux-x86_64/570.153.02/README/openglenvvariables.html)
- [NVIDIA 470 Drivers - Documentation](https://download.nvidia.com/XFree86/Linux-x86_64/470.256.02/README/openglenvvariables.html)
- [NVIDIA 390 Drivers - Documentation](https://download.nvidia.com/XFree86/Linux-x86_64/390.157/README/openglenvvariables.html)
- [Linux Kernel - Subsystem Documentation](https://docs.kernel.org/subsystem-apis.html)

## Contributing:

Expand Down
Binary file modified images/1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified images/2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified images/3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 28 additions & 0 deletions scripts/volt-helper
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,20 @@ apply_governor() {
done
}

apply_max_freq() {
local max_freq="$1"
for CPU_PATH in /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq; do
echo "$max_freq" > "$CPU_PATH"
done
}

apply_min_freq() {
local min_freq="$1"
for CPU_PATH in /sys/devices/system/cpu/cpu*/cpufreq/scaling_min_freq; do
echo "$min_freq" > "$CPU_PATH"
done
}

terminate_existing_schedulers() {
local scheduler_pid=$(pgrep -f '^scx_' 2>/dev/null | head -n1)

Expand Down Expand Up @@ -52,19 +66,33 @@ manage_cpu() {

local governor=""
local scheduler=""
local max_freq=""
local min_freq=""

for arg in "${cpu_args[@]}"; do
if [[ "$arg" == governor:* ]]; then
governor="${arg#governor:}"
elif [[ "$arg" == scheduler:* ]]; then
scheduler="${arg#scheduler:}"
elif [[ "$arg" == max_freq:* ]]; then
max_freq="${arg#max_freq:}"
elif [[ "$arg" == min_freq:* ]]; then
min_freq="${arg#min_freq:}"
fi
done

if [ -n "$governor" ]; then
apply_governor "$governor"
fi

if [ -n "$min_freq" ]; then
apply_min_freq "$min_freq"
fi

if [ -n "$max_freq" ]; then
apply_max_freq "$max_freq"
fi

if [ -n "$scheduler" ]; then
handle_scheduler "$scheduler"
fi
Expand Down
2 changes: 1 addition & 1 deletion src/about.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def get_about_info():
{"label": "Description", "text": "Simple GUI program for modifying and creating the `volt` script and more. Providing an intuitive interface for configuration management, with the objective of getting the maximum performance posible of a PC"},
{"label": "License", "text": "GPL-3.0 License"},
{"label": "Author", "text": "pythonlover02"},
{"label": "Version", "text": "1.1.1"},
{"label": "Version", "text": "1.2.0"},
]

@staticmethod
Expand Down
4 changes: 4 additions & 0 deletions src/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ def save_config(cpu_widgets, gpu_widgets, kernel_widgets, disk_widgets, profile_

config['CPU'] = {
'governor': cpu_widgets['gov_combo'].currentText(),
'max_freq': cpu_widgets['max_freq_combo'].currentText(),
'min_freq': cpu_widgets['min_freq_combo'].currentText(),
'scheduler': cpu_widgets['sched_combo'].currentText()
}

Expand Down Expand Up @@ -106,6 +108,8 @@ def load_config(cpu_widgets, gpu_widgets, kernel_widgets, disk_widgets, profile_

if 'CPU' in config:
cpu_widgets['gov_combo'].setCurrentText(config['CPU'].get('governor', 'unset'))
cpu_widgets['max_freq_combo'].setCurrentText(config['CPU'].get('max_freq', 'unset'))
cpu_widgets['min_freq_combo'].setCurrentText(config['CPU'].get('min_freq', 'unset'))
cpu_widgets['sched_combo'].setCurrentText(config['CPU'].get('scheduler', 'unset'))

if 'Mesa' in config and 'mesa' in gpu_widgets:
Expand Down
Loading