IP Library Granted Patent US 12,189,652
Granted Patent B2
US 12,189,652 · App. 18/174,535 · Granted Jan 7, 2025

Language interoperable runtime adaptable data collections

Inventors: Iraklis Psaroudakis (Zurich, CH); Stefan Kaestle (Zurich, CH); Daniel J. Goodman (Bagillt, GB); Jean-Pierre Lozi (Zurich, CH); Matthias Grimmer (Aurolzmünster, AT); Timothy L. Harris (Cambridge, GB)
Assignee: Oracle International Corporation
G06F16/27G06F9/45516G06F9/45558G06F9/54G06F2009/4557G06F2009/45583G06F2009/45595
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 12,189,652
App. No.
18/174,535
Granted
Jan 7, 2025
Kind
B2
Abstract

Adaptive data collections may include various type of data arrays, sets, bags, maps, and other data structures. A simple interface for each adaptive collection may provide access via a unified API to adaptive implementations of the collection. A single adaptive data collection may include multiple, different adaptive implementations. A system configured to implement adaptive data collections may include the ability to adaptively select between various implementations, either manually or automatically, and to map a given workload to differing hardware configurations. Additionally, hardware resource needs of different configurations may be predicted from a small number of workload measurements. Adaptive data collections may provide language interoperability, such as by leveraging runtime compilation to build adaptive data collections and to compile and optimize implementation code and user code together. Adaptive data collections may also provide language-independent such that implementation code may be written once and subsequently used from multiple programming languages.

Claims (67)

1. A computer-implemented method, comprising:

configuring a data collection according to a first configuration to provide a first data functionality of the data collection, the data collection comprising data and one or more methods of a language-independent application programming interface (API), wherein the first data functionality comprises access to at least a portion of the one or more methods of the language-independent API, and wherein the first configuration is selected based at least in part on one or more predicted resource requirements of a workload;

collecting, subsequent to the configuring, performance information during execution of the workload within a platform-independent virtual environment, the execution comprising executing the one or more methods of the data collection to access the data of the data collection; and

reconfiguring the data collection according to a second configuration to provide a second data functionality of the data collection, wherein the second data functionality comprises access to at least another portion of the one or more methods of the language-independent API different from the portion of the one or more methods of the language-independent API of the first data functionality, and wherein the second configuration is selected based at least in part on the collected performance information.

2. The computer-implemented method of claim 1 , wherein the one or more methods of the language-independent API are developed using a first programming language, and wherein the execution of the workload is performed by an application developed using a second programming language different from the first programming language.

3. The computer-implemented method of claim 1 , wherein the method is implemented by a computer including multiple sockets each including multiple processor cores.

4. The computer-implemented method of claim 1 , wherein the first data functionality and the second data functionality individually comprise one or more of:

an operating system default NUMA-aware data placement for the data of the data collection;

a single socket NUMA-aware data placement for the data of the data collection;

an interleaved NUMA-aware data placement for the data of the data collection;

a replicated NUMA-aware data placement for the data of the data collection;

a compression scheme for the data of the data collection;

an indexing scheme for data elements of the data collection; or

a data synchronization scheme for the data collection.

5. The computer-implemented method of claim 1 , further comprising determining the one or more predicted resource requirements based at least in part on one or more of:

a specification of a computer implementing the method, comprising at least one of:

a size of a memory, a maximum bandwidth between hardware components of the computer, or a maximum computing capacity available on each of the processor cores of the computer;

a specification of performance characteristics of the data collection based at least in part on one or more performance counters of the computer; or

information collected during one or more profiling runs of the workload.

6. The computer-implemented method of claim 1 , wherein the data collection is configured to organize the data of the data collection as one of a bag, a set, an array, or a map.

7. The computer-implemented method of claim 1 , further comprising:

selecting the first configuration, the selecting comprising:

assigning the first configuration from among a first candidate configuration and a second candidate configuration based at least in part on, the one or more predicted resource requirements of the workload, the first candidate configuration specifying an uncompressed data functionality and the second candidate configuration specifying a compressed data functionality, wherein the uncompressed data functionality specifies an uncompressed data layout for the data of the data collection, and wherein the compressed data functionality specifies a compressed data layout for the data of the data collection.

8. A system, comprising:

a computing device comprising one or more processors and a memory coupled to the one or more processors, the memory comprising program instructions executable by the one or more processors to implement a platform-independent virtual environment configured to:

configure a data collection according to a first configuration to provide a first data functionality of the data collection, the data collection comprising data and one or more methods of a language-independent application programming interface (API), wherein the first data functionality comprises access to a portion of the one or more methods of the language-independent API, and wherein the first configuration is selected based at least in part on one or more predicted resource requirements of a workload;

collect, subsequent to the configuring, performance information during execution of the workload, the execution comprising executing the one or more methods of the data collection to access the data of the data collection; and

reconfigure the data collection according to a second configuration to provide a second data functionality of the data collection, wherein the second data functionality comprises access to another portion of the one or more methods of the language-independent API different from the portion of the one or more methods of the language-independent API of the first data functionality, and wherein the second configuration is selected based at least in part on the collected performance information.

9. The system of claim 8 , wherein the one or more methods of the language-independent API are developed using a first programming language, and wherein the execution of the workload is performed by an application developed using a second programming language different from the first programming language.

10. The system of claim 8 , wherein the computing device comprises multiple sockets each including multiple processor cores.

11. The system of claim 8 , wherein the first data functionality and the second data functionality individually comprise one or more of:

an operating system default NUMA-aware data placement for the data of the data collection;

a single socket NUMA-aware data placement for the data of the data collection;

an interleaved NUMA-aware data placement for the data of the data collection;

a replicated NUMA-aware data placement for the data of the data collection;

a compression scheme for the data of the data collection;

an indexing scheme for data elements of the data collection; or

a data synchronization scheme for the data collection.

12. The system of claim 8 , the platform-independent virtual environment further configured to determine the one or more predicted resource requirements based at least in part on one or more of:

a specification of a computer implementing the method, comprising at least one of:

a size of a memory, a maximum bandwidth between hardware components of the computer, or a maximum computing capacity available on each of the processor cores of the computer;

a specification of performance characteristics of the data collection based at least in part on one or more performance counters of the computer; or

information collected during one or more profiling runs of the workload.

13. The system of claim 8 , wherein the data collection is configured to organize the data of the data collection as one of a bag, a set, an array, or a map.

14. The system of claim 8 , the platform-independent virtual environment further configured to:

select the first configuration from among a first candidate configuration and a second candidate configuration based at least in part on, the one or more predicted resource requirements of the workload, the first candidate configuration specifying an uncompressed data functionality and the second candidate configuration specifying a compressed data functionality, wherein the uncompressed data functionality specifies an uncompressed data layout for the data of the data collection, and wherein the compressed data functionality specifies a compressed data layout for the data of the data collection.

15. One or more non-transitory computer readable storage media storing program instructions that, when executed on or across one or more processors, cause the one or more processors to implement a platform-independent virtual environment to perform:

configuring a data collection according to a first configuration to provide a first data functionality of the data collection, the data collection comprising data and one or more methods of a language-independent application programming interface (API), wherein the first data functionality comprises access to a portion of the one or more methods of the language-independent API, and wherein the first configuration is selected based at least in part on one or more predicted resource requirements of a workload;

collecting, subsequent to the configuring, performance information during execution of the workload, the execution comprising executing the one or more methods of the data collection to access the data of the data collection; and

reconfiguring the data collection according to a second configuration to provide a second data functionality of the data collection, wherein the second data functionality comprises access to another portion of the one or more methods of the language-independent API different from the portion of the one or more methods of the language-independent API of the first data functionality, wherein the second configuration is selected based at least in part on the collected performance information.

16. The one or more non-transitory computer readable storage media as recited in claim 15 , wherein the one or more methods of the language-independent API are developed using a first programming language, and wherein the execution of the workload is performed by an application developed using a second programming language different from the first programming language.

17. The one or more non-transitory computer readable storage media as recited in claim 15 , wherein the method is implemented by a computer including multiple sockets each including multiple processor cores.

18. The one or more non-transitory computer readable storage media as recited in claim 15 , wherein the first data functionality and the second data functionality individually comprise one or more of:

an operating system default NUMA-aware data placement for the data of the data collection;

a single socket NUMA-aware data placement for the data of the data collection;

an interleaved NUMA-aware data placement for the data of the data collection;

a replicated NUMA-aware data placement for the data of the data collection;

a compression scheme for the data of the data collection;

an indexing scheme for data elements of the data collection; or

a data synchronization scheme for the data collection.

19. The one or more non-transitory computer readable storage media as recited in claim 15 , the platform-independent virtual environment further performing determining the one or more predicted resource requirements based at least in part on one or more of:

a specification of a computer implementing the method, comprising at least one of:

a size of a memory, a maximum bandwidth between hardware components of the computer, and a maximum computing capacity available on each of the processor cores of the computer;

a specification of performance characteristics of the data collection based at least in part on one or more performance counters of the computer; or

information collected during one or more profiling runs of the workload.

20. The one or more non-transitory computer readable storage media as recited in claim 15 , the platform-independent virtual environment further performing:

selecting the first configuration from among a first candidate configuration and a second candidate configuration based at least in part on, the one or more predicted resource requirements of the workload, the first candidate configuration specifying an uncompressed data functionality and the second candidate configuration specifying a compressed data functionality, wherein the uncompressed data functionality specifies an uncompressed data layout for the data of the data collection, and wherein the compressed data functionality specifies a compressed data layout for the data of the data collection.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2023
From: PSAROUDAKIS, IRAKLIS; KAESTLE, STEFAN; GOODMAN, DANIEL J.; LOZI, JEAN-PIERRE; GRIMMER, MATTHIAS; HARRIS, TIMOTHY L.
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 062807/0606 →
Continuity (3)
Continuation 17067479 · Oct 9, 2020
Continuation 16165593 · Oct 19, 2018
Related Publication 20230214407A1 · Jul 6, 2023
References Cited (89)
US 5546584A · Lundin et al. · 1996 [cited by applicant]
US 6314429B1 · Simser · 2001 [cited by examiner]
US 6792392B1 · Knight · 2004 [cited by examiner]
US 7010796B1 · Strom et al. · 2006 [cited by applicant]
US 7120678B2 · Greuel · 2006 [cited by examiner]
US 7801880B2 · Kapadia · 2010 [cited by examiner]
US 8515014B2 · Blackburn · 2013 [cited by examiner]
US 8683318B1 · Dasari · 2014 [cited by examiner]
US 8793371B1 · Nanekar et al. · 2014 [cited by applicant]
US 9329899B2 · Ailamaki et al. · 2016 [cited by applicant]
US 9983903B2 · Ailamaki et al. · 2018 [cited by applicant]
US 10042673B1 · Espy · 2018 [cited by examiner]
US 10067955B1 · Wu · 2018 [cited by examiner]
US 10803087B2 · Psaroudakis et al. · 2020 [cited by applicant]
US 11163481B2 · Iyengar · 2021 [cited by examiner]
US 11593398B2 · Psaroudakis et al. · 2023 [cited by applicant]
US 20010011371A1 · Tang · 2001 [cited by applicant]
US 20030023773A1 · Lee et al. · 2003 [cited by applicant]
US 20040143810A1 · Ahmed · 2004 [cited by examiner]
US 20050021998A1 · Fiedler · 2005 [cited by examiner]
US 20050204368A1 · Ambekar et al. · 2005 [cited by applicant]
US 20060184338A1 · Lightstone · 2006 [cited by examiner]
US 20070169017A1 · Coward · 2007 [cited by applicant]
US 20080005728A1 · Morris · 2008 [cited by applicant]
US 20080281939A1 · Frazier · 2008 [cited by examiner]
US 20080307392A1 · Racca · 2008 [cited by examiner]
US 20100088117A1 · Belden · 2010 [cited by examiner]
US 20110231835A1 · Smith et al. · 2011 [cited by applicant]
US 20130074058A1 · Gounares et al. · 2013 [cited by applicant]
US 20130081005A1 · Gounares et al. · 2013 [cited by applicant]
US 20140304719A1 · Pope · 2014 [cited by examiner]
US 20150324191A1 · Agovic · 2015 [cited by examiner]
US 20160139946A1 · Gardner · 2016 [cited by examiner]
US 20170017674A1 · Scheuer et al. · 2017 [cited by applicant]
US 20170046137A1 · Grimmer et al. · 2017 [cited by applicant]
US 20180027060A1 · Metsch et al. · 2018 [cited by applicant]
US 20180246755A1 · Ailamaki et al. · 2018 [cited by applicant]
US 20180349433A1 · Baines · 2018 [cited by examiner]
US 20190087213A1 · Matters et al. · 2019 [cited by applicant]
US 20190342391A1 · Jain · 2019 [cited by examiner]
US 20200089548A1 · Kawahito · 2020 [cited by applicant]
US 20200125668A1 · Psaroudakis et al. · 2020 [cited by applicant]
US 20200412691A1 · Shribman et al. · 2020 [cited by applicant]
US 20210200879A1 · Gerzon et al. · 2021 [cited by applicant]
CN 105793818A · 2016 [cited by examiner]
CN 107665216A · 2018 [cited by examiner]
WO WO2017145899A1 · 2017 [cited by examiner]
Gilles Duboscq et al, “An Intermediate Representation for Speculative Optimizations in a Dynamic Compiler”, Oct. 28, 2013, pp. 1-10. [cited by applicant]
Daniel Goodman et al, “Pandia: Comprehensive contention-sensitive thread placement”, 2017, pp. 1-16. [cited by applicant]
Jason Ansel et al, “PetaBricks: A Language and Compiler for Algorithmic Choice”, 2009, pp. 1-12. [cited by applicant]
Mohammad Dashti et al, “Traffic Management: A Holistic Approach to Memory Placement on NUMA Systems”, 2013, pp. 1-13. [cited by applicant]
Irina Calciu et al, “Black-box Concurrent Data Structures for NUMA Architectures”, 2017, pp. 1-15. [cited by applicant]
Tim Harris et al, “Callisto-RTS: Fine-Grain Parallel Loops”, 2015, pp. 1-13. [cited by applicant]
Stefan Kaestle et al, “Shoal: Smart allocation and replication of memory for parallel programs”, 2015, pp. 1-15. [cited by applicant]
Christoph A. Schaefer et al, “Atune: IL: An Instrumentation Language for Auto-Tuning Parallel Application”, 2009, pp. 1-11. [cited by applicant]
John D. McCalpin, “Memory Bandwidth and Machine Balance in Current High Performance Computers”, Sep. 19, 1995, pp. 1-8. [cited by applicant]
David m. Beazley et al, “SWIG: An Easy to use tool for Integrating Scripting Languages with C and C++”, 1996, pp. 1-18. [cited by applicant]
Sergey Blagodurov et al, “A Case for NUMA-aware Contention Management on Multicore Systems”, pp. 1-15. [cited by applicant]
Jonathan Corbet, “AutoNUMA: the other approach to NUMA scheduling”, 2012, pp. 1-5. [cited by applicant]
Orestis Polychroniou et al, “Efficient Lightweight Compression Alongside Fast Scans”, 2015, pp. 1-6. [cited by applicant]
Iraklis Psaroudakis et al, “Dynamic Fine-Grained Scheduling for Energy-Efficient Main-Memory Queries”, 2014, pp. 1-7. [cited by applicant]
Matthias Grimmer et al “High-Performance Cross-Language Interoperability in a Multi-Lanuage Runtime”, 2015, pp. 1-13. [cited by applicant]
Jonathan Eastep et al, “Smartlocks: Lock Acquisition Scheduling for Self-Aware Synchronization” 2010, pp. 1-11. [cited by applicant]
Surajit Chaudhuri et al “Self-Tuning Database Systems: A Decade of Progress”, 2007, pp. 1-12. [cited by applicant]
Iraklis Psaroudakis et al, “Adaptive NUMA-aware data placement and task scheduling for analytical workloads in main-memory column-stores”, 2016, pp. 1-12. [cited by applicant]
Levon Stepanian et al, “Inlining Java Native Calls At Runtime”, 2005, pp. 1-11. [cited by applicant]
Paolo Boldi et al, “The WebGraph Framework I: Compression Techniques”, 2004, pp. 1-8. [cited by applicant]
Iraklis Psaroudakis et al, “Sharing Data and Work Across Concurrent Analytical Queries”, 2013, pp. 1-12. [cited by applicant]
Iraklis Psaroudakis, “Scaling Up Concurrent Analytical Workloads on Multi-Core Servers”, pp. 1-179. [cited by applicant]
Floian Wolf et al, “Extending Database Task Schedulers for Multi-threaded Application Code”, pp. 1-12. [cited by applicant]
John Reppy et al, “Application-Specific Foreign-interface Generation”, 2006, pp. 1-10. [cited by applicant]
Iraklis Psaroudakis et al, “Task Scheduling for Highly Concurrent Analytical and Transactional Main-Memory Workloads”, pp. 1-11. [cited by applicant]
Anastasia Ailamaki et al, “How to Stop Under-Utilization and Love Multicores”, pp. 1-4. [cited by applicant]
Baptiste Lepers et al, “Thread and Memory Placement on NUMA Systems”, 2015, pp. 1-7. [cited by applicant]
Steffen Maass et al, “Mosaic: Processing a Trillion-Edge Graph on a Single Machine”, 2017, pp. 1-17. [cited by applicant]
Iraklis Psaroudakis et al, “Reactive and Proactive Sharing Across Concurrent Analytical Queries”, 2014, pp. 1-4. [cited by applicant]
Martin Sevenich et al “Using Domain-Specific Languages for Analytic Graph Databases”, 2016, pp. 1-12. [cited by applicant]
Iraklis Psaroudakis et al “Scaling Up Concurrent Main-Memory col. Store Scans: Towards Adaptive NUMA-aware Data and Task Placement”, 2015, pp. 1-12. [cited by applicant]
Markus Pilman et al, “Fast Scans on Key-Value Stores”, 2017, pp. 1-12. [cited by applicant]
Gilles Duboscq et al, “Speculation Without Regret: Reducing Deoptimization Meta-Data in the Graal Compiler”, pp. 1-7. [cited by applicant]
Matthias Grimmer et al, “Dynamically Composing Languages in a Modular Way: Supporting C Extensions for Dynamic Languages”, 2015, pp. 1-13. [cited by applicant]
Joshua San Miguel et al “Doppelganger: A Cache for Approximate Computing”, 2015, pp. 1-12. [cited by applicant]
Iraklis Psaroudakis et al “Scaling up Mixed Workloads: a Battle of Data Freshness, Flexibility, and Scheduling”, pp. 1-16. [cited by applicant]
Thomas Wurthinger et al, “Self-Optimizing AST Interpreters”, 2012, pp. 1-10. [cited by applicant]
Orestis PolyChronious et al, “Rethinking SIMD Vectorization for In-Memory Databases”, 2015, pp. 1-16. [cited by applicant]
Matthew Parkinson et al, “Project Snowflake: Non-Blocking Safe Manual Memory Management in .NET”, Jul. 26, 2017, pp. 1-40. [cited by applicant]
Lukas Stadler et al, “Partial Escape Analysis and Scalar Replacement for Java”, 2014, pp. 1-10. [cited by applicant]
Manuel Rigger et al, “Bringing Low-Level Languages to the JVM: Efficient Execution of Llvm Ir on Truffle”, 2016, pp. 1-10. [cited by applicant]
Anurag Khandelwal et al “ZipG: A Memory-efficient Graph Store for Interactive Queries”, 2018, pp. 1-16. [cited by applicant]