
Yes, it's possible.Is ti possible, and how to control what CPU nodes (or a group of nodes) a given process (or family of processes) run ?
pingtoo wrote:I am not sure it is good idea to manage task scheduling manually is good idea, through out my work life I tried a few times never come out a good solution that can correctly balance the work load.
However it does not hurt to experiment may be you will get good result.
So I asked Google Gemini, two questions,I believe its answers will address your question. So if you interested please give Gemini a try.
- How to use cgroup to control cpu set
- how to make kernel prefer faster cpu set
I was just recently configured my 6.18.1 kernel for a new laptop, and I encountered several options that may touch on thatpa4wdh wrote:Interesting question indeed, these type CPU's have been around for a while but i've never seen anything about support for them.
Looking around in the kernel config CONFIG_SCHED_CLUSTER seems to come closest, but i'm not sure if it applied here. It's original use is to schedule based on CPU cores with the same L2 cache, if that is the case with these mixed CPU's too it could work. Here's a phoronix article about it: https://www.phoronix.com/news/AMD-Linux ... -Scheduler
Code: Select all
CONFIG_SCHED_CORE: │
│ │
│ This option permits Core Scheduling, a means of coordinated task │
│ selection across SMT siblings. When enabled -- see │
│ prctl(PR_SCHED_CORE) -- task selection ensures that all SMT siblings │
│ will execute a task from the same 'core group', forcing idle when no │
│ matching task is found. │
│ │
│ Use of this feature includes: │
│ - mitigation of some (not all) SMT side channels; │
│ - limiting SMT interference to improve determinism and/or performance. │
Code: Select all
CONFIG_CPU_ISOLATION: │
│ │
│ Make sure that CPUs running critical tasks are not disturbed by │
│ any source of "noise" such as unbound workqueues, timers, kthreads... │
│ Unbound jobs get offloaded to housekeeping CPUs. This is driven by │
│ the "isolcpus=" boot parameter. │
│ │
│ Say Y if unsure. │
Code: Select all
CONFIG_SCHED_AUTOGROUP: │
│ │
│ This option optimizes the scheduler for common desktop workloads by │
│ automatically creating and populating task groups. This separation │
│ of workloads isolates aggressive CPU burners (like build jobs) from │
│ desktop applications. Task group autogeneration is currently based │
│ upon task session. │
│ │
│ Symbol: SCHED_AUTOGROUP [=y] │
Code: Select all
CONFIG_SCHED_MC_PRIO: │
│
│
│ Intel Turbo Boost Max Technology 3.0 enabled CPUs have a │
│ core ordering determined at manufacturing time, which allows │
│ certain cores to reach higher turbo frequencies (when running │
│ single threaded workloads) than others. │
│ │
│ Enabling this kernel feature teaches the scheduler about │
│ the TBM3 (aka ITMT) priority order of the CPU cores and adjusts the │
│ scheduler's CPU selection logic accordingly, so that higher │
│ overall system performance can be achieved. │
│ │
│ This feature will have no effect on CPUs without this feature. │
I was buying a server a year ago for my work, and it took sometime to find specific models even of XEON processors that have equal capabilities cores. Most don't.Spanik wrote:Interesting question, I'll be following this thread.This type of cpu is under consideration at the office for a project.

May be I had misunderstand your initial question. I thought you want your computer automatically choose the right cpu set for some jobs and let the service background jobs on the slow cpu set.dmpogo wrote:pingtoo wrote:I am not sure it is good idea to manage task scheduling manually is good idea, through out my work life I tried a few times never come out a good solution that can correctly balance the work load.
However it does not hurt to experiment may be you will get good result.
So I asked Google Gemini, two questions,I believe its answers will address your question. So if you interested please give Gemini a try.
- How to use cgroup to control cpu set
- how to make kernel prefer faster cpu set
HPC jobs schedulers, such as slurm, use cgroups extensively to allocate resources. You can set specific CPU's the job will run on, set aside a group of CPU's no job managed by slurm will run on, and even partition GPU in chunks to give jobs only a part of GPU capabilities. This is a norm in HPC environment.
However, this seems a bit too high level that has more to do with accounting of resource consumption and allocation than with how efficiently kernel schedulers utilize your hardware. I would think there could be some kernel parameters/settings that choose "performance" versus "conserve battery" or something profiles, and are completely transparent for every day use otherwise.
That is exactly what I meant ! In this sense cgroups manual configuration is a bit outside. Basically it feels a bit ridiculous to run basic tasks like emerge through job scheduler to get the task onto the fastest cores. I'll look into HFI and EPP, never heard of that abbreviations before. And I see the kernel option which for Intel sits in thermal drivers section. It is probably that one more relevant option that I could not recallpingtoo wrote:May be I had misunderstand your initial question. I thought you want your computer automatically choose the right cpu set for some jobs and let the service background jobs on the slow cpu set.dmpogo wrote:pingtoo wrote:I am not sure it is good idea to manage task scheduling manually is good idea, through out my work life I tried a few times never come out a good solution that can correctly balance the work load.
However it does not hurt to experiment may be you will get good result.
So I asked Google Gemini, two questions,I believe its answers will address your question. So if you interested please give Gemini a try.
- How to use cgroup to control cpu set
- how to make kernel prefer faster cpu set
HPC jobs schedulers, such as slurm, use cgroups extensively to allocate resources. You can set specific CPU's the job will run on, set aside a group of CPU's no job managed by slurm will run on, and even partition GPU in chunks to give jobs only a part of GPU capabilities. This is a norm in HPC environment.
However, this seems a bit too high level that has more to do with accounting of resource consumption and allocation than with how efficiently kernel schedulers utilize your hardware. I would think there could be some kernel parameters/settings that choose "performance" versus "conserve battery" or something profiles, and are completely transparent for every day use otherwise.
Code: Select all
CONFIG_INTEL_HFI_THERMAL: │
│ │
│ Select this option to enable the Hardware Feedback Interface. If │
│ selected, hardware provides guidance to the operating system on │
│ the performance and energy efficiency capabilities of each CPU. │
│ These capabilities may change as a result of changes in the operating │
│ conditions of the system such power and thermal limits. If selected, │
│ the kernel relays updates in CPUs' capabilities to userspace.
People tend to scold references to AI on this forums
The Gemini answers tell me on "Meteor Lake's hybrid architecture via the Intel Hardware Feedback Interface (HFI)" with Linux kernel (v6.9+) it can automatically manage it. but you will need to have "Intel Hardware Feedback Interface (HFI)" and with "Energy Performance Preference (EPP)"
A daemon tool is located in kernel source tree:tools/power/x86/intel-speed-select/ you can use "make" to build it and "make install" to install it somewhere in you path.
the intel-speed-select is used to work with about HFI infrastructure.
I highly recommend use Gemini with get to more detail of it. (I don't have intet hardware at hand to verify, however from my search I do see multiple references about this topic therefor I believe Gemini is telling the truth)
They are not entirely wrong, when I ask Gemini about intel-speed-select it tell me for gentoo I should use package in sys-power/intel-speed-select which does not existdmpogo wrote:People tend to scold references to AI on this forums
Well, that daemon sayspingtoo wrote:
The Gemini answers tell me on "Meteor Lake's hybrid architecture via the Intel Hardware Feedback Interface (HFI)" with Linux kernel (v6.9+) it can automatically manage it. but you will need to have "Intel Hardware Feedback Interface (HFI)" and with "Energy Performance Preference (EPP)"
A daemon tool is located in kernel source tree:tools/power/x86/intel-speed-select/ you can use "make" to build it and "make install" to install it somewhere in you path.
the intel-speed-select is used to work with about HFI infrastructure.
I highly recommend use Gemini with get to more detail of it. (I don't have intet hardware at hand to verify, however from my search I do see multiple references about this topic therefor I believe Gemini is telling the truth)
Code: Select all
./intel-speed-select
Intel(R) Speed Select Technology
Executing on CPU model:170[0xaa]
Intel speed select drivers are not loaded on this system.
Verify that kernel config includes CONFIG_INTEL_SPEED_SELECT_INTERFACE.
If the config is included then this is not a supported platform.
Did you install sys-firmware/intel-microcode? or may be you need intel_pstate driver instead the intel-speed-select?dmpogo wrote:Well, that daemon says
and CONFIG_INTEL_SPEED_SELECT_INTERFACE is set to [m]. Attempts to load modules by hand give modprobe: ERROR: could not insert 'isst_if_mbox_pci': No such device. It is possible that I did not configure something esle, but also that it is not supported on my CPU.Code: Select all
./intel-speed-select Intel(R) Speed Select Technology Executing on CPU model:170[0xaa] Intel speed select drivers are not loaded on this system. Verify that kernel config includes CONFIG_INTEL_SPEED_SELECT_INTERFACE. If the config is included then this is not a supported platform.
Code: Select all
The error
ERROR: could not insert 'isst_if_mbox_pci': No such device typically occurs because the Intel Speed Select Technology (SST) driver is attempting to initialize on hardware that does not support the specific mailbox interface or has it disabled in the BIOS.
On Meteor Lake systems, this is common because Intel transitioned many SST functions to different interfaces or handles them through the Hardware Feedback Interface (HFI) instead.
Why this happens on Meteor Lake
Unsupported Interface: The isst_if_mbox_pci driver is primarily for Xeon server processors. Meteor Lake (Core Ultra) uses different mechanisms for power and performance management, such as the intel_pstate driver and HFI.
BIOS Settings: The Speed Select "mailbox" interface must be explicitly enabled in the BIOS under Power & Performance > CPU P State Control to be visible to the kernel.
Kernel Version: You need a modern kernel (6.9+ recommended for 2025) to properly handle Meteor Lake's hybrid architecture without relying on older SST drivers.
How to Fix it on Gentoo
Check if you actually need it: For Meteor Lake, the Intel Hardware Feedback Interface (HFI) is the primary driver for hybrid core management, not the SST mailbox.
Ensure CONFIG_INTEL_HFI=y is enabled in your kernel.
Verify with dmesg | grep -i hfi.
Verify BIOS Configuration:
Enter BIOS and ensure Intel Speed Select Technology is enabled if you specifically want to use the intel-speed-select utility.
If you are on a laptop, this feature is often locked or absent, which causes the "No such device" error when the driver tries to load.
Kernel Config Audit:
If you must use SST, ensure these are built-in or loaded in order:
CONFIG_INTEL_SPEED_SELECT_INTERFACE=y
CONFIG_INTEL_SST_IF_COMMON=y
CONFIG_INTEL_SST_IF_MBOX_PCI=y
Use Modern Alternatives:
Instead of forcing the SST driver, use the intel_pstate driver which has been heavily optimized for Meteor Lake in 2024 and 2025.
Verify the driver is active: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver.
It should return intel_pstate.
Ignore the Error:
If your system is performing well and P-cores/E-cores are being utilized correctly, this error can safely be ignored. It simply means the kernel attempted to load a driver for a feature your specific motherboard or mobile CPU SKU does not expose
Code: Select all
taskset -c 0-11 <command>Code: Select all
taskset -c 0-3 <command>It is a solution for sure if I have some computational code and what to make a specific run (which I do, from time to time). More of a question is everyday commands like emerge, running browser, whatever, which can cause high CPU load . Basically - should I use taskset in front of all of them, or I'll get a degraded performance otherwise ? My original remark was that it looks like emerge (with -j4) takes longer on the new machine with 2 perfom + 12 other cores, than on old machine with just 2 performance cores. I was hoping there should be a flag like "use performance cores if available first when CPU utilization is > 90%" like with frequency governers - performance = use max frequency. Actually, it is not even clear why such behaviour is not the default - or is it, and I am missing something ?jburns wrote:Use the taskset command in front of the command you want to run on a specified cpu.would use the performance cores.Code: Select all
taskset -c 0-11 <command>
If you only have 2 performance cores useRead the taskset man page for a complete discription.Code: Select all
taskset -c 0-3 <command>
Yep, microcode is loaded, pstate/cpufreq driver is working, kernel is 6.18.1 . With isst-mbox I may be off, I was trying to find any modules with isst, since I have CONFIG_INTEL_SPEED_SELECT_INTERFACE=m. BTW distribution kernel does not have it enabled. I'll check my BIOS, but when I was deleting Windows from that laptop (last time I was inside in BIOS) I was not able to find any low level configuration option exposed to the user. I'll try again. But basically I read your reply that SST is not for Meter Lake (which shows us that AI is giving hints, but often misleading).pingtoo wrote:Did you install sys-firmware/intel-microcode? or may be you need intel_pstate driver instead the intel-speed-select?dmpogo wrote:Well, that daemon says
and CONFIG_INTEL_SPEED_SELECT_INTERFACE is set to [m]. Attempts to load modules by hand give modprobe: ERROR: could not insert 'isst_if_mbox_pci': No such device. It is possible that I did not configure something esle, but also that it is not supported on my CPU.Code: Select all
./intel-speed-select Intel(R) Speed Select Technology Executing on CPU model:170[0xaa] Intel speed select drivers are not loaded on this system. Verify that kernel config includes CONFIG_INTEL_SPEED_SELECT_INTERFACE. If the config is included then this is not a supported platform.
Code: Select all
The error ERROR: could not insert 'isst_if_mbox_pci': No such device typically occurs because the Intel Speed Select Technology (SST) driver is attempting to initialize on hardware that does not support the specific mailbox interface or has it disabled in the BIOS. On Meteor Lake systems, this is common because Intel transitioned many SST functions to different interfaces or handles them through the Hardware Feedback Interface (HFI) instead. Why this happens on Meteor Lake Unsupported Interface: The isst_if_mbox_pci driver is primarily for Xeon server processors. Meteor Lake (Core Ultra) uses different mechanisms for power and performance management, such as the intel_pstate driver and HFI. BIOS Settings: The Speed Select "mailbox" interface must be explicitly enabled in the BIOS under Power & Performance > CPU P State Control to be visible to the kernel. Kernel Version: You need a modern kernel (6.9+ recommended for 2025) to properly handle Meteor Lake's hybrid architecture without relying on older SST drivers. How to Fix it on Gentoo Check if you actually need it: For Meteor Lake, the Intel Hardware Feedback Interface (HFI) is the primary driver for hybrid core management, not the SST mailbox. Ensure CONFIG_INTEL_HFI=y is enabled in your kernel. Verify with dmesg | grep -i hfi. Verify BIOS Configuration: Enter BIOS and ensure Intel Speed Select Technology is enabled if you specifically want to use the intel-speed-select utility. If you are on a laptop, this feature is often locked or absent, which causes the "No such device" error when the driver tries to load. Kernel Config Audit: If you must use SST, ensure these are built-in or loaded in order: CONFIG_INTEL_SPEED_SELECT_INTERFACE=y CONFIG_INTEL_SST_IF_COMMON=y CONFIG_INTEL_SST_IF_MBOX_PCI=y Use Modern Alternatives: Instead of forcing the SST driver, use the intel_pstate driver which has been heavily optimized for Meteor Lake in 2024 and 2025. Verify the driver is active: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver. It should return intel_pstate. Ignore the Error: If your system is performing well and P-cores/E-cores are being utilized correctly, this error can safely be ignored. It simply means the kernel attempted to load a driver for a feature your specific motherboard or mobile CPU SKU does not expose
Code: Select all
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driverCode: Select all
cat /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preferenceCode: Select all
cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferencesCode: Select all
cpupower frequency-infoHm, I have everything enabled, except CONFIG_ITD, and I cannot find this option in 6.18.1 kernel (search for ITD in menuconfig does not return anything relevant). My intel_pstate driver is active, performance preference is 'balance performance', among available there are "default performance balance_performance balance_power power", so I guess I can go up to "performance"pingtoo wrote:What I learn more for consumer graded Meteor Lake (Intel Core Ultra) processors
the equivalent of "Speed Select" for favoring faster cores is handled by Intel Thread Director (ITD)
You must have kernel configurationsCheck if you have intel_pstate driver active,
- CONFIG_X86_INTEL_PSTATE
- CONFIG_ITD
- CONFIG_SCHED_MC_PRIO
- CONFIG_CPU_FREQ
- CONFIG_X86_ACPI_CPUFREQ (This is fallack)
- CONFIG_INTEL_TURBO_MAX_3
Check current EPP SettingCode: Select all
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driverView available EPP OptionsCode: Select all
cat /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference# Alternaive commandCode: Select all
cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferencesCode: Select all
cpupower frequency-info
You have a MeteorLake CPU and not a XEON Workstation CPU ... so, yes it cannot work because you dont have it. See the <Help> of the kernel option CONFIG_INTEL_SPEED_SELECT_INTERFACE:dmpogo wrote:[...]and CONFIG_INTEL_SPEED_SELECT_INTERFACE is set to [m]. Attempts to load modules by hand give modprobe: ERROR: could not insert 'isst_if_mbox_pci': No such device. It is possible that I did not configure something esle, but also that it is not supported on my CPU.
[...] The Intel(R) speed select technology features are non architectural and only supported on specific Xeon(R) servers. [...]
Now Gemini is telling me "yes, CONFIG_ITD does not exist, it is CONFIG_INTEL_HFI_THERMAL" Gemini explain it is using "shorthand" for the Intel Thread Director feature. I had never thought out the AI would do such thingdmpogo wrote:Hm, I have everything enabled, except CONFIG_ITD, and I cannot find this option in 6.18.1 kernel (search for ITD in menuconfig does not return anything relevant).
Code: Select all
ls /sys/devices/virtual/thermal/thermal_zone*/type | xargs grep "hfi"so the "performance" is for speed, "power" is for power saving.performance preference is 'balance performance', among available there are "default performance balance_performance balance_power power"
MeteorLake has of course HWP (HWP exist since 4th generation Intel CPUs)This driver is only required when the system is not using Hardware P-States (HWP).
Code: Select all
hwp hwp_notify hwp_act_window hwp_epp hwp_pkg_reqCode: Select all
# cpuid -1 | grep HWP
HWP base registers = true
HWP notification = true
HWP activity window = true
HWP energy performance preference = true
HWP package level request = true
HWP capabilities = true
HWP PECI override = true
flexible HWP = true
IA32_HWP_REQUEST MSR fast access mode = true
ignoring idle logical processor HWP req = true
IA32_HWP_CTL MSR supported = true
HWP state = true
HWP features (0xd/0x10):
HWP save state byte size = 0x00000008 (8)
HWP save state byte offset = 0x00000000 (0)
IA32_XSS supported: HWP state = falseI tried several way to critique Gemini why it should be enable, it consistently tell me it is safe way to fallback in case HWP did not work well. Checking the linux kernel code I can see it will enable a extra module turbo_max_3 however the module code targeted specifically to Broadwell or Skylake and tell that back to Gemini it still insist said the logic is actually embedded in the intel_pstate drive.The help text refers to the fact that when Hardware P-States (HWP) are active, the CPU can technically communicate its core priorities through a different interface called CPPC (Collaborative Processor Performance Control).Why the Standalone Driver is Still Used?
- Without HWP: The kernel needs the specific ITBM 3.0 driver (CONFIG_INTEL_TURBO_MAX_3) to find the "favored" cores.
- With HWP: The intel_pstate driver can often read these same priorities directly from ACPI CPPC tables without needing the standalone ITBM 3.0 driver.
In practice, many Intel platforms (including some mobile and desktop variations like Meteor Lake) did not consistently implement the "priority" field in the ACPI CPPC tablesYou can check
- Because of this inconsistency, the Linux kernel often falls back to the intel_turbo_max_3 logic to ensure the ITMT (Intel Turbo Max Technology) scheduler extension is correctly initialized
- When this driver is enabled, it ensures the kernel exposes the sched_itmt_enabled flag in sysfs. Without it, your scheduler might treat all P-cores as identical even if it has HWP data
Code: Select all
cat /proc/sys/kernel/sched_itmt_enabled
- If it returns 1: Your kernel is successfully prioritizing fast cores. This might be happening via CPPC or the ITBM driver
- If it returns 0 or the file is missing: Your scheduler is not favoring the faster cores, and you likely need to ensure CONFIG_INTEL_TURBO_MAX_3 is enabled in your kernel config.