Skip to content

Increase speed for create and unpack bundle operations - #26

Open
CCPCookies wants to merge 2 commits into
carbonengine:mainfrom
CCPCookies:UnbundleRam
Open

Increase speed for create and unpack bundle operations#26
CCPCookies wants to merge 2 commits into
carbonengine:mainfrom
CCPCookies:UnbundleRam

Conversation

@CCPCookies

Copy link
Copy Markdown
Member

The focus of this change is to increase both creation and unpacking of bundles so it can be used for delivery of large datasets.
Especially focused on datasets which contain very large files.

Local speed test results running on large data set

create-bundle
before: ~38mins
after: ~2mins

unpack-bundle
before: ~8mins
after: ~2mins

create-bundle operation

Now can support bundles split on uncompressed size. This allows for compression to be deferred and run asynchronously. This method is not appropriate for all data types. Split on compressed size remains the default.

Memory operations that were causing speed degredation have been mitigated. Processing bottleneck is now md5 calculations and compression.

Thread options have been added. Chunk processing is now conducted asynchronously. With deferred compression this is a considerable speed increase.

unpack-bundle operation

Memory operations that were causing speed degredation have been mitigated. This is aided by caching more in RAM and the cache value is exposed to the user. Processing bottleneck is now md5 checksum and IO.

Tests

Tests functionally remain the same, changes were made to make them work with the changes in internal interfaces.
Further tests to cover new options will follow.

Documentation

Options added to CLI contain appropriate documentation through help interface. Auto generated c++ api covers all additions to the interface. Supporting bundle documentation is now out of date, an update will follow.

Now can support bundles split on uncompressed size.
This allows for compression to be deferred and run asynchronously.
This method is not appropriate for all data types.
Split on compressed size remains the default.

Memory operations that were causing speed degredation have been mitigated.
Processing bottleneck is now md5 calculations and compression.

Thread options have been added. Chunk processing is now conducted
asynchronously. With deferred compression this is a considerable
speed increase.

Memory operations that were causing speed degredation  have been mitigated.
This is aided by caching more in RAM and the cache value is exposed to the user.
Processing bottleneck is now md5 checksum and IO.

Tests functionally remain the same, changes were made to make them work with the
changes in internal interfaces.
Further tests to cover new options will follow.

Options added to CLI contain appropriate documentation through help interface.
Auto generated c++ api covers all additions to the interface.
Supporting bundle documentation is now out of date, an update will follow.
1. Added option to fail if patch size exceeds certain size
2. create-patch will now also produce a resourcegroup of new files added
3. apply-patch can now be set to skip new files to allow for them to be
   delivered in an alternate manner. Ie through bundling which works
   better if the new files added are large.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant