When the sample runs the workload and internal noisy neighbor together, the implementation is sequential. The sample runs the workload for a while and then runs the noisy neighbor for a while to evict the cached data.
The main purpose of this implementation is to provide the most visible demonstration of the performance effect of cache allocation library. This approach simulates a “phased” workload, where the time-critical phase has a deadline and the less critical phase is considered a noisy neighbor. In this case, the less critical phase evicts the cached data of the more critical phase. The implementation may be rare among typical real-time use cases, but highlights the direct effect of the cache allocation library.
In more common cases, the real-time workload is running on an isolated core, and data is evicted from cache by uncontrolled activity on a core that shares the same cache. Cache Allocation Technology (CAT) alone can be used to mitigate this scenario. The cache allocation library provides an additional capability to lock only critical data so there’s no self-eviction of the real-time workload critical data by less critical data. While CAT alone may be enough in some scenarios, the cache allocation library is recommended for more explicit control of buffer access latency.
To address the more common cases, the sample also provides
an option to run the workload with an external noisy neighbor
of your choice. In this case, the workload and noisy neighbor
The following diagram illustrates the behavior of the internal
noisy neighbor vs. an external noisy neighbor.
To understand the effects of each type of noisy neighbor, you
will need to know whether the cache being locked is private
(each core has its own cache) or shared (multiple cores share
the cache). See:
If the L2 cache is private, you can expect an improvement in maximum
latency when running the workload and internal noisy neighbor.
If the L2 cache is shared, you can expect an improvement when running
the workload and internal noisy neighbor, or when running the workload
and an external noisy neighbor.