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. frx.log
          932 kB
          Cezary Zawadka
        2. nps-method-time.png
          399 kB
          Marek Tokarski
        3. zipfile.svn.zip
          181 kB
          Cezary Zawadka

        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: