# US 12,111,683 B2 · Time calibration for a multi-socket computing system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,111,683 B2
- Document ID: US12111683B2
- Status: Granted
- Kind: B2
- Application number: 18/362,483
- Filed: 2023-07-31
- Published: 2023-11-23
- Granted: 2024-10-08
- Earliest claimed: 2020-04-01
- Assignees: Sap SE
- Applicants: Sap SE
- Inventors: Ivan Schreter; Sergey Yurenev
- Web page: https://patentgrep.com/patent/US12111683B2

## CPC

- G06F 1/12: Synchronisation of different clock signals {provided by a plurality of clock generators}
- G06F 1/08: Clock generators with changeable or programmable clock frequency
- G06F 1/14: Time supervision arrangements, e.g. real time clock
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A thread executing a task at a node in a multi-socket computing system may access a first data structure to obtain a first calibration dataset for the node. The first thread may generate a timestamp based on the first calibration dataset and a first quantity of time measured by a clock at the first node. The real-time duration of the task may be determined based on the timestamp. The first thread may recalibrate the first clock by at least generating, based on the first quantity of time measured by the clock and a second quantity of time measured by a wall clock of an operating system of the multi-socket computing system, a second calibration dataset. The first thread may update the first data structure to include the second calibration dataset while a second thread accesses a second data structure to obtain calibration data.

## Claims

### Claim 1

A system, comprising:
at least one data processor; and
at least one memory storing instructions, which when executed by the at least one data processor, result in operations comprising:
generating, by a first thread executing a first task at a first node in a multi-socket computing system, a first timestamp based at least on a first calibration dataset for the first node and a first quantity of time measured by a first clock at the first node; and
recalibrating, by the first thread, the first clock at the first node, the recalibrating includes generating, based at least on a second quantity of time measured by a second clock of an operating system of the multi-socket computing system, a second calibration dataset describing a relationship between the second quantity of time and the first quantity of time.

### Claim 2 (depends on 1)

The system of claim 1, wherein the operations further comprise:
accessing, by the first thread, a first data structure to obtain the first calibration dataset for the first node; and
updating, by the first thread, the first data structure to include the second calibration dataset for the first node.

### Claim 3 (depends on 1)

The system of claim 1, wherein the first timestamp is generated at a start of the first task, and wherein a real time duration of the first task is determined based at least on the first timestamp and a second timestamp generated at an end of the first task.

### Claim 4 (depends on 1)

The system of claim 1, wherein the first quantity of time is in a first unit of time comprising a quantity of central processing unit (CPU) ticks, and wherein the second quantity of time is in a second unit of time comprising a quantity of nanoseconds.

### Claim 5 (depends on 1)

The system of claim 1, wherein the first thread performs the recalibration at a time determined as part of a previous recalibration of the first clock, and wherein a calibration interval between successive recalibrations increases until a threshold value.

### Claim 6 (depends on 1)

The system of claim 1, further comprising:
generating a second timestamp subsequent to generating the first timestamp;
determining whether the second timestamp is less than the first timestamp; and
returning wherein the first timestamp instead of the second timestamp in response to the second timestamp being less than the first timestamp.

### Claim 7 (depends on 1)

The system of claim 1, wherein the multi-socket computing system comprises a plurality of non-uniform memory access (NUMA) nodes.

### Claim 8 (depends on 2)

The system of claim 2, wherein the first thread obtains a lock prior to updating the first data structure, and wherein the lock prevents a second thread from simultaneously updating the first data structure.

### Claim 9 (depends on 8)

The system of claim 8, further comprising:
accessing, by the second thread executing a second task at the first node, a second data structure to obtain the first calibration dataset for the first node; and
generating, by the second thread, a second timestamp generated based at least on the first calibration dataset and a third quantity of time measured by the first clock at the first node.

### Claim 10 (depends on 9)

The system of claim 9, further comprising:
recalibrating, by the second thread, the first clock at the first node by at least determining, a third calibration dataset; and
updating a second data structure instead of the first data structure to include the third calibration dataset for the first node.

### Claim 11 (depends on 9)

The system of claim 9, wherein the second thread accesses the second data structure while the first thread is updating the first data structure to include the second calibration dataset.

### Claim 12

A computer-implemented method, comprising:
generating, by a first thread executing a first task at a first node in a multi-socket computing system, a first timestamp based at least on a first calibration dataset for the first node and a first quantity of time measured by a first clock at the first node; and
recalibrating, by the first thread, the first clock at the first node, the recalibrating includes generating, based at least on a second quantity of time measured by a second clock of an operating system of the multi-socket computing system, a second calibration dataset describing a relationship between the second quantity of time and the first quantity of time.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
accessing, by the first thread, a first data structure to obtain the first calibration dataset for the first node; and
updating, by the first thread, the first data structure to include the second calibration dataset for the first node.

### Claim 14 (depends on 12)

The method of claim 12, wherein the first timestamp is generated at a start of the first task, and wherein a real time duration of the first task is determined based at least on the first timestamp and a second timestamp generated at an end of the first task.

### Claim 15 (depends on 12)

The method of claim 12, wherein the first quantity of time is in a first unit of time comprising a quantity of central processing unit (CPU) ticks, and wherein the second quantity of time is in a second unit of time comprising a quantity of nanoseconds.

### Claim 16 (depends on 12)

The method of claim 12, wherein the first thread performs the recalibration at a time determined as part of a previous recalibration of the first clock, and wherein a calibration interval between successive recalibrations increases until a threshold value.

### Claim 17 (depends on 12)

The method of claim 12, further comprising:
generating a second timestamp subsequent to generating the first timestamp;
determining whether the second timestamp is less than the first timestamp; and
returning wherein the first timestamp instead of the second timestamp in response to the second timestamp being less than the first timestamp.

### Claim 18 (depends on 13)

The method of claim 13, wherein the first thread obtains a lock prior to updating the first data structure, and wherein the lock prevents a second thread from simultaneously updating the first data structure.

### Claim 19 (depends on 18)

The method of claim 18, further comprising:
accessing, by the second thread executing a second task at the first node, a second data structure to obtain the first calibration dataset for the first node, the second thread accessing the second data structure while the first thread is updating the first data structure to include the second calibration dataset;
generating, by the second thread, a second timestamp based at least on the first calibration dataset and a third quantity of time measured by the first clock at the first node;
recalibrating, by the second thread, the first clock at the first node by at least determining, a third calibration dataset; and
updating a second data structure instead of the first data structure to include the third calibration dataset for the first node.

### Claim 20

A non-transitory computer readable medium storing instructions, which when executed by at least one data processor, result in operations comprising:
generating, by a first thread executing a first task at a first node in a multi-socket computing system, a first timestamp based at least on a first calibration dataset for the first node and a first quantity of time measured by a first clock at the first node; and
recalibrating, by the first thread, the first clock at the first node, the recalibrating includes generating, based at least on a second quantity of time measured by a second clock of an operating system of the multi-socket computing system, a second calibration dataset describing a relationship between the second quantity of time and the first quantity of time.
