xref: /linux-6.15/tools/power/cpupower/README (revision 3dbc9214)
1db262ea4SRamkumar RamachandraThe cpupower package consists of the following elements:
27fe2f639SDominik Brodowski
37fe2f639SDominik Brodowskirequirements
47fe2f639SDominik Brodowski------------
57fe2f639SDominik Brodowski
67fe2f639SDominik BrodowskiOn x86 pciutils is needed at runtime (-lpci).
77fe2f639SDominik BrodowskiFor compilation pciutils-devel (pci/pci.h) and a gcc version
87fe2f639SDominik Brodowskiproviding cpuid.h is needed.
97fe2f639SDominik BrodowskiFor both it's not explicitly checked for (yet).
107fe2f639SDominik Brodowski
117fe2f639SDominik Brodowski
12a504c028SRamkumar Ramachandralibcpupower
137fe2f639SDominik Brodowski----------
147fe2f639SDominik Brodowski
15a504c028SRamkumar Ramachandra"libcpupower" is a library which offers a unified access method for userspace
167fe2f639SDominik Brodowskitools and programs to the cpufreq core and drivers in the Linux kernel. This
177fe2f639SDominik Brodowskiallows for code reduction in userspace tools, a clean implementation of
187fe2f639SDominik Brodowskithe interaction to the cpufreq core, and support for both the sysfs and proc
197fe2f639SDominik Brodowskiinterfaces [depending on configuration, see below].
207fe2f639SDominik Brodowski
217fe2f639SDominik Brodowski
227fe2f639SDominik Brodowskicompilation and installation
237fe2f639SDominik Brodowski----------------------------
247fe2f639SDominik Brodowski
25*3dbc9214SRoman StorozhenkoThere are 2 output directories - one for the build output and another for
26*3dbc9214SRoman Storozhenkothe installation of the build results, that is the utility, library,
27*3dbc9214SRoman Storozhenkoman pages, etc...
287fe2f639SDominik Brodowski
29*3dbc9214SRoman Storozhenkodefault directory
30*3dbc9214SRoman Storozhenko-----------------
31*3dbc9214SRoman Storozhenko
32*3dbc9214SRoman StorozhenkoIn the case of default directory, build and install process requires no
33*3dbc9214SRoman Storozhenkoadditional parameters:
34*3dbc9214SRoman Storozhenko
35*3dbc9214SRoman Storozhenkobuild
36*3dbc9214SRoman Storozhenko-----
37*3dbc9214SRoman Storozhenko
38*3dbc9214SRoman Storozhenko$ make
39*3dbc9214SRoman Storozhenko
40*3dbc9214SRoman StorozhenkoThe output directory for the 'make' command is the current directory and
41*3dbc9214SRoman Storozhenkoits subdirs in the kernel tree:
42*3dbc9214SRoman Storozhenkotools/power/cpupower
43*3dbc9214SRoman Storozhenko
44*3dbc9214SRoman Storozhenkoinstall
45*3dbc9214SRoman Storozhenko-------
46*3dbc9214SRoman Storozhenko
47*3dbc9214SRoman Storozhenko$ sudo make install
48*3dbc9214SRoman Storozhenko
49*3dbc9214SRoman Storozhenko'make install' command puts targets to default system dirs:
50*3dbc9214SRoman Storozhenko
51*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
52*3dbc9214SRoman Storozhenko| Installing file        |               System dir                   |
53*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
54*3dbc9214SRoman Storozhenko| libcpupower            | /usr/lib                                   |
55*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
56*3dbc9214SRoman Storozhenko| cpupower               | /usr/bin                                   |
57*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
58*3dbc9214SRoman Storozhenko| cpufreq-bench_plot.sh  | /usr/bin                                   |
59*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
60*3dbc9214SRoman Storozhenko| man pages              | /usr/man                                   |
61*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
62*3dbc9214SRoman Storozhenko
63*3dbc9214SRoman StorozhenkoTo put it in other words it makes build results available system-wide,
64*3dbc9214SRoman Storozhenkoenabling any user to simply start using it without any additional steps
65*3dbc9214SRoman Storozhenko
66*3dbc9214SRoman Storozhenkocustom directory
67*3dbc9214SRoman Storozhenko----------------
68*3dbc9214SRoman Storozhenko
69*3dbc9214SRoman StorozhenkoThere are 2 make's command-line variables 'O' and 'DESTDIR' that setup
70*3dbc9214SRoman Storozhenkoappropriate dirs:
71*3dbc9214SRoman Storozhenko'O' - build directory
72*3dbc9214SRoman Storozhenko'DESTDIR' - installation directory. This variable could also be setup in
73*3dbc9214SRoman Storozhenkothe 'CONFIGURATION' block of the "Makefile"
74*3dbc9214SRoman Storozhenko
75*3dbc9214SRoman Storozhenkobuild
76*3dbc9214SRoman Storozhenko-----
77*3dbc9214SRoman Storozhenko
78*3dbc9214SRoman Storozhenko$ make O=<your_custom_build_catalog>
79*3dbc9214SRoman Storozhenko
80*3dbc9214SRoman StorozhenkoExample:
81*3dbc9214SRoman Storozhenko$ make O=/home/hedin/prj/cpupower/build
82*3dbc9214SRoman Storozhenko
83*3dbc9214SRoman Storozhenkoinstall
84*3dbc9214SRoman Storozhenko-------
85*3dbc9214SRoman Storozhenko
86*3dbc9214SRoman Storozhenko$ make O=<your_custom_build_catalog> DESTDIR=<your_custom_install_catalog>
87*3dbc9214SRoman Storozhenko
88*3dbc9214SRoman StorozhenkoExample:
89*3dbc9214SRoman Storozhenko$ make O=/home/hedin/prj/cpupower/build DESTDIR=/home/hedin/prj/cpupower \
90*3dbc9214SRoman Storozhenko> install
91*3dbc9214SRoman Storozhenko
92*3dbc9214SRoman StorozhenkoNotice that both variables 'O' and 'DESTDIR' have been provided. The reason
93*3dbc9214SRoman Storozhenkois that the build results are saved in the custom output dir defined by 'O'
94*3dbc9214SRoman Storozhenkovariable. So, this dir is the source for the installation step. If only
95*3dbc9214SRoman Storozhenko'DESTDIR' were provided then the 'install' target would assume that the
96*3dbc9214SRoman Storozhenkobuild directory is the current one, build everything there and install
97*3dbc9214SRoman Storozhenkofrom the current dir.
98*3dbc9214SRoman Storozhenko
99*3dbc9214SRoman StorozhenkoThe files will be installed to the following dirs:
100*3dbc9214SRoman Storozhenko
101*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
102*3dbc9214SRoman Storozhenko| Installing file        |               System dir                   |
103*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
104*3dbc9214SRoman Storozhenko| libcpupower            | ${DESTDIR}/usr/lib                         |
105*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
106*3dbc9214SRoman Storozhenko| cpupower               | ${DESTDIR}/usr/bin                         |
107*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
108*3dbc9214SRoman Storozhenko| cpufreq-bench_plot.sh  | ${DESTDIR}/usr/bin                         |
109*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
110*3dbc9214SRoman Storozhenko| man pages              | ${DESTDIR}/usr/man                         |
111*3dbc9214SRoman Storozhenko-----------------------------------------------------------------------
112*3dbc9214SRoman Storozhenko
113*3dbc9214SRoman StorozhenkoIf you look at the table for the default 'make' output dirs you will
114*3dbc9214SRoman Storozhenkonotice that the only difference with the non-default case is the
115*3dbc9214SRoman Storozhenko${DESTDIR} prefix. So, the structure of the output dirs remains the same
116*3dbc9214SRoman Storozhenkoregardles of the root output directory.
117*3dbc9214SRoman Storozhenko
118*3dbc9214SRoman Storozhenko
119*3dbc9214SRoman Storozhenkoclean and uninstall
120*3dbc9214SRoman Storozhenko-------------------
121*3dbc9214SRoman Storozhenko
122*3dbc9214SRoman Storozhenko'clean' target is intended for cleanup the build catalog from build results
123*3dbc9214SRoman Storozhenko'uninstall' target is intended for removing installed files from the
124*3dbc9214SRoman Storozhenkoinstallation directory
125*3dbc9214SRoman Storozhenko
126*3dbc9214SRoman Storozhenkodefault directory
127*3dbc9214SRoman Storozhenko-----------------
128*3dbc9214SRoman Storozhenko
129*3dbc9214SRoman StorozhenkoThis case is a straightforward one:
130*3dbc9214SRoman Storozhenko$ make clean
131*3dbc9214SRoman Storozhenko$ make uninstall
132*3dbc9214SRoman Storozhenko
133*3dbc9214SRoman Storozhenkocustom directory
134*3dbc9214SRoman Storozhenko----------------
135*3dbc9214SRoman Storozhenko
136*3dbc9214SRoman StorozhenkoUse 'O' command line variable to remove previously built files from the
137*3dbc9214SRoman Storozhenkobuild dir:
138*3dbc9214SRoman Storozhenko$ make O=<your_custom_build_catalog> clean
139*3dbc9214SRoman Storozhenko
140*3dbc9214SRoman StorozhenkoExample:
141*3dbc9214SRoman Storozhenko$ make O=/home/hedin/prj/cpupower/build clean
142*3dbc9214SRoman Storozhenko
143*3dbc9214SRoman StorozhenkoUse 'DESTDIR' command line variable to uninstall previously installed files
144*3dbc9214SRoman Storozhenkofrom the given dir:
145*3dbc9214SRoman Storozhenko$ make DESTDIR=<your_custom_install_catalog>
146*3dbc9214SRoman Storozhenko
147*3dbc9214SRoman StorozhenkoExample:
148*3dbc9214SRoman Storozhenkomake DESTDIR=/home/hedin/prj/cpupower uninstall
149*3dbc9214SRoman Storozhenko
150*3dbc9214SRoman Storozhenko
151*3dbc9214SRoman Storozhenkorunning the tool
152*3dbc9214SRoman Storozhenko----------------
153*3dbc9214SRoman Storozhenko
154*3dbc9214SRoman Storozhenkodefault directory
155*3dbc9214SRoman Storozhenko-----------------
156*3dbc9214SRoman Storozhenko
157*3dbc9214SRoman Storozhenko$ sudo cpupower
158*3dbc9214SRoman Storozhenko
159*3dbc9214SRoman Storozhenkocustom directory
160*3dbc9214SRoman Storozhenko----------------
161*3dbc9214SRoman Storozhenko
162*3dbc9214SRoman StorozhenkoWhen it comes to run the utility from the custom build catalog things
163*3dbc9214SRoman Storozhenkobecome a little bit complicated as 'just run' approach doesn't work.
164*3dbc9214SRoman StorozhenkoAssuming that the current dir is '<your_custom_install_catalog>/usr',
165*3dbc9214SRoman Storozhenkoissuing the following command:
166*3dbc9214SRoman Storozhenko
167*3dbc9214SRoman Storozhenko$ sudo ./bin/cpupower
168*3dbc9214SRoman Storozhenkowill produce the following error output:
169*3dbc9214SRoman Storozhenko./bin/cpupower: error while loading shared libraries: libcpupower.so.1:
170*3dbc9214SRoman Storozhenkocannot open shared object file: No such file or directory
171*3dbc9214SRoman Storozhenko
172*3dbc9214SRoman StorozhenkoThe issue is that binary cannot find the 'libcpupower' library. So, we
173*3dbc9214SRoman Storozhenkoshall point to the lib dir:
174*3dbc9214SRoman Storozhenkosudo LD_LIBRARY_PATH=lib64/ ./bin/cpupower
1757fe2f639SDominik Brodowski
1767fe2f639SDominik Brodowski
1777fe2f639SDominik BrodowskiTHANKS
1787fe2f639SDominik Brodowski------
1797fe2f639SDominik BrodowskiMany thanks to Mattia Dongili who wrote the autotoolization and
180a504c028SRamkumar Ramachandralibtoolization, the manpages and the italian language file for cpupower;
1817fe2f639SDominik Brodowskito Dave Jones for his feedback and his dump_psb tool; to Bruno Ducrot for his
1827fe2f639SDominik Brodowskipowernow-k8-decode and intel_gsic tools as well as the french language file;
1837fe2f639SDominik Brodowskiand to various others commenting on the previous (pre-)releases of
184a504c028SRamkumar Ramachandracpupower.
1857fe2f639SDominik Brodowski
1867fe2f639SDominik Brodowski
1877fe2f639SDominik Brodowski        Dominik Brodowski
188