mirror of
https://github.com/AdnanHodzic/auto-cpufreq.git
synced 2025-07-27 23:54:13 +02:00
Merge master into dev
This commit is contained in:
parent
47c4b06506
commit
2b30b6078d
127
README.md
127
README.md
@ -12,34 +12,37 @@ auto-cpufreq is looking for [co-maintainers & open source developers to help sha
|
||||
|
||||
## Index
|
||||
|
||||
* [Why do I need auto-cpufreq?](https://github.com/AdnanHodzic/auto-cpufreq/#why-do-i-need-auto-cpufreq)
|
||||
* [Supported architectures and devices](https://github.com/AdnanHodzic/auto-cpufreq/#supported-architectures-and-devices)
|
||||
* [Features](https://github.com/AdnanHodzic/auto-cpufreq/#features)
|
||||
* [Installing auto-cpufreq](https://github.com/AdnanHodzic/auto-cpufreq/#installing-auto-cpufreq)
|
||||
* [Snap store](https://github.com/AdnanHodzic/auto-cpufreq/#snap-store)
|
||||
* [auto-cpufreq-installer](https://github.com/AdnanHodzic/auto-cpufreq/#auto-cpufreq-installer)
|
||||
* [AUR package (Arch/Manjaro Linux)](https://github.com/AdnanHodzic/auto-cpufreq/#aur-package-archmanjaro-linux)
|
||||
* [Post Installation](https://github.com/AdnanHodzic/auto-cpufreq/blob/install_performance_rm/README.md#post-installation)
|
||||
* [Configuring auto-cpufreq](https://github.com/AdnanHodzic/auto-cpufreq/#configuring-auto-cpufreq)
|
||||
* [1: power_helper.py script](https://github.com/AdnanHodzic/auto-cpufreq/#1-power_helperpy-script)
|
||||
* [2: auto-cpufreq config file](https://github.com/AdnanHodzic/auto-cpufreq/#2-auto-cpufreq-config-file)
|
||||
* [Example config file contents](https://github.com/AdnanHodzic/auto-cpufreq/#example-config-file-contents)
|
||||
* [How to run auto-cpufreq](https://github.com/AdnanHodzic/auto-cpufreq/#how-to-run-auto-cpufreq)
|
||||
* [auto-cpufreq modes and options](https://github.com/AdnanHodzic/auto-cpufreq/#auto-cpufreq-modes-and-options)
|
||||
* [monitor](https://github.com/AdnanHodzic/auto-cpufreq/#monitor)
|
||||
* [live](https://github.com/AdnanHodzic/auto-cpufreq/#live)
|
||||
* [overriding governor](https://github.com/AdnanHodzic/auto-cpufreq/#overriding-governor)
|
||||
* [Install - auto-cpufreq daemon](https://github.com/AdnanHodzic/auto-cpufreq/#install---auto-cpufreq-daemon)
|
||||
* [Remove - auto-cpufreq daemon](https://github.com/AdnanHodzic/auto-cpufreq/#remove---auto-cpufreq-daemon)
|
||||
* [stats](https://github.com/AdnanHodzic/auto-cpufreq/#stats)
|
||||
* [Troubleshooting](https://github.com/AdnanHodzic/auto-cpufreq/#troubleshooting)
|
||||
* [AUR](https://github.com/AdnanHodzic/auto-cpufreq/#aur)
|
||||
* [Discussion](https://github.com/AdnanHodzic/auto-cpufreq/#discussion)
|
||||
* [Donate](https://github.com/AdnanHodzic/auto-cpufreq/#donate)
|
||||
* [Financial donation](https://github.com/AdnanHodzic/auto-cpufreq/#financial-donation)
|
||||
* [Paypal](https://github.com/AdnanHodzic/auto-cpufreq/#paypal)
|
||||
* [BitCoin](https://github.com/AdnanHodzic/auto-cpufreq/#bitcoin)
|
||||
* [Code contribution](https://github.com/AdnanHodzic/auto-cpufreq/#code-contribution)
|
||||
* [Why do I need auto-cpufreq?](#why-do-i-need-auto-cpufreq)
|
||||
* [Supported architectures and devices](#supported-architectures-and-devices)
|
||||
* [Features](#features)
|
||||
* [Installing auto-cpufreq](#installing-auto-cpufreq)
|
||||
* [Snap store](#snap-store)
|
||||
* [auto-cpufreq-installer](#auto-cpufreq-installer)
|
||||
* [AUR package (Arch/Manjaro Linux)](#aur-package-archmanjaro-linux)
|
||||
* [Update using installer](#update-using-auto-cpufreq-installer)
|
||||
* [Post Installation](#post-installation)
|
||||
* [Configuring auto-cpufreq](#configuring-auto-cpufreq)
|
||||
* [1: power_helper.py script (Snap package install only)](#1-power_helperpy-script-snap-package-install-only)
|
||||
* [2: `--force` governor override](#2---force-governor-override)
|
||||
* [3: auto-cpufreq config file](#3-auto-cpufreq-config-file)
|
||||
* [Example config file contents](#example-config-file-contents)
|
||||
* [How to run auto-cpufreq](#how-to-run-auto-cpufreq)
|
||||
* [auto-cpufreq modes and options](#auto-cpufreq-modes-and-options)
|
||||
* [monitor](#monitor)
|
||||
* [live](#live)
|
||||
* [overriding governor](#overriding-governor)
|
||||
* [Install - auto-cpufreq daemon](#install---auto-cpufreq-daemon)
|
||||
* [Update - auto-cpufreq update](#update---auto-cpufreq-update)
|
||||
* [Remove - auto-cpufreq daemon](#remove---auto-cpufreq-daemon)
|
||||
* [stats](#stats)
|
||||
* [Troubleshooting](#troubleshooting)
|
||||
* [AUR](#aur)
|
||||
* [Discussion](#discussion)
|
||||
* [Donate](#donate)
|
||||
* [Financial donation](#financial-donation)
|
||||
* [Paypal](#paypal)
|
||||
* [BitCoin](#bitcoin)
|
||||
* [Code contribution](#code-contribution)
|
||||
|
||||
## Why do I need auto-cpufreq?
|
||||
|
||||
@ -85,10 +88,10 @@ auto-cpufreq is available on the [snap store](https://snapcraft.io/auto-cpufreq)
|
||||
sudo snap install auto-cpufreq
|
||||
```
|
||||
|
||||
**Please note:**
|
||||
**Please note:**
|
||||
* Make sure [snapd](https://snapcraft.io/docs/installing-snapd) is installed and `snap version` version is >= 2.44 for `auto-cpufreq` to fully work due to [recent snapd changes](https://github.com/snapcore/snapd/pull/8127).
|
||||
|
||||
* Fedora users will [encounter following error](https://twitter.com/killyourfm/status/1291697985236144130) due to `cgroups v2` [being in development](https://github.com/snapcore/snapd/pull/7825). This problem can be resolved by either running `sudo snap run auto-cpufreq` after the snap installation or by using the [auto-cpufreq-installer](https://github.com/AdnanHodzic/auto-cpufreq/#auto-cpufreq-installer) which doesn't have this issue.
|
||||
* Fedora users will [encounter following error](https://twitter.com/killyourfm/status/1291697985236144130) due to `cgroups v2` [being in development](https://github.com/snapcore/snapd/pull/7825). This problem can be resolved by either running `sudo snap run auto-cpufreq` after the snap installation or by using the [auto-cpufreq-installer](#auto-cpufreq-installer) which doesn't have this issue.
|
||||
|
||||
### auto-cpufreq-installer
|
||||
|
||||
@ -98,12 +101,15 @@ Get source code, run installer and follow on screen instructions:
|
||||
git clone https://github.com/AdnanHodzic/auto-cpufreq.git
|
||||
cd auto-cpufreq && sudo ./auto-cpufreq-installer
|
||||
```
|
||||
### Update using auto-cpufreq-installer
|
||||
|
||||
The feature is available from version *1.9.8*. For further information: [--update](#update---auto-cpufreq-update)
|
||||
|
||||
In case you encounter any problems with `auto-cpufreq-installer`, please [submit a bug report](https://github.com/AdnanHodzic/auto-cpufreq/issues/new).
|
||||
|
||||
### AUR package (Arch/Manjaro Linux)
|
||||
|
||||
*AUR is currently unmaintained & has issues*! Until someone starts maintaining it, use the [auto-cpufreq-installer](https://github.com/AdnanHodzic/auto-cpufreq#auto-cpufreq-installer) if you intend to have the latest changes as otherwise you'll run into errors, i.e: [#471](https://github.com/AdnanHodzic/auto-cpufreq/issues/471). However, if you still wish to use AUR then follow the [Troubleshooting](https://github.com/AdnanHodzic/auto-cpufreq/#aur) section for solved known issues.
|
||||
*AUR is currently unmaintained & has issues*! Until someone starts maintaining it, use the [auto-cpufreq-installer](#auto-cpufreq-installer) if you intend to have the latest changes as otherwise you'll run into errors, i.e: [#471](https://github.com/AdnanHodzic/auto-cpufreq/issues/471). However, if you still wish to use AUR then follow the [Troubleshooting](#aur) section for solved known issues.
|
||||
|
||||
* [Binary Package](https://aur.archlinux.org/packages/auto-cpufreq)
|
||||
(For the latest binary release on github)
|
||||
@ -119,11 +125,11 @@ auto-cpufreq makes all decisions automatically based on various factors like cpu
|
||||
|
||||
### 1: power_helper.py script (Snap package install **only**)
|
||||
|
||||
When installing auto-cpufreq using [auto-cpufreq-installer](https://github.com/AdnanHodzic/auto-cpufreq/#auto-cpufreq-installer) if it detects [GNOME Power profiles service](https://twitter.com/fooctrl/status/1467469508373884933) is running it will automatically disable it. Otherwise this daemon will cause conflicts and various other performance issues.
|
||||
When installing auto-cpufreq using [auto-cpufreq-installer](#auto-cpufreq-installer) if it detects [GNOME Power profiles service](https://twitter.com/fooctrl/status/1467469508373884933) is running it will automatically disable it. Otherwise this daemon will cause conflicts and various other performance issues.
|
||||
|
||||
However, when auto-cpufreq is installed as Snap package it's running as part of a container with limited permissions to your host machine, hence it's *highly recommended* you disable GNOME Power Profiles Daemon using `power_helper.py` script.
|
||||
|
||||
**Please Note:**
|
||||
**Please Note:**<br>
|
||||
The [`power_helper.py`](https://github.com/AdnanHodzic/auto-cpufreq/blob/master/auto_cpufreq/power_helper.py) script is located at `auto_cpufreq/power_helper.py`. In order to have access to it, you need to first clone
|
||||
the repository:
|
||||
|
||||
@ -135,21 +141,21 @@ Navigate to repo location where `power_helper.py` resides, i.e:
|
||||
|
||||
Make sure to have `psutil` Python library installed before next step, i.e: `sudo python3 -m pip install psutil`
|
||||
|
||||
Then disable GNOME Power Profiles Daemon by runing:
|
||||
Then disable GNOME Power Profiles Daemon by running:
|
||||
|
||||
`sudo python3 power_helper.py --gnome_power_disable`
|
||||
|
||||
### 2: `--force` governor override
|
||||
|
||||
By default auto-cpufreq uses `balanced` mode which works the best on various systems and situations.
|
||||
By default auto-cpufreq uses `balanced` mode which works the best on various systems and situations.
|
||||
|
||||
However, you can override this behaviour by switching to `performance` or `powersave` mode manually. Performance will result in higher frequencies by default, but also results in higher energy use (battery consumption) and should be used if max performance is necessary. Otherwise `powersave` will do the opposite and extend the battery life to its maximum.
|
||||
|
||||
See [`--force` flag](https://github.com/AdnanHodzic/auto-cpufreq/#overriding-governor) for more info.
|
||||
See [`--force` flag](#overriding-governor) for more info.
|
||||
|
||||
### 3: auto-cpufreq config file
|
||||
|
||||
You can configure seperate profiles for the battery and power supply. These profiles will let you pick which governor to use, and how and when turbo boost is enabled. The possible values for turbo boost behavior are `always`, `auto` and `never`. The default behavior is `auto`, which only kicks in during high load.
|
||||
You can configure separate profiles for the battery and power supply. These profiles will let you pick which governor to use, and how and when turbo boost is enabled. The possible values for turbo boost behavior are `always`, `auto` and `never`. The default behavior is `auto`, which only kicks in during high load.
|
||||
|
||||
By default, auto-cpufreq does not use the config file! If you wish to use it, the location where config needs to be placed for it to be read automatically is: `/etc/auto-cpufreq.conf`
|
||||
|
||||
@ -201,22 +207,25 @@ turbo = auto
|
||||
## How to run auto-cpufreq
|
||||
auto-cpufreq should be run with with one of the following options:
|
||||
|
||||
* [monitor](https://github.com/AdnanHodzic/auto-cpufreq/#monitor)
|
||||
* [monitor](#monitor)
|
||||
- Monitor and see suggestions for CPU optimizations
|
||||
|
||||
* [live](https://github.com/AdnanHodzic/auto-cpufreq/#live)
|
||||
* [live](#live)
|
||||
- Monitor and make (temp.) suggested CPU optimizations
|
||||
|
||||
* [install](https://github.com/AdnanHodzic/auto-cpufreq/#install---auto-cpufreq-daemon) / [remove](https://github.com/AdnanHodzic/auto-cpufreq/#remove---auto-cpufreq-daemon)
|
||||
* [install](#install---auto-cpufreq-daemon) / [remove](#remove---auto-cpufreq-daemon)
|
||||
- Install/remove daemon for (permanent) automatic CPU optimizations
|
||||
|
||||
* [install_performance](https://github.com/AdnanHodzic/auto-cpufreq/#1-power_helperpy-script)
|
||||
* [update](#update---auto-cpufreq-update)
|
||||
- Update auto-cpufreq to the latest release
|
||||
|
||||
* [install_performance](#1-power_helperpy-script)
|
||||
- Install daemon in "performance" mode.
|
||||
|
||||
* [stats](https://github.com/AdnanHodzic/auto-cpufreq/#stats)
|
||||
* [stats](#stats)
|
||||
- View live stats of CPU optimizations made by daemon
|
||||
|
||||
* [force=TEXT](https://github.com/AdnanHodzic/auto-cpufreq/#overriding-governor)
|
||||
* [force=TEXT](#overriding-governor)
|
||||
- Force use of either the "powersave" or "performance" governor. Setting to "reset" goes back to normal mode
|
||||
|
||||
* config=TEXT
|
||||
@ -228,13 +237,13 @@ auto-cpufreq should be run with with one of the following options:
|
||||
* version
|
||||
- Show currently installed version
|
||||
|
||||
* [donate](https://github.com/AdnanHodzic/auto-cpufreq/#financial-donation)
|
||||
* [donate](#financial-donation)
|
||||
- To support the project
|
||||
|
||||
* help
|
||||
- Shows all of the above options
|
||||
|
||||
Running `auto-cpufreq --help` will print the same list of options as above. Read [auto-cpufreq modes and options](https://github.com/AdnanHodzic/auto-cpufreq/#auto-cpufreq-modes-and-options) for more details.
|
||||
Running `auto-cpufreq --help` will print the same list of options as above. Read [auto-cpufreq modes and options](#auto-cpufreq-modes-and-options) for more details.
|
||||
|
||||
## auto-cpufreq modes and options
|
||||
|
||||
@ -277,6 +286,12 @@ If the install has been performed as part of snap package, daemon status can be
|
||||
|
||||
`systemctl status snap.auto-cpufreq.service.service`
|
||||
|
||||
### Update - auto-cpufreq update
|
||||
|
||||
Update functionality works by cloning auto-cpufreq repo to /home directory of currently logged in user, installing it using [auto-cpufreq-installer](#auto-cpufreq-installer) and performing [auto-cpufreq daemon install](#install---auto-cpufreq-daemon) with [latest version](https://github.com/AdnanHodzic/auto-cpufreq/releases) changes.
|
||||
|
||||
Update the package by running: `sudo auto-cpufreq --update`
|
||||
|
||||
### Remove - auto-cpufreq daemon
|
||||
|
||||
auto-cpufreq daemon and its systemd service, along with all its persistent changes can be removed by running:
|
||||
@ -302,7 +317,12 @@ If daemon has been installed, live stats of CPU/system load monitoring and optim
|
||||
|
||||
**A:** If you're using `intel_pstate/amd-pstate` CPU management driver, consider changing it to `acpi-cpufreq`.
|
||||
|
||||
This can be done by editing the `GRUB_CMDLINE_LINUX_DEFAULT` params in `/etc/default/grub`.
|
||||
This can be done by editing the `GRUB_CMDLINE_LINUX_DEFAULT` params in `/etc/default/grub`. For instance:
|
||||
|
||||
```
|
||||
sudo nano /etc/default/grub
|
||||
# make sure you have nano installed, or you can use your favorite text editor.
|
||||
```
|
||||
|
||||
For Intel users:
|
||||
|
||||
@ -316,7 +336,20 @@ For AMD users:
|
||||
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash initcall_blacklist=amd_pstate_init amd_pstate.enable=0"
|
||||
```
|
||||
|
||||
After you are done, run `sudo update-grub` or `sudo grub-mkconfig -o /boot/grub/grub.cfg`, if you are using Arch.
|
||||
Once you have made the necessary changes to the GRUB configuration file, you can update it by running `sudo update-grub` or `sudo grub-mkconfig -o /boot/grub/grub.cfg` on Arch Linux. On the other hand, for Fedora, you can update the configuration file by running one of the following commands:
|
||||
|
||||
```
|
||||
sudo grub2-mkconfig -o /etc/grub2.cfg
|
||||
```
|
||||
|
||||
```
|
||||
sudo grub2-mkconfig -o /etc/grub2-efi.cfg
|
||||
```
|
||||
|
||||
```
|
||||
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||
# Legacy boot method for grub update.
|
||||
```
|
||||
|
||||
### AUR
|
||||
|
||||
|
@ -20,9 +20,9 @@ fi
|
||||
|
||||
#separator
|
||||
function separator {
|
||||
local COLOUMNS="`tput cols`"
|
||||
local COLUMNS="`tput cols`"
|
||||
echo -e "\n"
|
||||
printf "%0.s─" $(seq $COLOUMNS)
|
||||
printf "%0.s─" $(seq $COLUMNS)
|
||||
echo -e "\n"
|
||||
}
|
||||
|
||||
@ -37,8 +37,8 @@ function root_check {
|
||||
}
|
||||
|
||||
function header {
|
||||
local COLOUMNS="`tput cols`"
|
||||
MID="$((COLOUMNS / 2))"
|
||||
local COLUMNS="`tput cols`"
|
||||
MID="$((COLUMNS / 2))"
|
||||
HEADER="$1"
|
||||
printf "%0.s─" $(seq $((MID-(${#HEADER}/2)- 1)))
|
||||
echo -n " $HEADER "
|
||||
@ -272,6 +272,50 @@ function tool_remove {
|
||||
echo -e "\nauto-cpufreq tool and all its supporting files successfully removed."
|
||||
separator
|
||||
}
|
||||
function tool_update {
|
||||
# Specify the repository and package name
|
||||
# IT IS IMPORTANT TO NOTE THAT IF THE REPOSITORY STRUCTURE IS CHANGED, THE FOLLOWING FUNCTION NEEDS TO BE UPDATED ACCORDINGLY
|
||||
repository="AdnanHodzic/auto-cpufreq"
|
||||
# Fetch the latest release information from GitHub API
|
||||
latest_release=$(curl -s "https://api.github.com/repos/$repository/releases/latest")
|
||||
# Extract the latest release version without using jq
|
||||
latest_version=$(echo "$latest_release" | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)
|
||||
# Get the current version of auto-cpufreq
|
||||
#installed_version=$(pip list | awk '/auto-cpufreq/ {print $2}')
|
||||
installed_version=$(grep -oP "(?<=__requires__ = 'auto-cpufreq==)\d+(\.\d+)+" /opt/auto-cpufreq/venv/bin/auto-cpufreq)
|
||||
#Check whether the same is installed or not
|
||||
if [[ -z "$installed_version" ]]; then
|
||||
echo "Current version not found, please install auto-cpufreq first"
|
||||
echo $installed_version
|
||||
sleep 1
|
||||
exit 1
|
||||
fi
|
||||
installed_version="v$installed_version"
|
||||
# Compare the latest version with the installed version and perform update if necessary
|
||||
if [[ "$latest_version" == "$installed_version" ]]; then
|
||||
echo "auto-cpufreq is up to date"
|
||||
else
|
||||
echo -e "Updates are available,\nCurrent version: $installed_version\nLatest version: $latest_version \nNote that your previous custom settings might be \033[1merased\033[0m with the following update \nalong with the \033[1mcurrent\033[0m directory. "
|
||||
read -p "Do you want to update auto-cpufreq to the latest release? [y/n]: " ans
|
||||
if [[ "$ans" == "y" ]]; then
|
||||
header "Updating auto-cpufreq to the latest release\n"
|
||||
tool_remove
|
||||
echo -e "deleting the current directory\n"
|
||||
script_directory="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
mkdir "$script_directory/../auto-cpufreq $latest_version" && cd $_
|
||||
rm -rf $script_directory
|
||||
echo -e "cloning to the latest release\n"
|
||||
git clone https://github.com/AdnanHodzic/auto-cpufreq.git
|
||||
cd auto-cpufreq
|
||||
separator
|
||||
tool_install
|
||||
else
|
||||
separator
|
||||
echo "Aborting..."
|
||||
sleep 0.5
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function ask_operation {
|
||||
header "auto-cpufreq installer"
|
||||
@ -279,10 +323,11 @@ function ask_operation {
|
||||
\nOptions:\n"
|
||||
read -p \
|
||||
"[I]nstall
|
||||
[U]pdate
|
||||
[R]emove
|
||||
[Q]uit
|
||||
|
||||
Select a key: [i/r/q]: " answer
|
||||
Select a key: [i/u/r/q]: " answer
|
||||
}
|
||||
# End of functions
|
||||
|
||||
@ -295,6 +340,9 @@ else
|
||||
"--install")
|
||||
answer="i"
|
||||
;;
|
||||
"--update")
|
||||
answer="u"
|
||||
;;
|
||||
"--remove")
|
||||
answer="r"
|
||||
;;
|
||||
@ -307,6 +355,8 @@ fi
|
||||
case $answer in
|
||||
I|i)
|
||||
tool_install ;;
|
||||
U|u)
|
||||
tool_update ;;
|
||||
R|r)
|
||||
tool_remove ;;
|
||||
Q|q)
|
||||
|
75
auto_cpufreq/core.py
Normal file → Executable file
75
auto_cpufreq/core.py
Normal file → Executable file
@ -18,6 +18,8 @@ from math import isclose
|
||||
from pathlib import Path
|
||||
from shutil import which
|
||||
from subprocess import getoutput, call, run, check_output, DEVNULL
|
||||
import requests
|
||||
import re
|
||||
|
||||
# execution timestamp used in countdown func
|
||||
from datetime import datetime
|
||||
@ -162,7 +164,41 @@ def app_version():
|
||||
except Exception as e:
|
||||
print(repr(e))
|
||||
pass
|
||||
def verify_update():
|
||||
# Specify the repository and package name
|
||||
# IT IS IMPORTANT TO THAT IF THE REPOSITORY STRUCTURE IS CHANGED, THE FOLLOWING FUNCTION NEEDS TO BE UPDATED ACCORDINGLY
|
||||
# Fetch the latest release information from GitHub API
|
||||
latest_release_url = f"https://api.github.com/repos/AdnanHodzic/auto-cpufreq/releases/latest"
|
||||
latest_release = requests.get(latest_release_url).json()
|
||||
latest_version = latest_release["tag_name"]
|
||||
|
||||
# Get the current version of auto-cpufreq
|
||||
# Extract version number from the output string
|
||||
output = check_output(['auto-cpufreq', '--version']).decode('utf-8')
|
||||
version_line = next((re.search(r'\d+\.\d+\.\d+', line).group() for line in output.split('\n') if line.startswith('auto-cpufreq version')), None)
|
||||
installed_version = "v" + version_line
|
||||
#Check whether the same is installed or not
|
||||
# Compare the latest version with the installed version and perform update if necessary
|
||||
if latest_version == installed_version:
|
||||
print("auto-cpufreq is up to date")
|
||||
exit(0)
|
||||
else:
|
||||
print(f"Updates are available,\nCurrent version: {installed_version}\nLatest version: {latest_version}")
|
||||
print("Note that your previous custom settings might be erased with the following update")
|
||||
|
||||
def new_update():
|
||||
username = os.getlogin()
|
||||
home_dir = "/home/" + username
|
||||
os.chdir(home_dir)
|
||||
current_working_directory = os.getcwd()
|
||||
print("Cloning the latest release to the home directory: ")
|
||||
print(os.getcwd())
|
||||
run(["git", "clone", "https://github.com/AdnanHodzic/auto-cpufreq.git"])
|
||||
os.chdir("auto-cpufreq")
|
||||
print("package cloned to directory ", current_working_directory)
|
||||
run(['./auto-cpufreq-installer'], input='i\n', encoding='utf-8')
|
||||
|
||||
|
||||
# return formatted version for a better readability
|
||||
def get_formatted_version():
|
||||
literal_version = pkg_resources.require("auto-cpufreq")[0].version
|
||||
@ -416,7 +452,8 @@ def deploy_daemon_performance():
|
||||
|
||||
# output warning if gnome power profile is running
|
||||
gnome_power_detect_install()
|
||||
gnome_power_svc_disable_performance()
|
||||
#"gnome_power_svc_disable_performance" is not defined
|
||||
#gnome_power_svc_disable_performance()
|
||||
|
||||
# output warning if TLP service is detected
|
||||
tlp_service_detect()
|
||||
@ -1138,10 +1175,20 @@ def sysinfo():
|
||||
cpu_core = dict()
|
||||
freq_per_cpu = []
|
||||
for i in range(0, len(coreid_info), 3):
|
||||
freq_per_cpu.append(float(coreid_info[i + 1].split(":")[-1]))
|
||||
# ensure that indices are within the valid range, before accessing the corresponding elements
|
||||
if i + 1 < len(coreid_info):
|
||||
freq_per_cpu.append(float(coreid_info[i + 1].split(":")[-1]))
|
||||
else:
|
||||
# handle the case where the index is out of range
|
||||
continue
|
||||
# ensure that indices are within the valid range, before accessing the corresponding elements
|
||||
cpu = int(coreid_info[i].split(":")[-1])
|
||||
core = int(coreid_info[i + 2].split(":")[-1])
|
||||
cpu_core[cpu] = core
|
||||
if i + 2 < len(coreid_info):
|
||||
core = int(coreid_info[i + 2].split(":")[-1])
|
||||
cpu_core[cpu] = core
|
||||
else:
|
||||
# handle the case where the index is out of range
|
||||
continue
|
||||
|
||||
online_cpu_count = len(cpu_core)
|
||||
offline_cpus = [str(cpu) for cpu in range(total_cpu_count) if cpu not in cpu_core]
|
||||
@ -1159,15 +1206,26 @@ def sysinfo():
|
||||
cpu_temp_index = core_temp_labels.index(f"Core {core}")
|
||||
temp_per_cpu[i] = core_temp["coretemp"][cpu_temp_index].current
|
||||
else:
|
||||
temp = list(psutil.sensors_temperatures())
|
||||
temp_per_cpu = [core_temp[temp[0]][0].current] * online_cpu_count
|
||||
# iterate over all sensors
|
||||
for sensor in core_temp:
|
||||
# iterate over all temperatures in the current sensor
|
||||
for temp in core_temp[sensor]:
|
||||
if temp.label == 'CPU':
|
||||
temp_per_cpu = [temp.current] * online_cpu_count
|
||||
break
|
||||
else:
|
||||
continue
|
||||
break
|
||||
else: # if 'CPU' label not found in any sensor, use first available temperature
|
||||
temp = list(core_temp.keys())[0]
|
||||
temp_per_cpu = [core_temp[temp][0].current] * online_cpu_count
|
||||
except Exception as e:
|
||||
print(repr(e))
|
||||
pass
|
||||
|
||||
print("Core\tUsage\tTemperature\tFrequency")
|
||||
for (cpu, usage, freq, temp) in zip(cpu_core, usage_per_cpu, freq_per_cpu, temp_per_cpu):
|
||||
print(f"CPU{cpu}:\t{usage:>5.1f}% {temp:>3.0f} °C {freq:>5.0f} MHz")
|
||||
print(f"CPU{cpu} {usage:>5.1f}% {temp:>3.0f} °C {freq:>5.0f} MHz")
|
||||
|
||||
if offline_cpus:
|
||||
print(f"\nDisabled CPUs: {','.join(offline_cpus)}")
|
||||
@ -1236,4 +1294,5 @@ def not_running_daemon_check():
|
||||
exit(1)
|
||||
elif os.getenv("PKG_MARKER") == "SNAP" and dcheck == "disabled":
|
||||
daemon_not_running_msg()
|
||||
exit(1)
|
||||
exit(1)
|
||||
|
||||
|
@ -18,6 +18,7 @@ from auto_cpufreq.power_helper import *
|
||||
@click.command()
|
||||
@click.option("--monitor", is_flag=True, help="Monitor and see suggestions for CPU optimizations")
|
||||
@click.option("--live", is_flag=True, help="Monitor and make (temp.) suggested CPU optimizations")
|
||||
@click.option("--update", is_flag=True, help="Update daemon and package for (permanent) automatic CPU optimizations")
|
||||
@click.option("--install", is_flag=True, help="Install daemon for (permanent) automatic CPU optimizations")
|
||||
@click.option("--remove", is_flag=True, help="Remove daemon for (permanent) automatic CPU optimizations")
|
||||
|
||||
@ -35,7 +36,7 @@ from auto_cpufreq.power_helper import *
|
||||
@click.option("--donate", is_flag=True, help="Support the project")
|
||||
@click.option("--log", is_flag=True, hidden=True)
|
||||
@click.option("--daemon", is_flag=True, hidden=True)
|
||||
def main(config, daemon, debug, install, remove, live, log, monitor, stats, version, donate, force, get_state):
|
||||
def main(config, daemon, debug, update, install, remove, live, log, monitor, stats, version, donate, force, get_state):
|
||||
|
||||
# display info if config file is used
|
||||
def config_info_dialog():
|
||||
@ -45,7 +46,8 @@ def main(config, daemon, debug, install, remove, live, log, monitor, stats, vers
|
||||
# set governor override unless None or invalid
|
||||
if force is not None:
|
||||
not_running_daemon_check()
|
||||
set_override(force)
|
||||
root_check() # Calling root_check before set_override as it will require sudo access
|
||||
set_override(force) # Calling set override, only if force has some values
|
||||
|
||||
if len(sys.argv) == 1:
|
||||
|
||||
@ -85,6 +87,8 @@ def main(config, daemon, debug, install, remove, live, log, monitor, stats, vers
|
||||
set_autofreq()
|
||||
countdown(2)
|
||||
else:
|
||||
pass
|
||||
#"daemon_not_found" is not defined
|
||||
daemon_not_found()
|
||||
elif monitor:
|
||||
config_info_dialog()
|
||||
@ -211,7 +215,8 @@ def main(config, daemon, debug, install, remove, live, log, monitor, stats, vers
|
||||
auto_cpufreq_stats_file.close()
|
||||
|
||||
auto_cpufreq_stats_path.unlink()
|
||||
# ToDo:
|
||||
# ToDo:
|
||||
# {the following snippet also used in --update, update it there too(if required)}
|
||||
# * undo bluetooth boot disable
|
||||
gnome_power_rm_reminder_snap()
|
||||
remove_complete_msg()
|
||||
@ -219,6 +224,32 @@ def main(config, daemon, debug, install, remove, live, log, monitor, stats, vers
|
||||
root_check()
|
||||
remove_daemon()
|
||||
remove_complete_msg()
|
||||
elif update:
|
||||
root_check()
|
||||
if os.getenv("PKG_MARKER") == "SNAP":
|
||||
print("Detected auto-cpufreq was installed using snap")
|
||||
# refresh snap directly using this command
|
||||
|
||||
print("Please update using snap package manager, i.e: `sudo snap refresh auto-cpufreq`.")
|
||||
#check for AUR
|
||||
elif subprocess.run(["bash", "-c", "command -v yay >/dev/null 2>&1"]).returncode == 0 or subprocess.run(["bash", "-c", "command -v pacman >/dev/null 2>&1"]).returncode == 0:
|
||||
print("Arch-based distribution with AUR support detected. Please refresh auto-cpufreq using your AUR helper.")
|
||||
else:
|
||||
verify_update()
|
||||
ans = input ("Do you want to update auto-cpufreq to the latest release? [y/n]: ")
|
||||
valid_options = ['y', 'Y', 'yes', 'YES', 'Yes']
|
||||
if ans.lower() in valid_options:
|
||||
remove_daemon()
|
||||
remove_complete_msg()
|
||||
new_update()
|
||||
else:
|
||||
print("incorrect input\n")
|
||||
print("Aborted")
|
||||
print("enabling daemon")
|
||||
run(["auto-cpufreq", "--install"])
|
||||
print("auto-cpufreq is installed with the latest version")
|
||||
app_version()
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
0
requirements.txt
Normal file → Executable file
0
requirements.txt
Normal file → Executable file
@ -1,2 +1,3 @@
|
||||
#!/bin/sh
|
||||
export PATH="$PATH:/usr/local/bin"
|
||||
exec /usr/local/bin/auto-cpufreq --daemon
|
||||
|
@ -100,6 +100,12 @@ function driver () {
|
||||
cat $FLROOT/cpu0/cpufreq/scaling_driver
|
||||
}
|
||||
|
||||
function write_value () {
|
||||
if [ -w $FLNM ]; then
|
||||
echo $VALUE > $FLNM
|
||||
fi
|
||||
}
|
||||
|
||||
function set_driver () {
|
||||
DRIVER=`driver`
|
||||
case $DRIVER in
|
||||
@ -136,7 +142,7 @@ function set_governor () {
|
||||
while [ $i -ne $cpucount ]
|
||||
do
|
||||
FLNM="$FLROOT/cpu"$i"/cpufreq/scaling_governor"
|
||||
echo $VALUE > $FLNM
|
||||
write_value
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
else
|
||||
@ -178,7 +184,7 @@ function set_frequency () {
|
||||
while [ $i -ne $cpucount ]
|
||||
do
|
||||
FLNM="$FLROOT/cpu"$i"/cpufreq/scaling_setspeed"
|
||||
echo $VALUE > $FLNM
|
||||
write_value
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
else
|
||||
@ -201,7 +207,7 @@ function set_frequency_min () {
|
||||
while [ $i -ne $cpucount ]
|
||||
do
|
||||
FLNM="$FLROOT/cpu"$i"/cpufreq/scaling_min_freq"
|
||||
echo $VALUE > $FLNM
|
||||
write_value
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
else
|
||||
@ -224,7 +230,7 @@ function set_frequency_max () {
|
||||
while [ $i -ne $cpucount ]
|
||||
do
|
||||
FLNM="$FLROOT/cpu"$i"/cpufreq/scaling_max_freq"
|
||||
echo $VALUE > $FLNM
|
||||
write_value
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
else
|
||||
@ -276,7 +282,7 @@ function set_energy_performance_preference () {
|
||||
while [ $i -ne $cpucount ]
|
||||
do
|
||||
FLNM="$FLROOT/cpu"$i"/cpufreq/energy_performance_preference"
|
||||
echo $VALUE > $FLNM
|
||||
write_value
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
else
|
||||
|
@ -20,6 +20,7 @@ parts:
|
||||
python-packages:
|
||||
- setuptools
|
||||
- wheel
|
||||
- requests
|
||||
build-packages:
|
||||
- gcc
|
||||
- python3-dev
|
||||
|
Loading…
x
Reference in New Issue
Block a user