[
https://issues.apache.org/jira/browse/IGNITE-17749?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ivan Daschinsky updated IGNITE-17749:
-------------------------------------
Description:
It seems that zeroing of page in `PageMemoryImpl.ClearSegmentRunnable`
is not needed. Page, that is borrowed not from
`PageMemoryImpl.Segment#loadedPages`
or from freePageList (see `PageMemoryImpl.Segment.pool.freePageListPtr`),
always either are zeroed explicitly or read from the persistence store.
See `PageMemoryImpl.acquirePage` and `PageMemoryImpl.allocatePage`
Zeroing of pages is a quite long operation in some cases, i.e. large memory
region, see
See excerpts from a series of threadumps fro a jfr recording, that was recorded
on some server node.
{code}
TD_2022_08_23__21_57_40_1663679630023.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__21_57_40_1663679630023.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__21_57_40_1663679630023.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__21_58_10_1663679631047.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__21_58_10_1663679631047.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__21_58_10_1663679631047.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__21_58_40_1663679632677.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__21_58_40_1663679632677.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__21_58_40_1663679632677.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__21_59_10_1663679633562.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__21_59_10_1663679633562.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__21_59_10_1663679633562.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__21_59_40_1663679634489.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__21_59_40_1663679634489.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__21_59_40_1663679634489.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__22_00_10_1663679635411.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__22_00_10_1663679635411.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__22_00_10_1663679635411.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__22_00_40_1663679637003.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__22_00_40_1663679637003.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__22_00_40_1663679637003.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__22_01_10_1663679637840.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__22_01_10_1663679637840.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__22_01_10_1663679637840.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__22_01_40_1663679639483.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__22_01_40_1663679639483.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__22_01_40_1663679639483.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__22_02_10_1663679640384.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__22_02_10_1663679640384.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__22_02_10_1663679640384.log- at sun.misc.Unsafe.setMemory(Native
Method)
{code}
was:
It seems that zeroing of page in `PageMemoryImpl.ClearSegmentRunnable`
is not needed. Page, that is borrowed not from
`PageMemoryImpl.Segment#loadedPages`
or from freePageList (see `PageMemoryImpl.Segment.pool.freePageListPtr`),
always either are zeroed explicitly or read from the persistence store.
Zeroing of pages is a quite long operation in some cases, i.e. large memory
region, see
See excerpts from a series of threadumps fro a jfr recording, that was recorded
on some server node.
{code}
TD_2022_08_23__21_57_40_1663679630023.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__21_57_40_1663679630023.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__21_57_40_1663679630023.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__21_58_10_1663679631047.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__21_58_10_1663679631047.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__21_58_10_1663679631047.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__21_58_40_1663679632677.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__21_58_40_1663679632677.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__21_58_40_1663679632677.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__21_59_10_1663679633562.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__21_59_10_1663679633562.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__21_59_10_1663679633562.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__21_59_40_1663679634489.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__21_59_40_1663679634489.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__21_59_40_1663679634489.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__22_00_10_1663679635411.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__22_00_10_1663679635411.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__22_00_10_1663679635411.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__22_00_40_1663679637003.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__22_00_40_1663679637003.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__22_00_40_1663679637003.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__22_01_10_1663679637840.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__22_01_10_1663679637840.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__22_01_10_1663679637840.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__22_01_40_1663679639483.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__22_01_40_1663679639483.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__22_01_40_1663679639483.log- at sun.misc.Unsafe.setMemory(Native
Method)
--
TD_2022_08_23__22_02_10_1663679640384.log:"page-mem-op-#247087" #4407636 prio=5
os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable [0x00007f8c732f3000]
TD_2022_08_23__22_02_10_1663679640384.log- java.lang.Thread.State: RUNNABLE
TD_2022_08_23__22_02_10_1663679640384.log- at sun.misc.Unsafe.setMemory(Native
Method)
{code}
> Remove unneeded zeroing of page in PageMemoryImpl.ClearSegmentRunnable
> ----------------------------------------------------------------------
>
> Key: IGNITE-17749
> URL: https://issues.apache.org/jira/browse/IGNITE-17749
> Project: Ignite
> Issue Type: Improvement
> Reporter: Ivan Daschinsky
> Assignee: Ivan Daschinsky
> Priority: Major
>
> It seems that zeroing of page in `PageMemoryImpl.ClearSegmentRunnable`
> is not needed. Page, that is borrowed not from
> `PageMemoryImpl.Segment#loadedPages`
> or from freePageList (see `PageMemoryImpl.Segment.pool.freePageListPtr`),
> always either are zeroed explicitly or read from the persistence store.
> See `PageMemoryImpl.acquirePage` and `PageMemoryImpl.allocatePage`
> Zeroing of pages is a quite long operation in some cases, i.e. large memory
> region, see
> See excerpts from a series of threadumps fro a jfr recording, that was
> recorded on some server node.
> {code}
> TD_2022_08_23__21_57_40_1663679630023.log:"page-mem-op-#247087" #4407636
> prio=5 os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable
> [0x00007f8c732f3000]
> TD_2022_08_23__21_57_40_1663679630023.log- java.lang.Thread.State: RUNNABLE
> TD_2022_08_23__21_57_40_1663679630023.log- at
> sun.misc.Unsafe.setMemory(Native Method)
> --
> TD_2022_08_23__21_58_10_1663679631047.log:"page-mem-op-#247087" #4407636
> prio=5 os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable
> [0x00007f8c732f3000]
> TD_2022_08_23__21_58_10_1663679631047.log- java.lang.Thread.State: RUNNABLE
> TD_2022_08_23__21_58_10_1663679631047.log- at
> sun.misc.Unsafe.setMemory(Native Method)
> --
> TD_2022_08_23__21_58_40_1663679632677.log:"page-mem-op-#247087" #4407636
> prio=5 os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable
> [0x00007f8c732f3000]
> TD_2022_08_23__21_58_40_1663679632677.log- java.lang.Thread.State: RUNNABLE
> TD_2022_08_23__21_58_40_1663679632677.log- at
> sun.misc.Unsafe.setMemory(Native Method)
> --
> TD_2022_08_23__21_59_10_1663679633562.log:"page-mem-op-#247087" #4407636
> prio=5 os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable
> [0x00007f8c732f3000]
> TD_2022_08_23__21_59_10_1663679633562.log- java.lang.Thread.State: RUNNABLE
> TD_2022_08_23__21_59_10_1663679633562.log- at
> sun.misc.Unsafe.setMemory(Native Method)
> --
> TD_2022_08_23__21_59_40_1663679634489.log:"page-mem-op-#247087" #4407636
> prio=5 os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable
> [0x00007f8c732f3000]
> TD_2022_08_23__21_59_40_1663679634489.log- java.lang.Thread.State: RUNNABLE
> TD_2022_08_23__21_59_40_1663679634489.log- at
> sun.misc.Unsafe.setMemory(Native Method)
> --
> TD_2022_08_23__22_00_10_1663679635411.log:"page-mem-op-#247087" #4407636
> prio=5 os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable
> [0x00007f8c732f3000]
> TD_2022_08_23__22_00_10_1663679635411.log- java.lang.Thread.State: RUNNABLE
> TD_2022_08_23__22_00_10_1663679635411.log- at
> sun.misc.Unsafe.setMemory(Native Method)
> --
> TD_2022_08_23__22_00_40_1663679637003.log:"page-mem-op-#247087" #4407636
> prio=5 os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable
> [0x00007f8c732f3000]
> TD_2022_08_23__22_00_40_1663679637003.log- java.lang.Thread.State: RUNNABLE
> TD_2022_08_23__22_00_40_1663679637003.log- at
> sun.misc.Unsafe.setMemory(Native Method)
> --
> TD_2022_08_23__22_01_10_1663679637840.log:"page-mem-op-#247087" #4407636
> prio=5 os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable
> [0x00007f8c732f3000]
> TD_2022_08_23__22_01_10_1663679637840.log- java.lang.Thread.State: RUNNABLE
> TD_2022_08_23__22_01_10_1663679637840.log- at
> sun.misc.Unsafe.setMemory(Native Method)
> --
> TD_2022_08_23__22_01_40_1663679639483.log:"page-mem-op-#247087" #4407636
> prio=5 os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable
> [0x00007f8c732f3000]
> TD_2022_08_23__22_01_40_1663679639483.log- java.lang.Thread.State: RUNNABLE
> TD_2022_08_23__22_01_40_1663679639483.log- at
> sun.misc.Unsafe.setMemory(Native Method)
> --
> TD_2022_08_23__22_02_10_1663679640384.log:"page-mem-op-#247087" #4407636
> prio=5 os_prio=0 tid=0x00007ef984041000 nid=0x9639 runnable
> [0x00007f8c732f3000]
> TD_2022_08_23__22_02_10_1663679640384.log- java.lang.Thread.State: RUNNABLE
> TD_2022_08_23__22_02_10_1663679640384.log- at
> sun.misc.Unsafe.setMemory(Native Method)
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)