Uploaded image for project: 'OpenShift Bugs'
  1. OpenShift Bugs
  2. OCPBUGS-35193

OCP4.15 IPsec N/S - Egress Not Scale due to RHEL endpoint's SoftIRQ pinned

XMLWordPrintable

    • Critical
    • No
    • False
    • Hide

      None

      Show
      None

      Description of problem:

      One of the goals of performance&scale testing IPsec (See presentation) is to show core-over-core scaling.  That is to show how IPsec throughput would scale with more CPUs (reserved CPUs).  A test case however shows that IPsec egress does NOT scale.  More investigation points to the problem possibly related to the IPsec peer endpoint. In this case, the peer is a RHEL 9.3. When running IPsec, its sofirq uses mostly one CPU. This is not the case when running the same test w/o IPsec when a lot more CPUs are multi-processing the test.  In other words, the RHEL is the bottleneck b/c its softIRQ pinned on one CPU when processing IPsec traffic.

      Version-Release number of selected component (if applicable) expects to scale

      R4.15 IPsec

      How reproducible:

      100%

       

      Steps to Reproduce:

      1. Config IPsec on a R4.15 SNO and an external RHEL according to the procedure https://github.com/jakobmoellerdev/north-south-ipsec-openshift-poc/tree/main/4.15 
      2. Start UPERF server on the RHEL
      3. Create a UPERF POD on the SNO, and run UPERF client.
      
      ----------- Egress testcase with IPsec -------------------- 
      On RHEL, start UPERF Server:
          [root@d16-h09-000-r650 xml-files]# uperf -s -B 100.50.1.8 -P 41000
      on Pod, start UPERF Client:
          sh-5.1# remotehost=100.50.1.8   port=41001 duration=60 wsize=512 rsize=4096 nthreads=16 protocol=tcp  uperf -v -R -m stream.xml -P 41000
      
      On another RHEL terminal, watch CPUs:
      [root@d16-h09-000-r650 ~]# mpstat  -P ALL 2 |tail -n+3|awk '$NF<95 {print $0}
      ..
      01:36:54 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
      01:36:56 AM   37    1.00    0.00    4.48    0.00    0.00    0.00    0.00    0.00    0.00   94.53
      01:36:56 AM   93    0.00    0.00    0.00    0.00    0.46   84.02    0.00    0.00    0.00   15.53        <== high soft on CPU 93
      01:36:56 AM   95    1.00    0.00    4.50    0.00    0.50    0.00    0.00    0.00    0.00   94.00
      
      01:36:56 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
      01:36:58 AM   93    0.00    0.00    0.00    0.00    0.00   90.00    0.00    0.00    0.00   10.00        <== high soft
      01:36:58 AM   95    1.00    0.00    4.50    0.00    0.00    0.00    0.00    0.00    0.00   94.50
      
      01:36:58 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
      01:37:00 AM    5    1.00    0.00    4.98    0.00    0.00    0.00    0.00    0.00    0.00   94.03
      01:37:00 AM   93    0.00    0.00    0.00    0.00    0.00   91.83    0.00    0.00    0.00    8.17        <--high soft
      01:37:00 AM   95    0.50    0.00    5.47    0.00    0.00    0.00    0.00    0.00    0.00   94.03
      
      01:37:00 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
      01:37:02 AM   45    1.00    0.00    4.50    0.00    0.00    0.00    0.00    0.00    0.00   94.50
      01:37:02 AM   93    0.00    0.00    0.00    0.00    0.48   91.79    0.00    0.00    0.00    7.73        <-- high soft
      ...
      
      -------- Egress Test case Without IPsec
      On RHEL, start UPERF Server:
          [root@d16-h09-000-r650 xml-files]# uperf -s -P 41000
      On Pod, start UPERF Client:
          sh-5.1# remotehost=100.50.1.8   port=41001 duration=60 wsize=512 rsize=4096 nthreads=16 protocol=tcp  uperf -v -R -m stream.xml -P 41000
      
      On another RHEL terminal, watch CPUs.
      [root@d16-h09-000-r650 ~]# mpstat  -P ALL 2 |tail -n+3|awk '$NF<95 {print $0}
      ...
      01:45:51 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
      01:45:53 AM    0    1.01    0.00    4.52    0.00    0.00    2.01    0.00    0.00    0.00   92.46
      01:45:53 AM    2    1.50    0.00    9.00    0.00    0.00    0.00    0.00    0.00    0.00   89.50
      01:45:53 AM    4    1.50    0.00    7.00    0.00    0.00    0.00    0.00    0.00    0.00   91.50
      01:45:53 AM    6    1.00    0.00    5.50    0.00    0.00    0.00    0.00    0.00    0.00   93.50
      01:45:53 AM    9    0.50    0.00    2.50    0.00    0.50    6.00    0.00    0.00    0.00   90.50
      01:45:53 AM   13    3.98    0.00   23.38    0.00    0.00    0.50    0.00    0.00    0.00   72.14
      01:45:53 AM   21    0.00    0.00    0.00    0.00    0.00    5.97    0.00    0.00    0.00   94.03
      01:45:53 AM   23    4.52    0.00   23.62    0.00    0.00    0.00    0.00    0.00    0.00   71.86
      01:45:53 AM   25    4.52    0.00   26.63    0.00    0.00    0.00    0.00    0.00    0.00   68.84
      01:45:53 AM   29    0.00    0.00    0.50    0.00    0.50    6.97    0.00    0.00    0.00   92.04
      01:45:53 AM   31    3.52    0.00   21.61    0.00    0.00    0.00    0.00    0.00    0.00   74.87
      01:45:53 AM   33    0.00    0.00    0.00    0.00    0.00    9.55    0.00    0.00    0.00   90.45
      01:45:53 AM   37    6.03    0.00   24.62    0.00    0.50    0.00    0.00    0.00    0.00   68.84
      01:45:53 AM   45    1.52    0.00    6.06    0.00    0.00    0.00    0.00    0.00    0.00   92.42
      01:45:53 AM   49    0.00    0.00    0.50    0.00    0.50    8.04    0.00    0.00    0.00   90.95
      01:45:53 AM   51    2.51    0.00   14.07    0.00    0.50    0.50    0.00    0.00    0.00   82.41
      01:45:53 AM   58    2.99    0.00   17.41    0.00    0.00    0.00    0.00    0.00    0.00   79.60
      01:45:53 AM   63    1.49    0.00    3.98    0.00    0.00    0.50    0.00    0.00    0.00   94.03
      01:45:53 AM   81    0.00    0.00    0.00    0.00    0.00    7.50    0.00    0.00    0.00   92.50
      01:45:53 AM   83    0.00    0.00    0.50    0.00    0.00    8.00    0.00    0.00    0.00   91.50
      01:45:53 AM   85    0.00    0.00    0.00    0.00    0.00    7.50    0.00    0.00    0.00   92.50
      01:45:53 AM   89    5.50    0.00   27.00    0.00    0.50    0.00    0.00    0.00    0.00   67.00
      01:45:53 AM   93    0.00    0.00    0.00    0.00    0.00    8.54    0.00    0.00    0.00   91.46
      01:45:53 AM   97    4.57    0.00   22.84    0.00    0.00    0.00    0.00    0.00    0.00   72.59
      01:45:53 AM   99    0.00    0.00    0.50    0.00    0.50    6.47    0.00    0.00    0.00   92.54
      01:45:53 AM  101    4.06    0.00   22.84    0.00    0.00    0.51    0.00    0.00    0.00   72.59
      01:45:53 AM  103    0.00    0.00    0.00    0.00    0.00    6.97    0.00    0.00    0.00   93.03
      01:45:53 AM  105    4.52    0.00   21.61    0.00    0.00    0.00    0.00    0.00    0.00   73.87
      01:45:53 AM  109    0.00    0.00    0.50    0.00    0.00    8.00    0.00    0.00    0.00   91.50
      01:45:53 AM  111    3.48    0.00   18.41    0.00    0.50    0.00    0.00    0.00    0.00   77.61 
      
      --------
      
      
      
      

      Actual results:

       

      Expected results:

       

      Additional info:

      For tips on manual testing IPsec N/S, see https://github.com/HughNhan/IPsecTest
      For IPsec config, see https://github.com/jakobmoellerdev/north-south-ipsec-openshift-poc/tree/main/4.15 

              hnhan Hugh Nhan
              hnhan Hugh Nhan
              Jakob Moeller (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

                Created:
                Updated:
                Resolved: