RPC Management via Segmented Task Processing and Thread Pooling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing remote procedure call (RPC) systems face challenges in scaling inter-process communication due to resource monopolization and blocking issues, where a single long-running RPC can hinder the execution of other requests, leading to inefficient resource utilization and difficulty in managing concurrent requests.

Innovation Solution

Implementing a thread pool for parallel processing of RPC requests, segmenting requests into task segments to avoid thread locking, and using memory pools to reduce fragmentation, along with performance monitoring and prioritization to optimize CPU and memory usage, allowing for efficient scaling of RPC services.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If synchronous RPC handling is used, then simplicity of implementation is maintained, but scalability and resource utilization deteriorate due to thread blocking

Engineering Contradiction:
ImproveRPC handling mechanismVSAvoidRPC processing throughput
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The RPC request handling is segmented into multiple independent task stages: parsing stage, execution stage, and response stage. Each stage can be processed by different threads independently, allowing parallel processing without blocking the entire request handling chain. This segmentation enables the system to maintain simplicity while improving throughput by eliminating sequential dependencies.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

An intermediary task queue mechanism is introduced between the RPC request receiver and the thread pool. Requests are submitted to the queue and processed asynchronously by worker threads, decoupling the request submission from the processing execution. This intermediary layer allows the system to handle multiple requests concurrently without threads blocking each other, thereby improving productivity while maintaining manageable complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Quantity of substance

If a single thread handles RPC requests sequentially, then resource consumption is reduced, but resource monopolization occurs leading to starvation of other applications

Engineering Contradiction:
ImproveThread countVSAvoidFairness of resource access
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The system implements dynamic thread pool management where the number of active threads adjusts based on system load and available resources. Thread creation and termination are dynamically controlled to prevent resource monopolization while ensuring sufficient processing capacity. This dynamic approach allows fair resource distribution among multiple applications while maintaining efficient processing when demand is high.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

A feedback mechanism monitors system resource usage and RPC request queues to dynamically adjust thread pool behavior. When resource utilization exceeds thresholds or fairness metrics deteriorate, the system automatically adjusts thread creation rates or prioritizes requests from starved applications. This feedback loop ensures reliable fair resource access while maintaining high throughput when resources are abundant.

Inventive Principle:
Principle #23Feedback

3Reliability

If memory is allocated for each RPC request, then request isolation is ensured, but memory fragmentation increases reducing overall memory efficiency

Engineering Contradiction:
ImproveRequest isolationVSAvoidMemory fragmentation
Core Design Contradiction:
ReliabilityVSLoss of substance

Solution Approach 1:

The system merges memory allocation strategies by implementing a pooled memory allocation system where memory blocks are pre-allocated and reused across multiple RPC requests. Instead of allocating fresh memory for each request, the pooled memory is efficiently reused with proper isolation mechanisms, reducing fragmentation while maintaining request isolation through careful memory management and cleanup protocols.

Inventive Principle:
Principle #5Merging (Combining)

4Productivity

If RPC requests are processed in parallel using thread pool, then throughput is improved, but device complexity increases due to thread management overhead

Engineering Contradiction:
ImproveRPC processing throughputVSAvoidThread pool management
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The thread pool implementation uses universal, standardized interfaces for task submission, execution, and result retrieval that work across different RPC request types and processing scenarios. This multi-functional design allows the same thread pool infrastructure to handle diverse RPC workloads without requiring complex specialized management logic for each case, thereby improving throughput while controlling complexity through interface standardization.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS10015283B2Remote procedure call management
Publication Date: 2018.07.03 NETAPP INC
  • US10015283B2 patent drawing
  • US10015283B2 patent drawing
  • US10015283B2 patent drawing

AI summary

One or more techniques and/or systems are provided for remote procedure call (RPC) management. For example, a thread pool, comprising one or more threads, may be maintained for parallel processing of RPC requests. RPC requests may be segmented into sets of RPC request task segments that may be queued into an RPC work queue for assignment to threads within the thread pool for execution. Counters may be used to monitor performance metrics associated with RPC execution throughput, queue performance, and/or other information regarding the execution of RPC requests. In this way, RPC requests may be executed in segments for parallel execution (e.g., as opposed to blocked a thread, an RPC request may release the thread, for use by a second RPC request, while waiting for a remote procedure to respond with output results). RPC requests may be throttled to mitigate saturation of resources by a single application.