Uploaded image for project: 'Red Hat Decision Manager'
  1. Red Hat Decision Manager
  2. RHDM-1994

Performance degradation when increasing concurrency of rule execution in multi threads

    XMLWordPrintable

Details

    • False
    • None
    • False
    • Release Notes
    • +

    Description

      Customer see performance degradation when increasing number of concurrent rule execution in multi thread.

      According to thread dump, the following stack or similar one appear so frequently in RUNNABLE threads.

         java.lang.Thread.State: RUNNABLE
      	at org.drools.core.reteoo.RightTupleImpl.getInputOtnId(RightTupleImpl.java:252)
      	at org.drools.core.reteoo.BetaNode.modifyObject(BetaNode.java:322)
      	at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:755)
      	at org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:669)
      	at org.drools.core.reteoo.AlphaNode.modifyObject(AlphaNode.java:146)
      	at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:755)
              ...
      
         java.lang.Thread.State: RUNNABLE
      	at org.drools.core.reteoo.RightTupleImpl.getInputOtnId(RightTupleImpl.java:252)
      	at org.drools.core.reteoo.BetaNode.modifyObject(BetaNode.java:322)
      	at org.drools.core.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:755)
      	at org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:669)
      	at org.drools.core.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:396)
      	at org.drools.core.phreak.PropagationEntry$Update.execute(PropagationEntry.java:233)
              ...
      
         java.lang.Thread.State: RUNNABLE
      	at org.drools.core.reteoo.RightTupleImpl.getInputOtnId(RightTupleImpl.java:252)
      	at org.drools.core.reteoo.BetaNode.modifyObject(BetaNode.java:322)
      	at org.drools.core.reteoo.BetaNode.byPassModifyToBetaNode(BetaNode.java:571)
      	at org.drools.core.reteoo.CompositeObjectSinkAdapter.byPassModifyToBetaNode(CompositeObjectSinkAdapter.java:732)
      	at org.drools.core.reteoo.AlphaNode.byPassModifyToBetaNode(AlphaNode.java:160)
      	at org.drools.core.reteoo.AlphaNode.modifyObject(AlphaNode.java:152)
              ...
      

      When analysing by JFR, the following methods appears at the top of the list in Method profiling.

      org.drools.core.reteoo.RightTupleImpl.getInputOtnId()
      org.drools.core.reteoo.CompositeObjectSinkAdapter.byPassModifyToBetaNode(InternalFactHandle, ModifyPreviousTuples, PropagationContext, InternalWorkingMemory)
      org.drools.core.reteoo.RightTupleImpl.getTupleSink()
      org.drools.core.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(InternalFactHandle, PropagationContext, InternalWorkingMemory)
      

      So modifyObject performance seems to be degraded when increasing concurrency.

      Attachments

        Issue Links

          Activity

            People

              rhn-support-tkobayas Toshiya Kobayashi
              rhn-support-hmiura Hiroko Miura
              Daniel Rosa Daniel Rosa
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: