Skip to content

Commit 5a821ca

Browse files
committed
fix h3 header to h2
1 parent 33792e2 commit 5a821ca

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

src/main/java/org/apache/sysds/runtime/instructions/ooc/OOCEvictionManager.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,17 @@
4949
* Eviction Manager for the Out-Of-Core (OOC) stream cache.
5050
* <p>
5151
* This manager implements a high-performance, thread-safe buffer pool designed
52-
* to handle intermediate results that exceed available heap memory. It builds on
52+
* to handle intermediate results that exceed available heap memory. It employs
5353
* a <b>partitioned eviction</b> strategy to maximize disk throughput and a
5454
* <b>lock-striped</b> concurrency model to minimize thread contention.
5555
*
56-
* <h3>1. Purpose</h3>
56+
* <h2>1. Purpose</h2>
5757
* Provides a bounded cache for {@code MatrixBlock}s produced and consumed by OOC
5858
* streaming operators (e.g., {@code tsmm}, {@code ba+*}). When memory pressure
5959
* exceeds a configured limit, blocks are transparently evicted to disk and restored
60-
* on demand.
60+
* on demand, allowing execution of operations larger than RAM.
6161
*
62-
* <h3>2. Lifecycle Management</h3>
62+
* <h2>2. Lifecycle Management</h2>
6363
* Blocks transition atomically through three states to ensure data consistency:
6464
* <ul>
6565
* <li><b>HOT:</b> The block is pinned in the JVM heap ({@code value != null}).</li>
@@ -69,7 +69,7 @@
6969
* to free memory, but the container (metadata) remains in the cache map.</li>
7070
* </ul>
7171
*
72-
* <h3>3. Eviction Strategy (Partitioned I/O)</h3>
72+
* <h2>3. Eviction Strategy (Partitioned I/O)</h2>
7373
* To mitigate I/O thrashing caused by writing thousands of small blocks:
7474
* <ul>
7575
* <li>Eviction is <b>partition-based</b>: Groups of "HOT" blocks are gathered into
@@ -79,21 +79,21 @@
7979
* evicted block, allowing random-access reloading.</li>
8080
* </ul>
8181
*
82-
* <h3>4. Data Integrity (Re-hydration)</h3>
82+
* <h2>4. Data Integrity (Re-hydration)</h2>
8383
* To prevent index corruption during serialization/deserialization cycles, this manager
8484
* uses a "re-hydration" model. The {@code IndexedMatrixValue} container is <b>never</b>
8585
* removed from the cache structure. Eviction only nulls the data payload. Loading
8686
* restores the data into the existing container, preserving the original {@code MatrixIndexes}.
8787
*
88-
* <h3>5. Concurrency Model (Fine-Grained Locking)</h3>
88+
* <h2>5. Concurrency Model (Fine-Grained Locking)</h2>
8989
* <ul>
9090
* <li><b>Global Structure Lock:</b> A coarse-grained lock ({@code _cacheLock}) guards
9191
* the {@code LinkedHashMap} structure against concurrent insertions, deletions,
9292
* and iteration during eviction selection.</li>
9393
*
9494
* <li><b>Per-Block Locks:</b> Each {@code BlockEntry} owns an independent
9595
* {@code ReentrantLock}. This decouples I/O operations, allowing a reader to load
96-
* "Block A" from disk while the evictor simultaneously writes "Block B" to disk,
96+
* "Block A" from disk while the evictor writes "Block B" to disk simultaneously,
9797
* maximizing throughput.</li>
9898
*
9999
* <li><b>Condition Queues:</b> To handle read-write races, the system uses atomic

0 commit comments

Comments
 (0)