O(N*N) Loop in JournalManager#cleanupPageList
Bug #1047973 reported by
Peter Beaman
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Akiban Persistit |
Fix Released
|
Medium
|
Peter Beaman |
Bug Description
Bad code in this method causes periodic performance degradation in 4-hour TPCC test. The CPU cost of this algorithm scales as the square of the number of pages in the page list, and the work is done within a globally blocking synchronized block.
Related branches
lp:~pbeaman/akiban-persistit/fix-wait-for-durability
- Akiban Build User: Needs Fixing
- Nathan Williams: Approve
-
Diff: 1050 lines (+237/-196)12 files modifiedsrc/main/java/com/persistit/BufferPool.java (+13/-5)
src/main/java/com/persistit/CleanupManager.java (+32/-11)
src/main/java/com/persistit/Exchange.java (+11/-4)
src/main/java/com/persistit/IOMeter.java (+14/-4)
src/main/java/com/persistit/IntegrityCheck.java (+20/-0)
src/main/java/com/persistit/JournalManager.java (+102/-118)
src/main/java/com/persistit/Persistit.java (+12/-10)
src/main/java/com/persistit/TransactionPlayer.java (+3/-1)
src/main/java/com/persistit/logging/LogBase.java (+2/-2)
src/main/java/com/persistit/mxbeans/IOMeterMXBean.java (+2/-2)
src/main/java/com/persistit/mxbeans/JournalManagerMXBean.java (+20/-15)
src/test/java/com/persistit/JournalManagerTest.java (+6/-24)
Changed in akiban-persistit: | |
status: | New → Confirmed |
status: | Confirmed → In Progress |
assignee: | nobody → Peter Beaman (pbeaman) |
summary: |
- O(N^2) Loop in JournalManager#cleanupPageList + O(N*N) Loop in JournalManager#cleanupPageList |
Changed in akiban-persistit: | |
milestone: | none → 3.1.7 |
status: | In Progress → Fix Committed |
Changed in akiban-persistit: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.