Improve logging (#148)
Now auto-cpufreq will write directly to the log file or stdout. The file will automatically be cleared when on each refresh and on startup.
This commit is contained in:
parent
7169561054
commit
f3f652d69e
|
@ -12,7 +12,7 @@ import warnings
|
||||||
from math import isclose
|
from math import isclose
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from pprint import pformat
|
from pprint import pformat
|
||||||
from subprocess import getoutput, call, run, check_output
|
from subprocess import getoutput, call, run, check_output, DEVNULL
|
||||||
|
|
||||||
import psutil
|
import psutil
|
||||||
import distro
|
import distro
|
||||||
|
@ -30,7 +30,7 @@ SCRIPTS_DIR = Path("/usr/local/share/auto-cpufreq/scripts/")
|
||||||
ALL_GOVERNORS = ("performance", "ondemand", "conservative", "schedutil", "userspace", "powersave")
|
ALL_GOVERNORS = ("performance", "ondemand", "conservative", "schedutil", "userspace", "powersave")
|
||||||
CPUS = os.cpu_count()
|
CPUS = os.cpu_count()
|
||||||
|
|
||||||
# Note:
|
# Note:
|
||||||
# "load1m" & "cpuload" can't be global vars and to in order to show correct data must be
|
# "load1m" & "cpuload" can't be global vars and to in order to show correct data must be
|
||||||
# decraled where their execution takes place
|
# decraled where their execution takes place
|
||||||
|
|
||||||
|
@ -38,13 +38,23 @@ CPUS = os.cpu_count()
|
||||||
powersave_load_threshold = (75*CPUS)/100
|
powersave_load_threshold = (75*CPUS)/100
|
||||||
performance_load_threshold = (50*CPUS)/100
|
performance_load_threshold = (50*CPUS)/100
|
||||||
|
|
||||||
# auto-cpufreq log file
|
# auto-cpufreq log file path
|
||||||
auto_cpufreq_log_file = Path("/var/log/auto-cpufreq.log")
|
auto_cpufreq_log_path = None
|
||||||
auto_cpufreq_log_file_snap = Path("/var/snap/auto-cpufreq/current/auto-cpufreq.log")
|
auto_cpufreq_log_file = None
|
||||||
|
|
||||||
|
if os.getenv("PKG_MARKER") == "SNAP":
|
||||||
|
auto_cpufreq_log_path = Path("/var/snap/auto-cpufreq/current/auto-cpufreq.log")
|
||||||
|
else:
|
||||||
|
auto_cpufreq_log_path = Path("/var/log/auto-cpufreq.log")
|
||||||
|
|
||||||
# daemon check
|
# daemon check
|
||||||
dcheck = getoutput("snapctl get daemon")
|
dcheck = getoutput("snapctl get daemon")
|
||||||
|
|
||||||
|
def file_logging():
|
||||||
|
global auto_cpufreq_log_file
|
||||||
|
auto_cpufreq_log_file = open(auto_cpufreq_log_path, "w")
|
||||||
|
sys.stdout = auto_cpufreq_log_file
|
||||||
|
|
||||||
# ToDo: read version from snap/snapcraft.yaml and write to $SNAP/version for use with snap installs
|
# ToDo: read version from snap/snapcraft.yaml and write to $SNAP/version for use with snap installs
|
||||||
# also come up with same kind of solution for AUR
|
# also come up with same kind of solution for AUR
|
||||||
def app_version():
|
def app_version():
|
||||||
|
@ -95,7 +105,7 @@ def turbo(value: bool = None):
|
||||||
|
|
||||||
# display current state of turbo
|
# display current state of turbo
|
||||||
def get_turbo():
|
def get_turbo():
|
||||||
|
|
||||||
if turbo():
|
if turbo():
|
||||||
print("Currently turbo boost is: on")
|
print("Currently turbo boost is: on")
|
||||||
else:
|
else:
|
||||||
|
@ -220,7 +230,7 @@ def deploy_daemon():
|
||||||
except:
|
except:
|
||||||
print("\nERROR:\nWas unable to turn off bluetooth on boot")
|
print("\nERROR:\nWas unable to turn off bluetooth on boot")
|
||||||
|
|
||||||
auto_cpufreq_log_file.touch(exist_ok=True)
|
auto_cpufreq_log_path.touch(exist_ok=True)
|
||||||
|
|
||||||
print("\n* Deploy auto-cpufreq install script")
|
print("\n* Deploy auto-cpufreq install script")
|
||||||
shutil.copy(SCRIPTS_DIR / "auto-cpufreq-install.sh", "/usr/bin/auto-cpufreq-install")
|
shutil.copy(SCRIPTS_DIR / "auto-cpufreq-install.sh", "/usr/bin/auto-cpufreq-install")
|
||||||
|
@ -238,7 +248,7 @@ def remove():
|
||||||
if not os.path.exists("/usr/bin/auto-cpufreq-remove"):
|
if not os.path.exists("/usr/bin/auto-cpufreq-remove"):
|
||||||
print("\nauto-cpufreq daemon is not installed.\n")
|
print("\nauto-cpufreq daemon is not installed.\n")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
print("\n" + "-" * 21 + " Removing auto-cpufreq daemon " + "-" * 22 + "\n")
|
print("\n" + "-" * 21 + " Removing auto-cpufreq daemon " + "-" * 22 + "\n")
|
||||||
|
|
||||||
print("* Turn on bluetooth on boot")
|
print("* Turn on bluetooth on boot")
|
||||||
|
@ -261,8 +271,11 @@ def remove():
|
||||||
os.remove("/usr/bin/auto-cpufreq-remove")
|
os.remove("/usr/bin/auto-cpufreq-remove")
|
||||||
|
|
||||||
# delete log file
|
# delete log file
|
||||||
if auto_cpufreq_log_file.exists():
|
if auto_cpufreq_log_path.exists():
|
||||||
auto_cpufreq_log_file.unlink()
|
if auto_cpufreq_log_file is not None:
|
||||||
|
auto_cpufreq_log_file.close()
|
||||||
|
|
||||||
|
auto_cpufreq_log_path.unlink()
|
||||||
|
|
||||||
# restore original cpufrectl script
|
# restore original cpufrectl script
|
||||||
cpufreqctl_restore()
|
cpufreqctl_restore()
|
||||||
|
@ -283,7 +296,6 @@ def root_check():
|
||||||
footer()
|
footer()
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
|
|
||||||
# refresh countdown
|
# refresh countdown
|
||||||
def countdown(s):
|
def countdown(s):
|
||||||
# Fix for wrong log output and "TERM environment variable not set"
|
# Fix for wrong log output and "TERM environment variable not set"
|
||||||
|
@ -295,6 +307,12 @@ def countdown(s):
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
|
if auto_cpufreq_log_file is not None:
|
||||||
|
auto_cpufreq_log_file.seek(0)
|
||||||
|
auto_cpufreq_log_file.truncate(0)
|
||||||
|
else:
|
||||||
|
run("clear")
|
||||||
|
|
||||||
# get cpu usage + system load for (last minute)
|
# get cpu usage + system load for (last minute)
|
||||||
def display_load():
|
def display_load():
|
||||||
|
|
||||||
|
@ -342,7 +360,7 @@ def set_powersave():
|
||||||
turbo(False)
|
turbo(False)
|
||||||
else:
|
else:
|
||||||
print("setting turbo boost: off")
|
print("setting turbo boost: off")
|
||||||
turbo(False)
|
turbo(False)
|
||||||
|
|
||||||
elif load1m > powersave_load_threshold:
|
elif load1m > powersave_load_threshold:
|
||||||
print("\nHigh system load")
|
print("\nHigh system load")
|
||||||
|
@ -363,7 +381,7 @@ def set_powersave():
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print("\nLoad optimal")
|
print("\nLoad optimal")
|
||||||
|
|
||||||
# high cpu usage trigger
|
# high cpu usage trigger
|
||||||
if cpuload >= 20:
|
if cpuload >= 20:
|
||||||
print("setting turbo boost: on")
|
print("setting turbo boost: on")
|
||||||
|
@ -413,7 +431,7 @@ def mon_powersave():
|
||||||
|
|
||||||
elif load1m > powersave_load_threshold:
|
elif load1m > powersave_load_threshold:
|
||||||
print("\nHigh system load")
|
print("\nHigh system load")
|
||||||
|
|
||||||
# high cpu usage trigger
|
# high cpu usage trigger
|
||||||
if cpuload >= 20:
|
if cpuload >= 20:
|
||||||
print("suggesting to set turbo boost: on")
|
print("suggesting to set turbo boost: on")
|
||||||
|
@ -427,10 +445,10 @@ def mon_powersave():
|
||||||
else:
|
else:
|
||||||
print("suggesting to set turbo boost: off")
|
print("suggesting to set turbo boost: off")
|
||||||
get_turbo()
|
get_turbo()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
print("\nLoad optimal")
|
print("\nLoad optimal")
|
||||||
|
|
||||||
# high cpu usage trigger
|
# high cpu usage trigger
|
||||||
if cpuload >= 20:
|
if cpuload >= 20:
|
||||||
print("suggesting to set turbo boost: on")
|
print("suggesting to set turbo boost: on")
|
||||||
|
@ -516,7 +534,7 @@ def set_performance():
|
||||||
else:
|
else:
|
||||||
print("setting turbo boost: on")
|
print("setting turbo boost: on")
|
||||||
turbo(True)
|
turbo(True)
|
||||||
|
|
||||||
footer()
|
footer()
|
||||||
|
|
||||||
|
|
||||||
|
@ -753,16 +771,9 @@ def no_log_msg():
|
||||||
|
|
||||||
# read log func
|
# read log func
|
||||||
def read_log():
|
def read_log():
|
||||||
|
# readlog
|
||||||
# read log (snap)
|
if os.path.isfile(auto_cpufreq_log_path):
|
||||||
if os.getenv("PKG_MARKER") == "SNAP":
|
call(["tail", "-n 50", "-f", str(auto_cpufreq_log_path)], stderr=DEVNULL)
|
||||||
if os.path.isfile(auto_cpufreq_log_file_snap):
|
|
||||||
call(["tail", "-n 50", "-f", str(auto_cpufreq_log_file_snap)])
|
|
||||||
else:
|
|
||||||
no_log_msg()
|
|
||||||
# read log (non snap)
|
|
||||||
elif os.path.isfile(auto_cpufreq_log_file):
|
|
||||||
call(["tail", "-n 50", "-f", str(auto_cpufreq_log_file)])
|
|
||||||
else:
|
else:
|
||||||
no_log_msg()
|
no_log_msg()
|
||||||
footer()
|
footer()
|
||||||
|
|
|
@ -31,6 +31,7 @@ def main(monitor, live, daemon, install, log, debug):
|
||||||
else:
|
else:
|
||||||
# Important: order does matter
|
# Important: order does matter
|
||||||
if daemon:
|
if daemon:
|
||||||
|
file_logging()
|
||||||
if os.getenv("PKG_MARKER") == "SNAP" and dcheck == "enabled":
|
if os.getenv("PKG_MARKER") == "SNAP" and dcheck == "enabled":
|
||||||
while True:
|
while True:
|
||||||
root_check()
|
root_check()
|
||||||
|
@ -41,7 +42,6 @@ def main(monitor, live, daemon, install, log, debug):
|
||||||
sysinfo()
|
sysinfo()
|
||||||
set_autofreq()
|
set_autofreq()
|
||||||
countdown(5)
|
countdown(5)
|
||||||
run("clear")
|
|
||||||
elif os.getenv("PKG_MARKER") != "SNAP":
|
elif os.getenv("PKG_MARKER") != "SNAP":
|
||||||
while True:
|
while True:
|
||||||
root_check()
|
root_check()
|
||||||
|
@ -52,7 +52,6 @@ def main(monitor, live, daemon, install, log, debug):
|
||||||
sysinfo()
|
sysinfo()
|
||||||
set_autofreq()
|
set_autofreq()
|
||||||
countdown(5)
|
countdown(5)
|
||||||
run("clear")
|
|
||||||
else:
|
else:
|
||||||
daemon_not_found()
|
daemon_not_found()
|
||||||
elif monitor:
|
elif monitor:
|
||||||
|
@ -66,7 +65,6 @@ def main(monitor, live, daemon, install, log, debug):
|
||||||
sysinfo()
|
sysinfo()
|
||||||
mon_autofreq()
|
mon_autofreq()
|
||||||
countdown(5)
|
countdown(5)
|
||||||
run("clear")
|
|
||||||
elif live:
|
elif live:
|
||||||
while True:
|
while True:
|
||||||
root_check()
|
root_check()
|
||||||
|
@ -78,7 +76,6 @@ def main(monitor, live, daemon, install, log, debug):
|
||||||
sysinfo()
|
sysinfo()
|
||||||
set_autofreq()
|
set_autofreq()
|
||||||
countdown(5)
|
countdown(5)
|
||||||
run("clear")
|
|
||||||
elif log:
|
elif log:
|
||||||
read_log()
|
read_log()
|
||||||
elif debug:
|
elif debug:
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=auto-cpufreq - Automatic CPU speed & power optimizer for Linux
|
Description=auto-cpufreq - Automatic CPU speed & power optimizer for Linux
|
||||||
After=network.target network-online.target
|
After=network.target network-online.target
|
||||||
ConditionPathExists=/var/log/auto-cpufreq.log
|
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
User=root
|
User=root
|
||||||
ExecStart=/usr/local/bin/auto-cpufreq --daemon
|
ExecStart=/usr/local/bin/auto-cpufreq --daemon
|
||||||
StandardOutput=append:/var/log/auto-cpufreq.log
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|
Loading…
Reference in New Issue