Parallel Core Dump Streaming Across Heterogeneous Cloud Storage
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Core dump generation for large memory-intensive applications in public clouds is time-consuming and costly due to single-threaded bottlenecks and provisioned storage models, leading to extended system downtime and increased infrastructure costs.
Innovation Solution
A multi-threaded approach utilizing heterogeneous backend storage types, including EBS volumes, instance storage, and object storage, with dynamic provisioning to parallelize core dump processes, reducing bottlenecks and avoiding upfront resource allocation.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Device complexity
If a single-threaded approach is used to generate core dumps, then the system is simple to implement, but the core dump generation time becomes excessively long for large memory-intensive applications
Solution Approach 1:
The patent divides the core dump generation process into multiple segments by creating multiple helper processes, each handling a portion of the memory dump. The memory is partitioned across different storage backends (EBS volumes, instance storage, object storage) and processed in parallel through multiple streaming threads, significantly reducing the overall generation time while maintaining manageable system complexity through modular architecture
Solution Approach 2:
The patent transitions from a single-threaded sequential process to a multi-threaded parallel process by introducing multiple dimensions of concurrency. Multiple helper processes operate simultaneously, each with multiple streaming threads writing to different storage backends, creating a multi-dimensional parallel processing architecture that dramatically accelerates core dump generation
2Reliability
If provisioned storage resources are used for core dump generation, then storage capacity is guaranteed, but infrastructure costs increase significantly
Solution Approach 1:
The patent creates a universal storage system that can dynamically utilize multiple types of storage backends (EBS volumes, instance storage, object storage) for core dump generation. This multi-functional approach allows the system to leverage different storage types based on their cost and performance characteristics, ensuring reliable storage capacity while optimizing infrastructure costs by not relying solely on expensive provisioned storage
Solution Approach 2:
The patent dynamically changes storage parameters by selecting different storage backends and configurations based on the specific core dump requirements. The system can adjust storage type, capacity, and performance characteristics on-demand, allowing cost-effective core dump generation by using cheaper storage options when appropriate while maintaining reliability guarantees when needed
3Productivity
If multiple storage backends are used in parallel, then core dump generation speed increases significantly, but system complexity increases
Solution Approach 1:
The patent introduces intermediary components (helper processes, streaming threads, buffering mechanisms) that manage the complexity of parallel multi-backend operations. These intermediaries abstract the complexity of coordinating multiple storage backends, handling data routing, buffering, and synchronization automatically, thereby enabling high-speed parallel core dump generation without proportionally increasing operational complexity
Solution Approach 2:
The patent creates multiple copies of the core dump data stream, directing different portions of the memory dump to different storage backends simultaneously. Each helper process and streaming thread creates a copy of the relevant memory segments and writes them to appropriate storage targets in parallel, achieving high generation speed while distributing the processing load to manage system complexity
Data Source
AI summary
A method for core dump for a terminated (e.g., “crashed”) application includes instantiating helper processes and performing a multi-threaded streaming of chunks of memory contents to respective helper processes. A set of backend storage resources of respective types is established to receive the core dump. Each helper process performs the following for the respective stream: (1) instantiating a set of writer threads for writing data to the respective different types of backend storage resources, (2) buffering the stream in a sequence-preserving manner, and (3) by each of the writer threads, independently reading buffered chunks and writing them to a respective backend storage resource with preservation of chunk identity to enable later reconstruction of complete memory contents. The time required to generate a core dump for a large memory-intensive application can be shortened, reducing application restart time and promoting application availability.


