- 2 socket Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
- Ubuntu 20.04 with kernel 5.4.0-99-generic
- KVM with 4vCPU and 4GB RAM
- Debian 10 with kernel 5.15.18-rt28 with task isolation patches
- Command line:
isolcpus=domain,nohz,2 nohz_full=2 irqaffinity=0,1,3
- oslat from rt-tests v2.30 with Marcelo's patch for oslat
- stress-ng v0.09.50
Each test spawns system workload on the CPUs which is not isolated, then runs a 15-min oslat with 16 KB memmove workload on the isolated CPU.
To compare the latency performance with and without task isolation, we perform each test on 2 different kernel configs. The one marked as TASKISOL
implies that the kernel turns on CONFIG_TASK_ISOLATION
.
We create 20 timer workers in this test.
PREEMPT_RT + NOHZ_FULL | TASKISOL + PREEMPT_RT + NOHZ_FULL | |
---|---|---|
min (us) | 2 | 2 |
avg (us) | 2.007391 | 2.012791 |
max (us) | 8391 | 30774 |
duration(sec) | 899.182 | 899.183 |
Since the patchset aims to eliminate the effect of vmstats, we create 20 fault workers as the system workload in this test.
PREEMPT_RT + NOHZ_FULL | TASKISOL + PREEMPT_RT + NOHZ_FULL | |
---|---|---|
min (us) | 2 | 2 |
avg (us) | 2.011208 | 2.015257 |
max (us) | 5019 | 27741 |
duration(sec) | 899.181 | 901.229 |
To stress the system with large VM stuff, we use 2 vm and 2 mmap workers. Each worker uses 2GB to raise OOM frequently.
PREEMPT_RT + NOHZ_FULL | TASKISOL + PREEMPT_RT + NOHZ_FULL | |
---|---|---|
min (us) | 2 | 2 |
avg (us) | 2.016188 | 2.02046 |
max (us) | 10153 | 12648 |
duration(sec) | 899.182 | 901.229 |
This test uses a mixed workload comprised of 10 fault, 2 vm and 2 mmap workers.
PREEMPT_RT + NOHZ_FULL | TASKISOL + PREEMPT_RT + NOHZ_FULL | |
---|---|---|
min (us) | 2 | 2 |
avg (us) | 2.014711 | 2.013344 |
max (us) | 12908 | 12707 |
duration(sec) | 899.183 | 899.184 |