1. 02 Nov, 2017 1 commit
    • Dongli Zhang's avatar
      xen/time: do not decrease steal time after live migration on xen · 5e25f5db
      Dongli Zhang authored
      After guest live migration on xen, steal time in /proc/stat
      (cpustat[CPUTIME_STEAL]) might decrease because steal returned by
      xen_steal_lock() might be less than this_rq()->prev_steal_time which is
      derived from previous return value of xen_steal_clock().
      
      For instance, steal time of each vcpu is 335 before live migration.
      
      cpu  198 0 368 200064 1962 0 0 1340 0 0
      cpu0 38 0 81 50063 492 0 0 335 0 0
      cpu1 65 0 97 49763 634 0 0 335 0 0
      cpu2 38 0 81 50098 462 0 0 335 0 0
      cpu3 56 0 107 50138 374 0 0 335 0 0
      
      After live migration, steal time is reduced to 312.
      
      cpu  200 0 370 200330 1971 0 0 1248 0 0
      cpu0 38 0 82 50123 500 0 0 312 0 0
      cpu1 65 0 97 49832 634 0 0 312 0 0
      cpu2 39 0 82 50167 462 0 0 312 0 0
      cpu3 56 0 107 50207 374 0 0 312 0 0
      
      Since runstate times are cumulative and cleared during xen live migration
      by xen hypervisor, the idea of this patch is to accumulate runstate times
      to global percpu variables before live migration suspend. Once guest VM is
      resumed, xen_get_runstate_snapshot_cpu() would always return the sum of new
      runstate times and previously accumulated times stored in global percpu
      variables.
      
      Comment above HYPERVISOR_suspend() has been removed as it is inaccurate:
      the call can return an error code (e.g., possibly -EPERM in the future).
      
      Similar and more severe issue would impact prior linux 4.8-4.10 as
      discussed by Michael Las at
      https://0xstubs.org/debugging-a-flaky-cpu-steal-time-counter-on-a-paravirtualized-xen-guest,
      which would overflow steal time and lead to 100% st usage in top command
      for linux 4.8-4.10. A backport of this patch would fix that issue.
      
      [boris: added linux/slab.h to driver/xen/time.c, slightly reformatted
              commit message]
      
      References: https://0xstubs.org/debugging-a-flaky-cpu-steal-time-counter-on-a-paravirtualized-xen-guestSigned-off-by: default avatarDongli Zhang <dongli.zhang@oracle.com>
      Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Signed-off-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
      5e25f5db
  2. 31 Oct, 2017 14 commits
  3. 29 Oct, 2017 25 commits