Uploaded image for project: 'Crucible'
  1. Crucible
  2. CRUC-6593

High CPU load on review page

    XMLWordPrintable

Details

    • 69
    • Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

    Description

      Review pages can cause high CPU load. From one client's debugs logs we see that over 13 seconds were spent in rendering review page:

      • ~7-8 seconds spent in preparing data for rendering including 2 calls to FRXDO.mapInlineComments() (2.5 secs each)
      • ~3 seconds spent in lines rendering (~500 diff regions)
      • ~3 seconds spent in comment rendering (~20 comments)

      At least 1 superfluous FRXDO.mapInlineComments() call can be avoided

      Example stacktrace:

      "btpool0-9732" prio=10 tid=0x00007fbe198d3800 nid=0xb74 runnable [0x00007fbdf34ef000]
         java.lang.Thread.State: RUNNABLE
      	at com.cenqua.fisheye.diff.MyersOND.buildPath(MyersOND.java:123)
      	at com.cenqua.fisheye.diff.MyersOND.diff(MyersOND.java:82)
      	at com.cenqua.fisheye.diff.Diff.diff(Diff.java:8)
      	at com.cenqua.fisheye.diff.DiffHelper.getHunkList(DiffHelper.java:26)
      	at com.cenqua.fisheye.diff.DiffHelper.getHunkList(DiffHelper.java:139)
      	at com.cenqua.crucible.revision.source.Source.getHunkList(Source.java:225)
      	at com.cenqua.crucible.view.FRXDO.getHunkList(FRXDO.java:1273)
      	at com.cenqua.crucible.view.FRXDO.getTetrisGrid(FRXDO.java:744)
      	at com.cenqua.crucible.view.FRXDO.mapInlineComments(FRXDO.java:772)
      	at com.cenqua.crucible.view.FRXDO.<init>(FRXDO.java:201)
      	at com.cenqua.crucible.revision.managers.DefaultContentManager.makeFRXDO(DefaultContentManager.java:107)
      	at com.atlassian.crucible.actions.ReviewBaseAction.makeFRXDO(ReviewBaseAction.java:596)
      	at com.atlassian.crucible.actions.ViewFRXAction.execute(ViewFRXAction.java:184)
      

      2nd example stacktrace:

      "btpool0-407" prio=10 tid=0x00002aafc873f000 nid=0x1aac runnable [0x0000000049ba8000]
         java.lang.Thread.State: RUNNABLE
      	at java.io.RandomAccessFile.length(Native Method)
      	at com.cenqua.fisheye.io.BufferedRandomAccessInputStream.length(BufferedRandomAccessInputStream.java:213)
      	at com.cenqua.fisheye.io.Utf16ERandomAccessIoStream.length(Utf16ERandomAccessIoStream.java:32)
      	at com.cenqua.fisheye.io.BufferedCharSequence.<init>(BufferedCharSequence.java:25)
      	at com.cenqua.fisheye.io.BufferedCharSequence.subSequence(BufferedCharSequence.java:52)
      	at com.cenqua.fisheye.diff.RegionListDiffSequences.getCharSequence(RegionListDiffSequences.java:75)
      	at com.cenqua.fisheye.diff.RegionListDiffSequences.equalImpl(RegionListDiffSequences.java:69)
      	at com.cenqua.fisheye.diff.RegionListDiffSequences.equal(RegionListDiffSequences.java:59)
      	at com.cenqua.fisheye.diff.MyersOND.buildPath(MyersOND.java:123)
      	at com.cenqua.fisheye.diff.MyersOND.diff(MyersOND.java:82)
      	at com.cenqua.fisheye.diff.Diff.diff(Diff.java:8)
      	at com.cenqua.fisheye.diff.EDiff.doDiff(EDiff.java:65)
      	at com.cenqua.fisheye.diff.view.DiffPrinter.setupEdiff(DiffPrinter.java:266)
      	at com.cenqua.fisheye.diff.view.DiffPrinter.access$100(DiffPrinter.java:28)
      	at com.cenqua.fisheye.diff.view.DiffPrinter$1.next(DiffPrinter.java:174)
      	at com.cenqua.fisheye.diff.view.DiffPrinter$1.next(DiffPrinter.java:151)
      	at com.cenqua.crucible.view.DiffDO.mapCommentsToDiff(DiffDO.java:38)
      	at com.cenqua.crucible.view.FRXDO.getLines(FRXDO.java:1245)
      	at com.cenqua.crucible.view.FRXDO.isNoChange(FRXDO.java:1216)
      

      Attachments

        1. zipfile.svn.zip
          181 kB
        2. nps-method-time.png
          nps-method-time.png
          399 kB
        3. frx.log
          932 kB

        Issue Links

          Activity

            People

              Unassigned Unassigned
              czawadka@atlassian.com Cezary Zawadka
              Votes:
              19 Vote for this issue
              Watchers:
              31 Start watching this issue

              Dates

                Created:
                Updated: