aboutsummaryrefslogtreecommitdiff
path: root/perfmgr
blob: 0876db26fb1e8ccda1586ed7a49c6d103ebe705d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/usr/bin/python
import sys
import subprocess

def system(cmd):
    print(f"$ {cmd}")
    subprocess.run(cmd, shell=True)

def usage():
    print(f"usage: {sys.argv[0]} [info] / [on|off] / [turbo on|off] / [set value]")
    print(f"info         -> prints \'cpupower frequency-info\'")
    print(f"on|off       -> toggles powersave/performance (on is psave)")
    print(f"turbo on|off -> enables/disables turbo")
    print(f"set value    -> sets maximum clock speed value")

def main(argv) -> int:
    argc = len(argv)

    if argc < 2:
        usage()
        return 1

    opt1 = argv[1]

    if argc == 2:
        if opt1 == "on":
            system("sudo -E cpupower frequency-set -g powersave")
            return 0
        elif opt1 == "off":
            system("sudo -E cpupower frequency-set -g performance")
            return 0
        elif opt1 == "info":
            system("cpupower frequency-info")
            return 0
        elif opt1 == "turbo":
            print("error: not enough arguments for turbo")
            usage()
            return 1
        elif opt1 == "set":
            print("error: not enough arguments to set clock")
            usage()
            return 1
        elif opt1 == "-h" or opt1 == "--help":
            usage()
            return 0
        else:
            print(f"unknown option \'{opt1}\'")
            return 1

    elif argc >= 3:
        opt2 = argv[2]

        if opt1 == "turbo":
            if opt2 == "on":
                system("echo 0 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo")
                return 0
            elif opt2 == "off":
                system("echo 1 | sudo tee /sys/devices/system/cpu/intel_pstate/no_turbo")
                return 0
            else:
                if opt2 == "-h" or opt2 == "--help":
                    usage()
                    return 0
                print(f"unknown option \'{opt2}\' for 'turbo'")
                return 1
        elif opt1 == "set":
            if opt2 == "-h" or opt2 == "--help":
                usage()
                return 0
            system(f"sudo cpupower frequency-set -u {opt2}")
            return 0
        else:
            if opt1 == "on":
                if opt2 == "-h" or opt2 == "--help":
                    usage()
                    return 0
                system("sudo -E cpupower frequency-set -g powersave")
                return 0
            elif opt1 == "off":
                if opt2 == "-h" or opt2 == "--help":
                    usage()
                    return 0
                system("sudo -E cpupower frequency-set -g performance")
                return 0
            elif opt1 == "info":
                if opt2 == "-h" or opt2 == "--help":
                    usage()
                    return 0
                system("cpupower frequency-info")
                return 0
            elif opt1 == "-h" or opt1 == "--help":
                usage()
                return 0
            else:
                print(f"unknown option \'{opt1}\'")
                return 1

    return 0

main(sys.argv)