Multi-threaded Logging via Atomic Slot Reservation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-threaded environments, existing logging mechanisms face challenges in preventing data overwrite and maintaining execution speed, as locks are computationally expensive and can lead to slowed thread processing, particularly in high-frequency trading applications.

Innovation Solution

The system employs a method where each thread reserves a data slot in a set of linked log files, using atomic operations and a next free data slot pointer to prevent race conditions and overwrite, allowing threads to write to log files without locks, thereby enhancing logging speed and efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If locks are used to prevent data overwrite in multi-threaded logging, then data integrity is improved, but execution speed deteriorates

Engineering Contradiction:
Improvedata integrityVSAvoidexecution speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The log file is segmented into multiple fixed-size data slots, with each slot independently trackable through status bits. This segmentation allows threads to operate on different slots simultaneously without requiring global locks, thus maintaining data integrity while improving execution speed. The next free data slot pointer divides the logging resource into discrete, manageable units that can be accessed concurrently.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Status bits are introduced as intermediary markers to indicate whether a data slot is free or occupied. Threads check and set these status bits atomically to determine slot availability without needing locks. This intermediary mechanism enables safe concurrent access to the log file while avoiding the performance penalty of lock-based synchronization.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If atomic operations are used to reserve data slots, then race condition prevention is improved, but computational overhead increases

Engineering Contradiction:
Improverace condition preventionVSAvoidcomputational overhead
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

Instead of using expensive atomic operations on the entire log file structure, the patent applies atomic operations only to small, localized status bits associated with individual data slots. This localized approach provides sufficient race condition prevention for slot reservation while minimizing computational overhead compared to atomically protecting the entire logging mechanism.

Inventive Principle:
Principle #3Local quality

3Measurement precision

If thread analysis of communication messages is used to create logs, then logging accuracy is improved, but processing time increases

Engineering Contradiction:
Improvelogging accuracyVSAvoidprocessing time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

Data slots are pre-defined with fixed structures and status bits are pre-initialized to indicate availability. Threads can directly write to pre-identified free slots without needing to analyze communication messages or dynamically determine log structure. This preliminary preparation eliminates post-execution message analysis while maintaining logging accuracy through the structured slot format.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9274798B2Multi-threaded logging
Publication Date: 2016.03.01 MORGAN STANLEY SERVICES GROUP INC
  • US9274798B2 patent drawing
  • US9274798B2 patent drawing
  • US9274798B2 patent drawing

AI summary

A data slot may be reserved for a first thread selected from a plurality of threads executed by a computer system. A memory of the computer system may comprise a plurality of log files and a next free data slot pointer. Each log file may comprise a plurality of data slots and each of the data slots may be of a common size. Reserving the data slot for the first thread may comprise attempting to perform a first atomic operation to write to a first data slot pointed to by a current value of the next free data slot pointer an indication that the first data slot is filled. If the first atomic operation is successful, the computer system may update the next free data slot pointer to point to a second data slot positioned sequentially after the first data slot. If the first atomic operation is unsuccessful, the computer system may analyze the second data slot.