Intel NPU Driver Preparing Hardware Scheduler & Profiling Support
The Intel iVPU accelerator driver changes for the upcoming Linux 6.10 merge window have been submitted for advancing the Neural Processing Unit (NPU) support found since the launch of Meteor Lake with Intel Core Ultra notebook CPUs. For this iVPU/NPU driver in Linux 6.10 are a few notable new features.
With Linux 6.10 the Intel NPU accelerator driver is adding hardware scheduler support but at least for now is disabled by default. This hardware scheduler "HWS" is described as being a firmware-side feature that may not be found with all hardware generations and firmware versions. It's disabled by default and depends upon the "ivpu.sched_mode=1" module parameter to be set for leveraging the hardware scheduler where supported rather than relying on the OS scheduler. The NPU hardware scheduler should be more efficient and potentially yield better performance than the driver's software scheduler for NPU jobs. As part of this hardware scheduler enablement, the iVPU driver now sets up multiple command queues per engine with classifying different priorities.
Another new feature for the Intel NPU on Linux 6.10 is adding initial profiling support. The iVPU driver is providing a time-based Metric Streamer profiling user-space API for allowing user-space tools to query NPU metrics exposed by the firmware.
A third new feature for Linux 6.10 is exposing a "npu_busy_time_us" file via sysfs that allows reporting to user-space the amount of time spent by the NPU executing jobs. In turn this new sysfs file can be leveraged by user-space for monitoring NPU device utilization.
All of these Intel NPU open-source kernel driver changes were submitted as part of this patch series to DRM-Next ahead of the upcoming Linux 6.10 merge window.
With Linux 6.10 the Intel NPU accelerator driver is adding hardware scheduler support but at least for now is disabled by default. This hardware scheduler "HWS" is described as being a firmware-side feature that may not be found with all hardware generations and firmware versions. It's disabled by default and depends upon the "ivpu.sched_mode=1" module parameter to be set for leveraging the hardware scheduler where supported rather than relying on the OS scheduler. The NPU hardware scheduler should be more efficient and potentially yield better performance than the driver's software scheduler for NPU jobs. As part of this hardware scheduler enablement, the iVPU driver now sets up multiple command queues per engine with classifying different priorities.
Another new feature for the Intel NPU on Linux 6.10 is adding initial profiling support. The iVPU driver is providing a time-based Metric Streamer profiling user-space API for allowing user-space tools to query NPU metrics exposed by the firmware.
A third new feature for Linux 6.10 is exposing a "npu_busy_time_us" file via sysfs that allows reporting to user-space the amount of time spent by the NPU executing jobs. In turn this new sysfs file can be leveraged by user-space for monitoring NPU device utilization.
All of these Intel NPU open-source kernel driver changes were submitted as part of this patch series to DRM-Next ahead of the upcoming Linux 6.10 merge window.
5 Comments