The Intel VTune software has started to remove support for some older microarchitectures from newer versions, with the 2023.2.0 version only supporting Xeon v3 and Core 4th generation (and newer) processors. This means that older Sandy Bridge-based processors (like Xeon E5) are not supported anymore, and older versions must be used. The last version to support Sandy Bridge is Intel VTune 2021.9.0.
The installation of 2021.9.0 can be done as normal, but afterwards there are several final configuration steps needed.
Compiling the kernel driver
To compile the Intel Sampling Kernel Driver, run
cd /opt/intel/oneapi/vtune/2021.9.0/sepdk/src sudo ./build_driver
This command will error though:
make[2]: Leaving directory `/usr/src/kernels/3.10.0-1160.92.1.0.1.el7.x86_64' make[1]: Leaving directory `/opt/intel/oneapi/vtune/2021.9.0/sepdk/src/socwatch/socwatch_driver' ************ Built drivers are copied to /opt/intel/oneapi/vtune/2021.9.0/sepdk/src/socwatch/drivers directory ************ Done mv: target ‘socwatch2_15-x32_64-3-x32_64-3.10.0-1160.92.1.0.1.el7.x86_64smp.ko’ is not a directory make: *** [default] Error 1
The good news is, Intel knows about the error, as mentioned in a community forum post, the bad news is that the thread was closed because the reporter worked offline to fix it and they never reported what they did to fix the error.
Fixing the error
This error is inside the sepdk
module Makefile and can be patched by changing one line though:
--- Makefile.bak 2023-08-11 14:12:33.292790260 +0100 +++ Makefile 2023-08-10 16:52:17.361282977 +0100 @@ -266,7 +266,7 @@ fi; endif @if [ -d socwatch ]; then \ - $(eval SOCWATCH_DRIVER_FILENAME=`ls socwatch/drivers | grep socwatch | grep .ko | cut -d '.' -f 1`) \ + $(eval SOCWATCH_DRIVER_FILENAME:=$(shell ls socwatch/drivers | grep socwatch | grep .ko | head -1 | cut -d '.' -f 1)) \ $(eval NEW_SOCWATCH_DRIVER_FILENAME=$(SOCWATCH_DRIVER_FILENAME)-$(PLATFORM)-$(KERNEL_VERSION)$(ARITY).ko) \ mv socwatch/drivers/$(SOCWATCH_DRIVER_FILENAME).ko socwatch/drivers/$(NEW_SOCWATCH_DRIVER_FILENAME) ; \ fi;
Note that even with this fix, there still may be spurious errors when trying to move the files.
Those can be fixed by just deleting the compiled kernel modules (.ko
files) in socwatch/drivers
.
Kernel configuration
To properly use the sampling drivers and VTune, the kernel needs to be configured to allow CPU events access through the
perf_event_paranoid
setting, where the settings are:
-1
- Not paranoid (no security)0
- Disallow raw trace access for unprivileged users1
- Disallow CPU event access for unprivileged users2
- Disallow all kernel-level profiling for unprivileged users.
By default, many kernels use level 2, while for VTune level 0 is preferred. The current level can be seen by running:
sysctl kernel.perf_event_paranoid
This can be changed for a single boot by running:
sudo sysctl -w kernel.perf_event_paranoid=0
And the setting can be made permanent by adding a new file to sysctl to change the setting on boot:
echo "kernel.perf_event_paranoid=0" | sudo tee -a /etc/sysctl.d/10-vtune.conf
User setup
In order for a user to use VTune with the sampling driver, they must be in the vtune
group.
sudo usermod -a -G vtune user
Testing the install
VTune can be tested using the included vtune-self-checker.sh
script, located at vtune/latest/bin64/vtune-self-checker.sh
.
This script will automatically test various parts of the by attempting data collection, and report what collections are possible
and any warnings or errors that it finds.