Summary:
In the Junos node slicing Feature Guide, the topic Preparing for Junos Node Slicing Setup for the external model indicates that the isolcpus parameter (defined in the x86 server) must be set as ‘isolcpus=2-23’. This should be updated to read as ‘isolcpus=4-23’.
While there is no known issue with the current isolcpus setting, it is recommended that isolcpus be updated, as this can help improve GNF virtual disk and virtual network I/O performance.
The updated isolcpus setting allows the emulator to use core 2 as well as core 3, whereas, with the current isolcpus setting, the emulator was in effect using only core 2.
The isolcpus parameter is set in the host Linux GRUB configuration file, for both RedHat 7.3 and Ubuntu 16.04 LTS.
This note is applicable only for the external model of Junos node slicing.
Symptoms:
How to validate the CPU Core usage ?
On the Host x86 server enter the top
command and enter '1' you will see CPU core utilizations. Only CPU 2 will be observed as being used, while CPU 3 is always observed to be idle.
top - 09:42:18 up 55 days, 16:33, 1 user, load average: 15.77, 11.15, 5.07
Tasks: 529 total, 1 running, 528 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 0.4 sy, 0.0 ni, 97.9 id, 1.4 wa, 0.0 hi, 0.4 si, 0.0 st
%Cpu1 : 0.0 us, 1.0 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 15.7 us, 18.0 sy, 0.0 ni, 65.9 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 27.7 us, 0.7 sy, 0.0 ni, 71.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 16.8 us, 0.7 sy, 0.0 ni, 82.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 27.6 us, 1.0 sy, 0.0 ni, 71.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 27.0 us, 0.7 sy, 0.0 ni, 72.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu8 : 25.2 us, 1.6 sy, 0.0 ni, 73.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu9 : 18.5 us, 2.3 sy, 0.0 ni, 79.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu10 : 24.1 us, 1.3 sy, 0.0 ni, 74.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu11 : 24.4 us, 1.7 sy, 0.0 ni, 73.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu12 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
<..>
Cause:
CPU core 2 and 3 are currently part of the isolcpus
settings. CPU cores specified in isolcpus
are removed from the general kernel SMP balancing and scheduler algorithms, so the emulator will not be able to reschedule the virtual disk and network I/O threads onto CPU core 3.
Solution:
Verify that the
isolcpus
starts from core 4, by checking the output of the Linux commands '
cat /proc/cmdline',
which should read as shown in the following example.
jtac@server-gateway-hostos01:~$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.4.0-131-generic.efi.signed root=UUID=c530433d-478e-49ee-a98d-f3cba83411d3 ro isolcpus=4-23 intel_pstate=disable
If the output instead shows ‘isolcpus=2-23’, update the host OS Linux GRUB configuration file on the x86 server by replacing the entry ‘isolcpus=2-23’ with ‘isolcpus=4-23’ and then reboot the server.
Please refer to the topic Preparing for Junos Node Slicing Setup in the Junos node slicing Feature Guide for the procedure to set the isolcpus parameter in the Linux GRUB configuration file.