Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-665

FIFO Cache (Unsynchronized): 9x times performance boost

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • 1.3
    • None
    • None
    • None
    • JRockit R27 (Java 6)

    Description

      Attached is modified version of LRUCache where
      1. map = new LinkedHashMap(initialSize, 0.75f, false) - so that "reordering"/true (performance bottleneck of LRU) is replaced to "insertion-order"/false (so that it became FIFO)
      2. Almost all (absolutely unneccessary) synchronized statements commented out

      See discussion at http://www.nabble.com/LRUCache---synchronized%21--td16439831.html

      Performance metrics (taken from SOLR Admin):

      LRU
      Requests: 7638
      Average Time-Per-Request: 15300
      Average Request-per-Second: 0.06

      FIFO:
      Requests: 3355
      Average Time-Per-Request: 1610
      Average Request-per-Second: 0.11

      Performance increased 9 times which roughly corresponds to a number of CPU in a system, http://www.tokenizer.org/ (Shopping Search Engine at Tokenizer.org)

      Current number of documents: 7494689
      name: filterCache
      class: org.apache.solr.search.LRUCache
      version: 1.0
      description: LRU Cache(maxSize=10000000, initialSize=1000)
      stats: lookups : 15966954582
      hits : 16391851546
      hitratio : 0.102
      inserts : 4246120
      evictions : 0
      size : 2668705
      cumulative_lookups : 16415839763
      cumulative_hits : 16411608101
      cumulative_hitratio : 0.99
      cumulative_inserts : 4246246
      cumulative_evictions : 0

      Thanks

      Attachments

        1. FIFOCache.java
          8 kB
          Fuad Efendi
        2. ConcurrentFIFOCache.java
          1 kB
          Noble Paul
        3. ConcurrentLRUCache.java
          3 kB
          Noble Paul
        4. ConcurrentFIFOCache.java
          2 kB
          Noble Paul
        5. ConcurrentLRUWeakCache.java
          2 kB
          Fuad Efendi
        6. SimplestConcurrentLRUCache.java
          2 kB
          Fuad Efendi

        Activity

          People

            Unassigned Unassigned
            funtick Fuad Efendi
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - 672h
                672h
                Remaining:
                Remaining Estimate - 672h
                672h
                Logged:
                Time Spent - Not Specified
                Not Specified