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

wiredTiger performance regression from 3.0.6 for contended update

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: WiredTiger
    • Labels:
      None
    • Fully Compatible
    • ALL
    • 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);
    • Performance 10 (02/22/16), Performance 11 (03/14/16)

      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.

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

            Assignee:
            chung-yen.chang Chung-yen Chang
            Reporter:
            chung-yen.chang Chung-yen Chang
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved: