Skip to content

chore: reduce heap usage when doing chunked data transfer#1702

Merged
derklaro merged 2 commits intonightlyfrom
chunked-transfer-nio
Jul 22, 2025
Merged

chore: reduce heap usage when doing chunked data transfer#1702
derklaro merged 2 commits intonightlyfrom
chunked-transfer-nio

Conversation

@derklaro
Copy link
Member

Motivation

Currently, chunked data transfers are copying the data via the heap into the target netty buffer (and vice-versa). This is very inefficient as this means that a native memory segment is copied to the heap and then back into a native memory segment.

Modification

Use nio Channels in combination with ByteBuffers to directly read/write the content being transferred to/from the netty buffer, completely removing the need for (almost) any heap allocations.

Result

Reduced heap usage when doing a chunked data transfers.

@derklaro derklaro added this to the 4.0.0-RC14 milestone Jul 22, 2025
@derklaro derklaro requested a review from 0utplay July 22, 2025 06:28
@derklaro derklaro self-assigned this Jul 22, 2025
@derklaro derklaro added v: 4.X This pull should be included in the 4.0 release in: driver An issue/pull request releated to the driver module code t: improvement The pull request improves existing code labels Jul 22, 2025
@github-actions
Copy link

github-actions bot commented Jul 22, 2025

Test Results

 56 files  ±0   56 suites  ±0   3m 7s ⏱️ +38s
570 tests ±0  570 ✅ ±0  0 💤 ±0  0 ❌ ±0 
935 runs  ±0  935 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit 854b437. ± Comparison against base commit dcce1a8.

This pull request removes 29 and adds 29 tests. Note that renamed tests count towards both.
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [23] 06:21:29.632374231
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [28] 06:21:29.632501859Z
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [29] 06:21:29.632522358Z
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [30] 06:21:29.632544459+05:00
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [31] 06:21:29.632559136-03:00
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [34] 2025-07-22T06:21:29.632686615
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [39] 2025-07-22T06:21:29.632824022Z
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [4] 2025-07-22T06:21:29.625081007Z
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [5] 2025-07-22T06:13:09.625085264Z
eu.cloudnetservice.driver.impl.network.rpc.object.DefaultObjectMapperTest ‑ [10] 24707, null
…
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [23] 21:12:56.673788968
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [28] 21:12:56.673904153Z
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [29] 21:12:56.673927477Z
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [30] 21:12:56.673948346+05:00
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [31] 21:12:56.673964476-03:00
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [34] 2025-07-22T21:12:56.674085693
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [39] 2025-07-22T21:12:56.674243578Z
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [4] 2025-07-22T21:12:56.666473660Z
eu.cloudnetservice.driver.impl.document.gson.JavaTimeSerializerTest ‑ [5] 2025-07-22T21:04:36.666477758Z
eu.cloudnetservice.driver.impl.network.rpc.object.DefaultObjectMapperTest ‑ [10] 15641, null
…

♻️ This comment has been updated with latest results.

0utplay
0utplay previously approved these changes Jul 22, 2025
@derklaro derklaro merged commit adc534c into nightly Jul 22, 2025
5 checks passed
@derklaro derklaro deleted the chunked-transfer-nio branch July 22, 2025 21:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

in: driver An issue/pull request releated to the driver module code t: improvement The pull request improves existing code v: 4.X This pull should be included in the 4.0 release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants