1. 16 5月, 2012 1 次提交
  2. 15 5月, 2012 5 次提交
  3. 14 5月, 2012 4 次提交
    • A
      Added time.h include in redis-cli. · e67d014d
      antirez 提交于
      redis-cli.c uses the time() function to seed the PRNG, but time.h was
      not included. This was not noticed since sys/time.h is included and was
      enough in most systems (but not correct). With Ubuntu 12.04 GCC
      generates a warning that made us aware of the issue.
      e67d014d
    • A
      activeExpireCycle(): better precision in max time used. · eee68054
      antirez 提交于
      activeExpireCycle() can consume no more than a few milliseconds per
      iteration. This commit improves the precision of the check for the time
      elapsed in two ways:
      
      1) We check every 16 iterations instead of the main loop instead of 256.
      2) We reset iterations at the start of the function and not every time
         we switch to the next database, so the check is correctly performed
         every 16 iterations.
      eee68054
    • A
      Impovements for: Redis timer, hashes rehashing, keys collection. · a8a981a8
      antirez 提交于
      A previous commit introduced REDIS_HZ define that changes the frequency
      of calls to the serverCron() Redis function. This commit improves
      different related things:
      
      1) Software watchdog: now the minimal period can be set according to
      REDIS_HZ. The minimal period is two times the timer period, that is:
      
          (1000/REDIS_HZ)*2 milliseconds
      
      2) The incremental rehashing is now performed in the expires dictionary
      as well.
      
      3) The activeExpireCycle() function was improved in different ways:
      
      - Now it checks if it already used too much time using microseconds
        instead of milliseconds for better precision.
      - The time limit is now calculated correctly, in the previous version
        the division was performed before of the multiplication resulting in
        a timelimit of 0 if HZ was big enough.
      - Databases with less than 1% of buckets fill in the hash table are
        skipped, because getting random keys is too expensive in this
        condition.
      
      4) tryResizeHashTables() is now called at every timer call, we need to
         match the number of calls we do to the expired keys colleciton cycle.
      
      5) REDIS_HZ was raised to 100.
      a8a981a8
    • A
      Redis timer interrupt frequency configurable as REDIS_HZ. · f7f2b261
      antirez 提交于
      Redis uses a function called serverCron() that is very similar to the
      timer interrupt of an operating system. This function is used to handle
      a number of asynchronous things, like active expired keys collection,
      clients timeouts, update of statistics, things related to the cluster
      and replication, triggering of BGSAVE and AOF rewrite process, and so
      forth.
      
      In the past the timer was called 1 time per second. At some point it was
      raised to 10 times per second, but it still was fixed and could not be
      changed even at compile time, because different functions called from
      serverCron() assumed a given fixed frequency.
      
      This commmit makes the frequency configurable, so that it is simpler to
      pick a good tradeoff between overhead of this function (that is usually
      very small) and the responsiveness of Redis during a few critical
      circumstances where a lot of work is done inside the timer.
      
      An example of such a critical condition is mass-expire of a lot of keys
      in the same second. Up to a given percentage of CPU time is used to
      perform expired keys collection per expire cylce. Now changing the
      REDIS_HZ macro it is possible to do less work but more times per second
      in order to block the server for less time.
      
      If this patch will work well in our tests it will enter Redis 2.6-final.
      f7f2b261
  4. 12 5月, 2012 6 次提交
  5. 10 5月, 2012 1 次提交
  6. 09 5月, 2012 1 次提交
  7. 06 5月, 2012 4 次提交
  8. 05 5月, 2012 2 次提交
  9. 04 5月, 2012 1 次提交
  10. 03 5月, 2012 2 次提交
    • A
      syncio.c read / write functions reworked for correctness and performance. · 0cf10e8e
      antirez 提交于
      The new implementation start reading / writing before blocking with
      aeWait(), likely the descriptor can accept writes or has buffered data
      inside and we can go faster, otherwise we get an error and wait.
      
      This change has effects on speed but also on correctness: on socket
      errors when we perform non blocking connect(2) write is performed ASAP
      and the error is returned ASAP before waiting.
      
      So the practical effect is that now a Redis slave is more available if it
      can not connect to the master, previously the slave continued to block on
      syncWrite() trying to send SYNC, and serving commands very slowly.
      0cf10e8e
    • A
      9b43b1ef
  11. 02 5月, 2012 4 次提交
  12. 01 5月, 2012 3 次提交
  13. 30 4月, 2012 1 次提交
  14. 29 4月, 2012 1 次提交
  15. 28 4月, 2012 1 次提交
  16. 27 4月, 2012 3 次提交