1. 26 Apr, 2012 5 commits
  2. 16 Apr, 2012 1 commit
    • Peter Portante's avatar
      qemu-timer.c: Remove 250us timeouts · 158fd3ce
      Peter Portante authored
      
      
      Basically, the main wait loop calls qemu_run_all_timers() unconditionally. The
      first thing this routine used to do is to see if a timer had been serviced,
      and then reset the loop timeout to the next deadline.
      
      However, the new deadlines had not been calculated at that point, as
      qemu_run_timers() had not been called yet for each of the clocks. So
      qemu_rearm_alarm_timer() would end up with a negative or zero deadline, and
      default to setting a 250us timeout for the loop.
      
      As qemu_run_timers() is called for each clock, the real deadlines would be put
      in place, but because a loop timeout was already set, the loop timeout would
      not be changed.
      
      Once that 250us timeout fired, the real deadline would be used for the
      subsequent timeout.
      
      For idle VMs, this effectively doubles the number of times through the loop,
      doubling the number of select() system calls, timer calls, etc. putting added
      scheduling pressure on the kernel. And under cgroups, this really causes a big
      problem because the cgroup code does not scale well.
      
      By simply running the timers before trying to rearm the timer, we always rearm
      with a non-zero deadline, effectively halving the number of system calls.
      Signed-off-by: default avatarPeter Portante <pportant@redhat.com>
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      158fd3ce
  3. 30 Mar, 2012 1 commit
  4. 17 Feb, 2012 1 commit
  5. 26 Jan, 2012 1 commit
  6. 09 Nov, 2011 1 commit
  7. 21 Oct, 2011 8 commits
  8. 15 Sep, 2011 2 commits
  9. 02 Sep, 2011 1 commit
    • Anthony Liguori's avatar
      main: force enabling of I/O thread · 12d4536f
      Anthony Liguori authored
      
      
      Enabling the I/O thread by default seems like an important part of declaring
      1.0.  Besides allowing true SMP support with KVM, the I/O thread means that the
      TCG VCPU doesn't have to multiplex itself with the I/O dispatch routines which
      currently requires a (racey) signal based alarm system.
      
      I know there have been concerns about performance.  I think so far the ones that
      have come up (virtio-net) are most likely due to secondary reasons like
      decreased batching.
      
      I think we ought to force enabling I/O thread early in 1.0 development and
      commit to resolving any lingering issues.
      Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
      12d4536f
  10. 20 Aug, 2011 1 commit
  11. 23 Jul, 2011 3 commits
  12. 06 Jun, 2011 1 commit
  13. 27 Apr, 2011 3 commits
  14. 15 Apr, 2011 3 commits
  15. 21 Mar, 2011 4 commits
    • Paolo Bonzini's avatar
      remove qemu_get_clock · 6d5ad9bf
      Paolo Bonzini authored
      
      
      These patches are already not doing a great service to out-of-tree
      modifications to QEMU.  However, at least we can warn them by getting
      rid of the old confusing functions, or otherwise causing compilation
      errors.  This patch removes qemu_get_clock; the previous one changed
      qemu_new_timer's signature.
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      6d5ad9bf
    • Paolo Bonzini's avatar
      add a generic scaling mechanism for timers · 4a998740
      Paolo Bonzini authored
      
      
      This enables rt_clock timers to use nanosecond resolution, just by
      using the _ns functions; there is really no reason to forbid that.
      
      Migrated timers are all using vm_clock (of course; but I checked that
      anyway) so the timers in the savevm files are already in nanosecond
      resolution.  So this patch makes no change to the migration format.
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      4a998740
    • Paolo Bonzini's avatar
      change all other clock references to use nanosecond resolution accessors · 74475455
      Paolo Bonzini authored
      
      
      This was done with:
      
          sed -i 's/qemu_get_clock\>/qemu_get_clock_ns/' \
              $(git grep -l 'qemu_get_clock\>' )
          sed -i 's/qemu_new_timer\>/qemu_new_timer_ns/' \
              $(git grep -l 'qemu_new_timer\>' )
      
      after checking that get_clock and new_timer never occur twice
      on the same line.  There were no missed occurrences; however, even
      if there had been, they would have been caught by the compiler.
      
      There was exactly one false positive in qemu_run_timers:
      
           -    current_time = qemu_get_clock (clock);
           +    current_time = qemu_get_clock_ns (clock);
      
      which is of course not in this patch.
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      74475455
    • Paolo Bonzini's avatar
      change all rt_clock references to use millisecond resolution accessors · 7bd427d8
      Paolo Bonzini authored
      
      
      This was done with:
      
          sed -i '/get_clock\>.*rt_clock/s/get_clock\>/get_clock_ms/' \
              $(git grep -l 'get_clock\>.*rt_clock' )
          sed -i '/new_timer\>.*rt_clock/s/new_timer\>/new_timer_ms/' \
              $(git grep -l 'new_timer\>.*rt_clock' )
      
      after checking that get_clock and new_timer never occur twice
      on the same line.  There were no missed occurrences; however, even
      if there had been, they would have been caught by the compiler.
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      7bd427d8
  16. 13 Mar, 2011 2 commits
  17. 23 Feb, 2011 1 commit
  18. 07 Feb, 2011 1 commit