1. 05 Sep, 2022 2 commits
    • Nicholas Piggin's avatar
      powerpc/64: Remove PPC64 special case for cputime accounting default · 02382aff
      Nicholas Piggin authored
      Distro kernels tend to be moving to VIRT_CPU_ACCOUNTING_GEN, and there
      is not much reason why PPC64 should be special here. Remove the special
      case and make the ppc64 and pseries defconfigs use GEN accounting
      (others will use TICK, as-per Kconfig defaults).
      
      VIRT_CPU_ACCOUNTING_NATIVE does provide scaled vtime and stolen time
      apportioned between system and user time, and vtime accounting is not
      unconditionally enabled, and possibly other things. But it would be
      better at this point to extend GEN to cover important missing features
      rather than directing users back to a less used option.
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20220902085316.2071519-4-npiggin@gmail.com
      02382aff
    • Nicholas Piggin's avatar
      powerpc/pseries: Implement CONFIG_PARAVIRT_TIME_ACCOUNTING · 0e8a6313
      Nicholas Piggin authored
      CONFIG_VIRT_CPU_ACCOUNTING_GEN under pseries does not provide stolen
      time accounting unless CONFIG_PARAVIRT_TIME_ACCOUNTING is enabled.
      Implement this using the VPA accumulated wait counters.
      
      Note this will not work on current KVM hosts because KVM does not
      implement the VPA dispatch counters (yet). It could be implemented
      with the dispatch trace log as it is for VIRT_CPU_ACCOUNTING_NATIVE,
      but that is not necessary for the more limited accounting provided
      by PARAVIRT_TIME_ACCOUNTING, and it is more expensive, complex, and
      has downsides like potential log wrap.
      
      From Shrikanth:
      
        [...] it was tested on Power10 [PowerVM] Shared LPAR. system has two
        LPAR. we will call first one LPAR1 and second one as LPAR2. Test was
        carried out in SMT=1. Similar observation was seen in SMT=8 as well.
      
        LPAR config header from each LPAR is below. LPAR1 is twice as big as
        LPAR2. Since Both are sharing the same underlying hardware, work
        stealing will happen when both the LPAR's are contending for the same
        resource.
      
        LPAR1:
        type=Shared mode=Uncapped smt=Off lcpu=40 cpus=40 ent=20.00
        LPAR2:
        type=Shared mode=Uncapped smt=Off lcpu=20 cpus=40 ent=10.00
      
        mpstat was used to check for the utilization. stress-ng has been used
        as the workload. Few cases are tested. when the both LPAR are idle
        there is no steal time. when LPAR1 starts running at 100% which
        consumes all of the physical resource, steal time starts to get
        accounted.  With LPAR1 running at 100% and LPAR2 starts running, steal
        time starts increasing. This is as expected. When the LPAR2 Load is
        increased further, steal time increases further.
      
        Case 1: 0% LPAR1; 0% LPAR2
         %usr  %nice   %sys %iowait  %irq  %soft %steal %guest %gnice  %idle
         0.00   0.00   0.05   0.00   0.00   0.00   0.00   0.00   0.00  99.95
      
        Case 2: 100% LPAR1; 0% LPAR2
         %usr  %nice   %sys %iowait  %irq  %soft %steal %guest %gnice  %idle
        97.68   0.00   0.00   0.00   0.00   0.00   2.32   0.00   0.00   0.00
      
        Case 3: 100% LPAR1; 50% LPAR2
         %usr  %nice   %sys %iowait  %irq  %soft %steal %guest %gnice  %idle
        86.34   0.00   0.10   0.00   0.00   0.03  13.54   0.00   0.00   0.00
      
        Case 4: 100% LPAR1; 100% LPAR2
         %usr  %nice   %sys %iowait  %irq  %soft %steal %guest %gnice  %idle
        78.54   0.00   0.07   0.00   0.00   0.02  21.36   0.00   0.00   0.00
      
        Case 5: 50% LPAR1; 100% LPAR2
         %usr  %nice   %sys %iowait  %irq  %soft %steal %guest %gnice  %idle
        49.37   0.00   0.00   0.00   0.00   0.00   1.17   0.00   0.00  49.47
      
        Patch is accounting for the steal time and basic tests are holding
        good.
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Tested-by: default avatarShrikanth Hegde <sshegde@linux.ibm.com>
      [mpe: Add SPDX tag to new paravirt_api_clock.h]
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://lore.kernel.org/r/20220902085316.2071519-3-npiggin@gmail.com
      0e8a6313
  2. 04 Sep, 2022 3 commits
  3. 01 Sep, 2022 4 commits
  4. 26 Aug, 2022 12 commits
  5. 22 Aug, 2022 3 commits
  6. 21 Aug, 2022 16 commits