Transport Layer Data Buffering for System Call Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Byte-stream oriented protocols like TCP face inefficiencies in determining when to wake up a client waiting for data, leading to unnecessary system calls and resource consumption, especially in resource-constrained devices, due to static assumptions about dynamic network traffic.

Innovation Solution

A system that buffers data at the transport layer using a new socket option, SO_DATAWAIT, which specifies conditions such as byte count or timeout for sending data to the application, allowing efficient processing of system calls by waiting for complete data before waking up the application.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If TCP uses heuristics like PSH flag and partial segment reception to determine when to wake up a client, then the number of unnecessary wakeups and read system calls is reduced, but the wakeup timing is either too early or too late, leading to inefficient data processing

Engineering Contradiction:
Improvedata processing efficiencyVSAvoidwakeup timing accuracy
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent changes the parameter from static heuristic flags to a dynamic timeout value that can be configured by the application. This allows the system to adapt the wakeup timing parameter to match the actual data arrival patterns and application requirements, resolving the contradiction between reducing wakeups and maintaining accurate timing.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent introduces a dynamic timeout mechanism that can be adjusted based on network conditions and application needs, replacing the static heuristic approach. This dynamic parameter allows the system to optimize wakeup timing in real-time, preventing both premature and delayed wakeups.

Inventive Principle:
Principle #15Dynamics

2Device complexity

If static variables are used to represent assumptions about network traffic, then the system is simplified, but it cannot adapt to dynamic changes in network conditions, resulting in sub-optimal performance

Engineering Contradiction:
Improvebuffering system complexityVSAvoidnetwork traffic adaptation
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The patent replaces static variables with a dynamic timeout parameter that can be configured and adjusted. This dynamic approach allows the buffering system to adapt to changing network conditions while maintaining relatively simple implementation through a single configurable parameter per connection.

Inventive Principle:
Principle #15Dynamics

3Speed

If the application is woken up early to check for data, then data can be processed sooner, but unnecessary system calls are generated, consuming valuable resources on resource-constrained devices

Engineering Contradiction:
Improvedata availability speedVSAvoidsystem call processing energy
Core Design Contradiction:
SpeedVSUse of energy by moving object

Solution Approach 1:

The patent uses a configurable timeout parameter to control when the application is woken up. By setting the timeout appropriately, the system can balance between making data available quickly and avoiding unnecessary wakeups that consume energy on resource-constrained devices.

Inventive Principle:
Principle #35Parameter changes

4Reliability

If the application waits for complete data before processing, then data completeness is ensured, but the application remains blocked longer, reducing responsiveness

Engineering Contradiction:
Improvedata completenessVSAvoidapplication blocking time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent allows the application to specify in advance how much data it needs to receive before being woken up. This preliminary specification enables the system to wake up the application at the optimal moment - not too early with incomplete data, not too late with unnecessary blocking - thereby balancing data completeness with responsiveness.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7447789B2Method and apparatus for buffering data at a transport layer on a client
Publication Date: 2008.11.04 ORACLE AMERICAN INC
  • US7447789B2 patent drawing
  • US7447789B2 patent drawing
  • US7447789B2 patent drawing

AI summary

One embodiment of the present invention provides a system that buffers data inside of a byte-stream protocol at a transport layer on a client, which is receiving the data from an external source. The system operates by receiving a configuration parameter at the transport layer from an application executing on the client, wherein the configuration parameter specifies a condition upon which data buffered at the transport layer is to be sent to the application. The system then buffers data destined for the application at the transport layer on the client, and sends the buffered data to the application when the condition specified by the configuration parameter is met. Buffering data at the transport layer on the client facilitates more efficient processing of system calls.