IP Library Granted Patent US 11,209,997
Granted Patent B2
US 11,209,997 · App. 15/821,390 · Granted Dec 28, 2021

Method and system for low latency data management

Inventor: Scott Lee Linke (Fort Collins, CO)
Assignee: BlackBerry Limited
G06F3/0631G06F3/0604G06F3/0611G06F3/0656G06F3/0665G06F3/0673G06F3/0683H04L41/5054H04L47/6245
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,209,997
App. No.
15/821,390
Granted
Dec 28, 2021
Kind
B2
Abstract

A method at a computing device for data management between a publisher and at least one subscriber, the method including receiving, at a system element, memory requirements from the publisher; creating a memory allocation of a pool of data objects for the publisher based on the received memory requirements; receiving, at the system element, consumption criteria from each of the at least one subscriber; and adjusting the memory allocation of the pool of data objects based on the consumption criteria received from the at least one subscriber.

Claims (49)

1. A method at a computing device for data management between a publisher and at least one subscriber, the method comprising:

receiving, at a system element, memory requirements from the publisher, the memory requirements including a publication rate and a data size for a publication;

allocating a block of physical memory for the publisher based on the received memory requirements, wherein a size of the block of physical memory is based on the publication rate and the data size for the publication;

receiving, at the system element, consumption criteria from each of the at least one subscriber, wherein the consumption criteria include a maximum number of concurrent data objects a subscriber may hold as active;

adjusting the block of physical memory based on the consumption criteria received from the at least one subscriber; and

mapping the block of physical memory to a virtual memory of the publisher and to a virtual memory of the at least one subscriber;

wherein the at least one subscriber has read-only access to the block of memory.

2. The method of claim 1 , wherein the creating and adjusting the block of physical memory comprise a process selected from production calculations; consumption calculations; and retention calculations.

3. The method of claim 1 , wherein the allocating the block of physical memory comprises creating an extra data object for underflow protection, wherein use of the extra data object causes error logging to occur.

4. The method of claim 1 , further comprising:

receiving, at the system element, a request from a publisher for a data object;

allocating the data object to the publisher;

receiving, at the system element, a publication notification from the publisher;

notifying the at least one subscriber of the publication;

receiving a release from each of the at least one subscriber; and

returning the data object to a pool for future allocation.

5. The method of claim 4 , wherein the receiving the publication notification causes the data object to be read only by the publisher.

6. The method of claim 4 , wherein the notifying is a non-preemptable operating system function performed immediately after the receipt of the publication notification.

7. The method of claim 1 , wherein the system element uses a dynamic link data library to map a single physical memory space to virtual memory spaces for the publisher and the at least one subscriber.

8. A computing device configured for data management between a publisher and at least one subscriber, the computing device comprising:

a processor;

a system element for data management between the publisher and the at least one sub scriber;

memory;

wherein the computing device is configured to:

receive, at the system element, memory requirements from the publisher, the memory requirements including a publication rate and a data size for a publication;

allocate a block of physical memory from the memory for the publisher based on the received memory requirements, wherein a size of the block of physical memory is based on the publication rate and the data size for the publication;

receive, at the system element, consumption criteria from each of the at least one subscriber, wherein the consumption criteria include a maximum number of concurrent data objects a subscriber may hold as active;

adjust the block of physical memory based on the consumption criteria received from the at least one subscriber; and

map the block of physical memory to a virtual memory of the publisher and to a virtual memory of the at least one subscriber;

wherein the at least one subscriber has read-only access to the block of memory.

9. The computing device of claim 8 , wherein the computing device is configured to allocate and adjust the block of physical memory by a process selected from simple production calculations; consumption calculations; and retention calculations.

10. The computing device of claim 8 , wherein the computing device is configured to allocate the block of physical memory by creating an extra data object for underflow protection, wherein use of the extra data object causes error logging to occur.

11. The computing device of claim 8 , wherein the computing device is further configured to:

receive, at the system element, a request from a publisher for a data object;

allocate the data object to the publisher;

receive, at the system element, a publication notification from the publisher;

notify the at least one subscriber of the publication;

receive a release from each of the at least one subscriber; and

return the data object to a pool in the memory for future allocation.

12. The computing device of claim 11 , wherein the computing device, on receiving the publication notification, is configured to cause the data object to be read only by the publisher.

13. The computing device of claim 11 , wherein the computing device is configured to notify using a non-preemptable operating system function performed immediately after the receipt of the publication notification.

14. The computing device of claim 8 , wherein the system element uses a dynamic link data library to map a single physical memory space to virtual memory spaces for the publisher and the at least one subscriber.

15. A non-transitory computer readable medium for storing instruction code, which when executed by a processor of a computing device configured for data management between a publisher and at least one subscriber, cause the computing device to:

receive, at a system element, memory requirements from the publisher, the memory requirements including a publication rate and a data size for a publication;

allocate a block of physical memory for the publisher based on the received memory requirements, wherein a size of the block of physical memory is based on the publication rate and the data size for the publication;

receive, at the system element, consumption criteria from each of the at least one subscriber, wherein the consumption criteria include a maximum number of concurrent data objects a subscriber may hold as active;

adjust the block of physical memory based on the consumption criteria received from the at least one subscriber; and

map the block of physical memory to a virtual memory of the publisher and to a virtual memory of the at least one subscriber;

wherein the at least one subscriber has read-only access to the block of data objects.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2020
From: 2236008 ONTARIO INC.
To: BLACKBERRY LIMITED
Reel/Frame 053313/0315 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2018
From: LINKE, SCOTT LEE
To: QNX SOFTWARE SYSTEMS, INC.
Reel/Frame 044729/0548 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2018
From: QNX SOFTWARE SYSTEMS, INC.
To: QNX SOFTWARE SYSTEMS LIMITED
Reel/Frame 044729/0693 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2018
From: QNX SOFTWARE SYSTEMS LIMITED
To: 2236008 ONTARIO INC.
Reel/Frame 044729/0820 →
Continuity (1)
Related Publication 20190155529A1 · May 23, 2019