Intel Thread Director (ITD) status on Manjaro with Kernel 6.18 and i5-14600K

Hello everyone,

I recently set up a new system with an Intel i5-14600K (Raptor Lake Refresh, hybrid architecture with P-cores and E-cores) running Manjaro. I wanted to check whether the Linux kernel is actually using Intel Thread Director (ITD) to help the scheduler manage the hybrid cores efficiently.

Here’s what I’ve done so far:

  1. To check if the kernel was compiled with HFI (Hardware Feedback Interface) support, I ran:
zgrep CONFIG_INTEL_HFI_THERMAL /proc/config.gz

Output:

CONFIG_INTEL_HFI_THERMAL=y
  1. To check if ITD is actually enabled/active, I ran:
grep -o '\bitd\b' /proc/cpuinfo | head -n 1

(No output — empty)

sudo dmesg | grep -i "intel.*hfi\|itd\|thread.director"

(No output at all)

ls /sys/devices/system/cpu/ | grep -i thread

(No directory related to thread director found)

  1. I also checked for the older ITMT mechanism (/proc/sys/kernel/sched_itmt_enabled), but that file doesn’t exist either.

My questions:

· Is this normal behavior for this hardware and kernel version?
· Is there any way to enable ITD (e.g., via a boot parameter, kernel config, or recompiling the kernel)?
· If not, is there any plan to officially support ITD in Manjaro or in the mainline Linux kernel in the near future?

I’d really appreciate any insights or guidance. Thanks in advance!

Hello,
I can’t give important infos about your Topic around ITD, but i have a good overview around Hardware and the E (Efficiency) and P (Power) Core situation around Intel.

It would be good to know, what you doing with your system. But i can tell you, that this E Cores from Intel gives even under Microslop Windows a lot of problems, when it comes to scheduling E and P Cores under Winslop.

If you don’t have a really special important work task where you really rely on all cores,
besides that i recommend to just disable E Cores in Bios and get rid of this (more or less) useless hardware feature from Intel.

I saw many situation where P cores was idling around in many games and other work tasks while the E cores had to do all the work but with far less performance… I don’t know what Intel was thinking since alderlake release to change CPU’s like that.

1 Like

Thanks for your reply, Kobold. I appreciate the suggestion, but disabling E-cores is not something I want to do — I’d like to use the full hybrid architecture as intended.

I should also mention that for some specific workloads, I already use taskset to manually pin processes to certain cores. But I’m not looking for manual workarounds — I just want to know whether the scheduler itself is using ITD automatically, or if it’s currently disabled.

My main questions are still unanswered:

  1. Is Intel Thread Director (ITD) actually working and being used by the scheduler on Linux (specifically Manjaro with kernel 6.18 and an i5-14600K)?
  2. If it’s not working, is there any way to enable it? (boot param, kernel recompile, etc.)
  3. If it’s not supported yet, is there a timeline for official support?

I’m not looking for workarounds — I just want to understand the current status of ITD on Linux. If anyone has concrete information about this, I’d really appreciate it.

Thanks again!

@Daniyal09

I believe @Kobold was suggesting that more context might be helpful for others wishing to help with your issue in some way.

And, I agree.

Please begin by providing system information, as is generally expected with each Support request. :point_down:

Any other supporting detail you can provide for others to understand the problem will doubtless be welcome.

Regards.


[Mini-HowTo] Provide System Information

Basic details provided by *-fetch type apps might give enough information for someone wishing to buy a computer, however, for Support purposes it’s best to ask your system directly.

Output of the inxi command will generate more useful and detailed information for those who may wish to help:


Suggested inxi command (use either):

inxi -zv8 (short-form)
inxi --filter --verbosity=8 (long-form)

Command output should be presented as pre-formatted text in accordance with forum guidelines. :eyes:


Running inxi within a chroot environment

  • Add --color=0 to the long-form command, or…
  • Change the short-form command to inxi -zv8c0

Your privacy is respected


[Mini-HowTo] Present code or command output

Note: Grave accent (or, backtick) characters are used. :eyes:

For inline code or to show a single command:

  • please follow this simple example: code here.

For multi-line command output:

  • place text beween two rows of three (```) backtick characters to form a scrollable text box, or …
  • use the </> button in the Compose window to achieve the same result.

The empty row between these rows of backtick characters is where to paste any multi-line command output (such as inxi).

An example of a pre-formatted text enclosure:

What is a Quark?

A. In Physics, an elementary particle and fundamental constituent of matter. 
B. A character from the Star Trek: "Deep Space Nine" television series.
C. A soft, creamy, usually unsalted cheese traditional to central Europe.

1 Like

Thanks for your reply. You’re absolutely right — I should have included full system information from the start. Here it is:

inxi -Fazy
System:
  Kernel: 6.18.36-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 16.1.1
    clocksource: tsc avail: hpet,acpi_pm
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-6.18-x86_64
    root=UUID=bceb3f3f-805f-4173-b02a-772ed65537de rw rootflags=subvol=@ quiet
    splash udev.log_priority=3
  Desktop: KDE Plasma v: 6.6.5 tk: Qt v: N/A info: frameworks v: 6.27.0
    wm: kwin_wayland with: krunner vt: 1 dm: SDDM Distro: Manjaro
    base: Arch Linux
Machine:
  Type: Desktop Mobo: Micro-Star model: PRO B760M-A WIFI DDR4 (MS-7D99) v: 1.0
    serial: <superuser required> uuid: <superuser required> Firmware: UEFI
    vendor: American Megatrends LLC. v: 1.F1 date: 05/18/2025
CPU:
  Info: model: Intel Core i5-14600KF bits: 64 type: MST AMCP arch: Raptor Lake
    gen: core 14 level: v3 note: check built: 2022+ process: Intel 7 (10nm)
    family: 6 model-id: 0xB7 (183) stepping: 1 microcode: 0x133
  Topology: cpus: 1x dies: 1 clusters: 8 cores: 14 threads: 20 mt: 6 tpc: 2
    st: 8 smt: enabled cache: L1: 1.2 MiB desc: d-8x32 KiB, 6x48 KiB; i-6x32
    KiB, 8x64 KiB L2: 20 MiB desc: 6x2 MiB, 2x4 MiB L3: 24 MiB desc: 1x24 MiB
  Speed (MHz): avg: 5300 min/max: 800/5300:4000 scaling: driver: intel_pstate
    governor: powersave cores: 1: 5300 2: 5300 3: 5300 4: 5300 5: 5300 6: 5300
    7: 5300 8: 5300 9: 5300 10: 5300 11: 5300 12: 5300 13: 5300 14: 5300
    15: 5300 16: 5300 17: 5300 18: 5300 19: 5300 20: 5300 bogomips: 139776
  Flags-basic: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities:
  Type: gather_data_sampling status: Not affected
  Type: ghostwrite status: Not affected
  Type: indirect_target_selection status: Not affected
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: old_microcode status: Not affected
  Type: reg_file_data_sampling mitigation: Clear Register File
  Type: retbleed status: Not affected
  Type: spec_rstack_overflow status: Not affected
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Enhanced / Automatic IBRS; IBPB: conditional;
    PBRSB-eIBRS: SW sequence; BHI: BHI_DIS_S
  Type: srbds status: Not affected
  Type: tsa status: Not affected
  Type: tsx_async_abort status: Not affected
  Type: vmscape mitigation: IBPB before exit to userspace
Graphics:
  Device-1: NVIDIA TU106 [GeForce RTX 2060 SUPER] driver: nvidia v: 610.43.02
    alternate: nouveau,nova_core,nvidia_drm non-free: 550-580.xx+ status: current
    (as of 2025-11; EOL~2026-12-xx) arch: Turing code: TUxxx
    process: TSMC 12nm FF built: 2018-2022 pcie: gen: 3 speed: 8 GT/s lanes: 16
    ports: active: HDMI-A-1 empty: DP-1,DP-2,DP-3 bus-ID: 01:00.0
    chip-ID: 10de:1f06 class-ID: 0300
  Display: wayland server: X.org v: 1.21.1.23 with: Xwayland v: 24.1.12
    compositor: kwin_wayland driver: X: loaded: nvidia
    gpu: nv_platform,nvidia,nvidia-nvswitch display-ID: 0
  Monitor-1: HDMI-A-1 model: MSI MP241X serial: <filter> built: 2023 res:
    mode: 1920x1080 hz: 75 scale: 100% (1) dpi: 92 gamma: 1.2
    size: 527x296mm (20.75x11.65") diag: 604mm (23.8") ratio: 16:9 modes:
    max: 1920x1080 min: 640x480
  API: EGL v: 1.5 hw: drv: nvidia platforms: device: 0 drv: nvidia device: 2
    drv: swrast gbm: drv: nvidia surfaceless: drv: nvidia wayland: drv: nvidia
    x11: drv: nvidia inactive: device-1
  API: OpenGL v: 4.6.0 compat-v: 4.6 vendor: nvidia mesa v: 610.43.02
    glx-v: 1.4 direct-render: yes renderer: NVIDIA GeForce RTX 2060
    SUPER/PCIe/SSE2 memory: 7.81 GiB display-ID: :1.0
  API: Vulkan v: 1.4.350 layers: 9 device: 0 type: discrete-gpu name: NVIDIA
    GeForce RTX 2060 SUPER driver: nvidia v: 610.43.02 device-ID: 10de:1f06
    surfaces: N/A
  Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
    de: kscreen-console,kscreen-doctor gpu: lact, nvidia-settings, nvidia-smi
    wl: wayland-info x11: xdpyinfo, xprop, xrandr
Audio:
  Device-1: Intel 700 Series Family HD Audio vendor: Micro-Star MSI
    driver: snd_hda_intel v: kernel alternate: snd_soc_avs,snd_sof_pci_intel_tgl
    bus-ID: 00:1f.3 chip-ID: 8086:7a50 class-ID: 0403
  Device-2: NVIDIA TU106 High Definition Audio driver: snd_hda_intel
    v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16 bus-ID: 01:00.1
    chip-ID: 10de:10f9 class-ID: 0403
  Device-3: BY EDIFIER G4 TE GAMING HEADSET
    driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 1.1 speed: 12 Mb/s
    lanes: 1 mode: 1.1 bus-ID: 1-11.3:8 chip-ID: 2d99:0026 class-ID: 0300
    serial: <filter>
  API: ALSA v: k6.18.36-1-MANJARO status: kernel-api with: aoss
    type: oss-emulator tools: alsactl,alsamixer,amixer
  Server-1: sndiod v: N/A status: off tools: aucat,midicat,sndioctl
  Server-2: JACK v: 1.9.22 status: off tools: N/A
  Server-3: PipeWire v: 1.6.6 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Intel 700 Series Family CNVi Wi-Fi driver: iwlwifi v: kernel
    bus-ID: 00:14.3 chip-ID: 8086:7a70 class-ID: 0280
  IF: wlo1 state: up mac: <filter>
  Device-2: Realtek RTL8125 2.5GbE vendor: Micro-Star MSI driver: r8169
    v: kernel pcie: gen: 2 speed: 5 GT/s lanes: 1 port: 3000 bus-ID: 05:00.0
    chip-ID: 10ec:8125 class-ID: 0200
  IF: enp5s0 state: up speed: 100 Mbps duplex: full mac: <filter>
  Info: services: NetworkManager, systemd-timesyncd, wpa_supplicant
Bluetooth:
  Device-1: Intel AX211 Bluetooth driver: btusb v: 0.8 type: USB rev: 2.0
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-14:7 chip-ID: 8087:0033
    class-ID: e001
  Report: rfkill ID: hci0 rfk-id: 0 state: up address: see --recommends
Drives:
  Local Storage: total: 2.29 TiB used: 993.86 GiB (42.5%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Geil model: P3L 512GB
    size: 476.94 GiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s
    lanes: 4 tech: SSD serial: <filter> fw-rev: V0513A0 temp: 35.9 C
    scheme: GPT
  ID-2: /dev/nvme1n1 maj-min: 259:1 vendor: Ramsta
    model: R900 M.2 NVMe SSD 1TB size: 931.51 GiB block-size: physical: 512 B
    logical: 512 B speed: 31.6 Gb/s lanes: 4 tech: SSD serial: <filter>
    fw-rev: RI2DV0 temp: 41.9 C scheme: GPT
  ID-3: /dev/sda maj-min: 8:0 vendor: Western Digital model: WD10EZEX-21WN4A0
    size: 931.51 GiB block-size: physical: 4096 B logical: 512 B speed: 6.0 Gb/s
    tech: HDD rpm: 7200 serial: <filter> fw-rev: 1A01 scheme: MBR
Partition:
  ID-1: / raw-size: 476.64 GiB size: 476.64 GiB (100.00%)
    used: 136.71 GiB (28.7%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:3
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 668 KiB (0.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:2
  ID-3: /home raw-size: 476.64 GiB size: 476.64 GiB (100.00%)
    used: 136.71 GiB (28.7%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:3
  ID-4: /var/log raw-size: 476.64 GiB size: 476.64 GiB (100.00%)
    used: 136.71 GiB (28.7%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:3
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default) zswap: yes
    compressor: zstd max-pool: 20%
  ID-1: swap-1 type: zram size: 3.89 GiB used: 20 KiB (0.0%) priority: 100
    comp: zstd avail: lzo-rle,lzo,lz4,lz4hc,deflate,842 dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 42.0 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 32 GiB available: 31.11 GiB used: 8.18 GiB (26.3%)
  Processes: 462 Power: uptime: 5h 57m states: freeze,mem,disk suspend: deep
    avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
    suspend, test_resume image: 12.32 GiB services: org_kde_powerdevil,
    power-profiles-daemon, upowerd Init: systemd v: 260 default: graphical
    tool: systemctl
  Packages: 1412 pm: pacman pkgs: 1399 libs: 402 tools: pamac pm: flatpak
    pkgs: 13 Compilers: clang: 22.1.6 gcc: 16.1.1 Shell: Zsh v: 5.9.1
    running-in: konsole inxi: 3.3.40

Additionally, here are the outputs I already mentioned earlier, collected in one place for convenience:

  • zgrep CONFIG_INTEL_HFI_THERMAL /proc/config.gzCONFIG_INTEL_HFI_THERMAL=y
  • grep -o '\bitd\b' /proc/cpuinfo → (no output)
  • sudo dmesg | grep -i "intel.*hfi\|itd\|thread.director" → (no output)
  • ls /sys/devices/system/cpu/ | grep -i thread → (no output)

If any other information would be helpful, please let me know and I’ll provide it.

Thanks again for your time.

I imagine that would depend on kernel support. Perhaps you can find what you need here;

…or, the Wiki;

There are also the kernel mailing lists:

Thanks again for the links — they were helpful for understanding the bigger picture.

Based on what I’ve read and what I’ve tested on my own system (Manjaro, kernel 6.18, i5-14600KF), it appears that the Linux kernel itself does not directly use Intel Thread Director (ITD) for scheduling decisions. From what I can tell, the kernel only exposes HFI (Hardware Feedback Interface) data via Netlink to userspace, and it seems like a separate daemon is needed to actually make use of that data.

I tried installing intel-lpmd and, after adding --ignore-platform-check to the service (since my CPU model doesn’t seem to be in the default validated list), the service started running and appears to be active. I also set it to AUTO mode using intel_lpmd_control.

So my current understanding — and I’m still not 100% sure — is that ITD is not something the kernel scheduler uses directly, but rather a userspace daemon like intel-lpmd can consume HFI events and manage P/E-core behavior dynamically.

I’m sharing this in case it helps someone else, but I’m aware that this might not be the full picture. If anyone has more concrete info, I’d be happy to learn more.

Thanks again for your time!

1 Like