RPC Stubs Skip Marshalling When Endianness Matches

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing RPC tools incur overhead due to marshalling and un-marshalling processes, which are resource-intensive and inefficient, especially when dealing with heterogeneous systems requiring conversion between different endianness formats.

Innovation Solution

The system generates stubs for RPCs that do not perform marshalling or un-marshalling when the endianness of the servers is the same, instead indicating endianness through a byte in the message header, and uses a modified TLV format to encode data structures, allowing direct data transfer without conversion.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If marshalling and un-marshalling processes are performed for all RPC data transmission, then data compatibility between heterogeneous systems is ensured, but resource utilization increases and efficiency decreases

Engineering Contradiction:
Improvedata compatibilityVSAvoidRPC efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies local quality by making the marshalling process selective rather than universal. The system checks the endianness of the remote server and only performs marshalling when necessary (when endianness differs). This resolves the contradiction by ensuring data compatibility only where needed while avoiding unnecessary processing overhead when endianness matches, thus improving RPC efficiency without sacrificing reliability.

Inventive Principle:
Principle #3Local quality

2Adaptability or versatility

If endianness conversion is performed for all RPC calls, then compatibility between heterogeneous systems is maintained, but runtime increases due to conversion overhead

Engineering Contradiction:
Improvesystem compatibilityVSAvoidRPC runtime
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by checking the endianness of the remote server in advance (before data transmission) and caching this information. This allows the system to determine whether conversion is needed beforehand, avoiding unnecessary endianness conversion operations during actual RPC execution. The preliminary check maintains system compatibility while significantly reducing RPC runtime by eliminating redundant conversion overhead.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If TLV encoding scheme is used for all data structures, then API versioning support is enabled, but overhead of conversion between TLV and raw data structure increases

Engineering Contradiction:
ImproveAPI versioning supportVSAvoidconversion overhead
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent applies local quality by making TLV encoding selective rather than universal. The system uses TLV encoding only when API versioning is required or when data structure compatibility needs to be maintained across different versions. For straightforward data transmissions where versioning is not needed, the system uses direct raw data structure transmission. This resolves the contradiction by providing API versioning support where necessary while avoiding the conversion overhead associated with TLV encoding in unnecessary cases.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10552240B2Automatically generating efficient remote procedure call (RPC) code for heterogeneous systems
Publication Date: 2020.02.04 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10552240B2 patent drawing
  • US10552240B2 patent drawing
  • US10552240B2 patent drawing

AI summary

In one embodiment, a system includes at least one processor and logic integrated with and/or executable by the processor, the logic being configured to instantiate, using an interface definition language (IDL) on a first server, a remote procedure call (RPC) function to exchange information between the first server and a second server, generate at least one stub on the first server using the RPC, and generate at least one stub on the second server using the RPC, wherein the at least one stub generated on the second server does not perform any marshalling or un-marshaling of data when endianess of the two servers is the same. Other systems, methods, and computer program products for exchanging information between servers using RPCs are described in more embodiments.