1. 11 Mar, 2013 7 commits
    • antirez's avatar
      da2dd899
    • antirez's avatar
      activeExpireCycle(): process only a small number of DBs per iteration. · 13f84841
      antirez authored
      This small number of DBs is set to 16 so actually in the default
      configuraiton Redis should behave exactly like in the past.
      However the difference is that when the user configures a very large
      number of DBs we don't do an O(N) operation, consuming a non trivial
      amount of CPU per serverCron() iteration.
      13f84841
    • antirez's avatar
      ef3a95fa
    • antirez's avatar
      Only resize/rehash a few databases per cron iteration. · 665b819e
      antirez authored
      This is the first step to lower the CPU usage when many databases are
      configured. The other is to also process a limited number of DBs per
      call in the active expire cycle.
      665b819e
    • antirez's avatar
      bb562a64
    • antirez's avatar
      e166abad
    • antirez's avatar
      serverCron() frequency is now a runtime parameter (was REDIS_HZ). · aec5ea5d
      antirez authored
      REDIS_HZ is the frequency our serverCron() function is called with.
      A more frequent call to this function results into less latency when the
      server is trying to handle very expansive background operations like
      mass expires of a lot of keys at the same time.
      
      Redis 2.4 used to have an HZ of 10. This was good enough with almost
      every setup, but the incremental key expiration algorithm was working a
      bit better under *extreme* pressure when HZ was set to 100 for Redis
      2.6.
      
      However for most users a latency spike of 30 milliseconds when million
      of keys are expiring at the same time is acceptable, on the other hand a
      default HZ of 100 in Redis 2.6 was causing idle instances to use some
      CPU time compared to Redis 2.4. The CPU usage was in the order of 0.3%
      for an idle instance, however this is a shame as more energy is consumed
      by the server, if not important resources.
      
      This commit introduces HZ as a runtime parameter, that can be queried by
      INFO or CONFIG GET, and can be modified with CONFIG SET. At the same
      time the default frequency is set back to 10.
      
      In this way we default to a sane value of 10, but allows users to
      easily switch to values up to 500 for near real-time applications if
      needed and if they are willing to pay this small CPU usage penalty.
      aec5ea5d
  2. 06 Mar, 2013 11 commits
  3. 04 Mar, 2013 4 commits
  4. 12 Feb, 2013 3 commits
  5. 11 Feb, 2013 9 commits
  6. 08 Feb, 2013 1 commit
  7. 07 Feb, 2013 1 commit
  8. 05 Feb, 2013 4 commits