CoreFreq is a CPU monitoring software designed for 64-bits Processors w/ architectures Intel Atom, Core2, Nehalem, SandyBridge and superior, AMD Family 0F.
CoreFreq provides a framework for retrieving CPU data with a high degree of precision:
- Core frequencies & ratios; SpeedStep (EIST), Turbo Boost, Hyper-Threading (HTT) and Base Clock
- Performance counters including Time Stamp Counter (TSC), Unhalted Core Cycles (UCC),
- Unhalted Reference Cycles (URC)
- Number of instructions per cycle or second, IPS, IPC, or CPI
- CPU C-States C0 C1 C3 C6 C7 – C1E – Auto/UnDemotion of C1 C3
- DTS Temperature and Tjunction Max, Thermal Monitoring TM1 TM2 state
- Topology map including Caches for boostrap & application CPU
- Processor features, brand & architecture strings
To reach this goal, CoreFreq implements a Linux Kernel module which employs the followings:
- asm code to keep as near as possible the readings of the performance counters;
- per-CPU, implements slab data memory and high-resolution timer;
- compliant with suspend/resume and CPU Hot-Plug;
- a shared memory to protect the kernel from the user-space part of the software;
- atomic synchronization of threads to avoid mutexes and deadlock.
How to install CoreFreq
First, install the prerequisite packages:
## On Debian/Ubuntu distributions $ sudo apt-get install dkms git libpthread-stubs0-dev ## On CentOS/RHEL sudo yum group install 'Development Tools' ## On Fedora 22+ $ sudo dnf group install 'Development Tools'>
Now, clone and build CoreFreq source code from github:
$ git clone https://github.com/cyring/CoreFreq.git $ cd CoreFreq $ make
As root, change to the build directory then start the module followed by the daemon:
$ sudo insmod corefreqk.ko $ sudo ./corefreqd
Then start the client, as user:
$ ./corefreq-cli
To see all usage options, type the command below:
$ ./corefreq-cli --help
./corefreq-cli --help CoreFreq. Copyright (C) 2015-2017 CYRIL INGENIERIE usage: corefreq-cli [-option ] -t Show Top (default) -d Show Dashboard arguments: -c Monitor Counters -i Monitor Instructions -s Print System Information -M Print Memory Controller -m Print Topology -u Print CPUID -k Print Kernel -h Print out this message Exit status: 0 if OK, 1 if problems, >1 if serious trouble. Report bugs to labs[at]cyring.fr
For more information and usage, visit the CoreFreq Github repository: https://github.com/cyring/CoreFreq