Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-21092

wiredTiger performance regression from 3.0.6 for contended update

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Gone away
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: WiredTiger
    • Labels:
      None
    • Backwards Compatibility:
      Fully Compatible
    • Operating System:
      ALL
    • Steps To Reproduce:
      Hide

      var run_contended_update = function(nThread, server_addr) {
          var d = db.getSiblingDB("test");
          d.dropDatabase();
          d.foo.insert({_id:1,a:0});
       
          res = benchRun( { 
              ops : [{ 
                  ns : "test.foo",
                  op : "update" ,
                  query: {_id: 1},
                  update : { $inc: {a: 1} } ,
                  writeCmd : true }],
              seconds : 300,
              totals : true,
              host : server_addr,
              parallel : nThread
          });
       
          return res;
      };
       
      var run_tests = function(server_addr) {
          // exit if this is sharded
          if ( sharded() ) {
              // do nothing here
              return;
          } else {
              res = run_contended_update(32, server_addr);
       
              res = run_contended_update(64, server_addr);
          }
      };
       
      run_tests(server);
      

      Show
      var run_contended_update = function(nThread, server_addr) { var d = db.getSiblingDB("test"); d.dropDatabase(); d.foo.insert({_id:1,a:0});   res = benchRun( { ops : [{ ns : "test.foo", op : "update" , query: {_id: 1}, update : { $inc: {a: 1} } , writeCmd : true }], seconds : 300, totals : true, host : server_addr, parallel : nThread });   return res; };   var run_tests = function(server_addr) { // exit if this is sharded if ( sharded() ) { // do nothing here return; } else { res = run_contended_update(32, server_addr);   res = run_contended_update(64, server_addr); } };   run_tests(server);
    • Sprint:
      Performance 10 (02/22/16), Performance 11 (03/14/16)

      Description

      Running a highly contended update workload, a significant performance regression was observed for wiredTiger compared to 3.0.6. With 64 threads concurrently updating a single document, the drop was ~15% for a single-node set up with oplog. Same workload on a 3-node replset showed roughly 30% drop.

      Interestingly, same workloads with 32 threads contending on doing the update, the throughput is more than 50% higher and shows no regression compared to 3.0.6.

        Attachments

        1. s21092_bench.sh
          0.5 kB
        2. s21092.js
          0.8 kB

          Activity

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: