IP Library Granted Patent US 11,409,768
Granted Patent B2
US 11,409,768 · App. 17/524,439 · Granted Aug 9, 2022

Resource management systems and methods

Inventors: Benoit Dageville (Foster City, CA); Thierry Cruanes (San Mateo, CA); Marcin Zukowski (San Mateo, CA)
Assignee: Snowflake Inc.
G06F16/27A61F5/566G06F9/4881G06F9/5016G06F9/5044G06F9/5083G06F9/5088G06F16/148G06F16/1827G06F16/211G06F16/221G06F16/2365G06F16/2456G06F16/2471G06F16/24532G06F16/24545G06F16/24552G06F16/951G06F16/9535H04L67/1095H04L67/1097H04L67/568
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,409,768
App. No.
17/524,439
Granted
Aug 9, 2022
Kind
B2
Abstract

Example resource management systems and methods are described. In one implementation, a processing device is to: provide a plurality of virtual processors, each virtual processor comprising a cache memory to cache a portion of database data accessed from a storage platform; receive a query referencing the database data stored in the storage platform; determine at least one task to process the received query; and allocate the at least one task to a subset of the plurality of virtual processors to process the at least one task. The allocation may be based at least in part on the respective portions of the database data that are cached within the respective cache memories of the subset of the plurality of virtual processors.

Claims (46)

1. A system comprising:

a memory; and

a processing device operatively coupled to the memory, the processing device to:

provide a plurality of virtual processors, each virtual processor comprising a cache memory to cache a portion of database data accessed from a storage platform and processing resources to process a portion of a database query;

receive a query referencing the database data stored in the storage platform;

determine at least one task to process the received query; and

allocate, by the processing device, the at least one task to a subset of the plurality of virtual processors to process the at least one task, wherein the allocation is based at least in part on the respective portions of the database data that are cached within the respective cache memories of the subset of the plurality of virtual processors and the processing resources that are available at the subset of the plurality of virtual processors for the at least one task.

2. The system of claim 1 , wherein the storage platform comprises a plurality of storage devices, and

wherein each of the plurality of virtual processors are operatively coupled to a subset of the plurality of storage devices.

3. The system of claim 1 , wherein the processing device is further to determine the respective portions of the database data that are cached within the respective cache memories of the subset of the plurality of virtual processors.

4. The system of claim 1 , wherein the at least one task comprises a first task and a second task, and

wherein the processing device is further to:

allocate the first task of the query to a first virtual processor of the plurality of virtual processors responsive to determining that the first task references a first portion of the database data that is stored in the cache of the first virtual processor; and

allocate the second task of the query to a second virtual processor of the plurality of virtual processors responsive to determining that the second task references a second portion of the database data that is stored in the cache of the second virtual processor.

5. The system of claim 4 , wherein the processing device is further to receive a task result from each of the first task and the second task and to create a statement result from the task results in response to the query.

6. The system of claim 4 , wherein the first portion of the database data and the second portion of the database data comprise a same portion of the database data, and

wherein the first task and the second task are to concurrently process the same portion of the database data on the first and the second virtual processor.

7. A method comprising:

providing a plurality of virtual processors, each virtual processor comprising a cache memory to cache a portion of database data accessed from a storage platform and processing resources to process a portion of a database query;

receiving a query referencing the database data stored in the storage platform;

determining at least one task to process the received query; and

allocating, by a processing device, the at least one task to a subset of the plurality of virtual processors to process the at least one task, wherein the allocating is based at least in part on the respective portions of the database data that are cached within the respective cache memories of the subset of the plurality of virtual processors and the processing resources that are available at the subset of the plurality of virtual processors for the at least one task.

8. The method of claim 7 , wherein the storage platform comprises a plurality of storage devices, and

wherein each of the plurality of virtual processors are operatively coupled to a subset of the plurality of storage devices.

9. The method of claim 7 , further comprising determining the respective portions of the database data that are cached within the respective cache memories of the subset of the plurality of virtual processors.

10. The method of claim 7 , wherein the at least one task comprises a first task and a second task, and

wherein method further comprises:

allocating the first task of the query to a first virtual processor of the plurality of virtual processors responsive to determining that the first task references a first portion of the database data that is stored in the cache of the first virtual processor; and

allocating the second task of the query to a second virtual processor of the plurality of virtual processors responsive to determining that the second task references a second portion of the database data that is stored in the cache of the second virtual processor.

11. The method of claim 10 , wherein the method further comprises receiving a task result from each of the first task and the second task and to create a statement result from the task results in response to the query.

12. The method of claim 10 , wherein the first portion of the database data and the second portion of the database data comprise a same portion of the database data, and

wherein the first task and the second task are to concurrently process the same portion of the database data on the first and the second virtual processor.

13. A non-transitory computer-readable medium having instructions stored thereon that, when executed by a processing device, cause the processing device to:

provide a plurality of virtual processors, each virtual processor comprising a cache memory to cache a portion of database data accessed from a storage platform and processing resources to process a portion of a database query;

receive a query referencing the database data stored in the storage platform;

determine at least one task to process the received query; and

allocate, by the processing device, the at least one task to a subset of the plurality of virtual processors to process the at least one task, wherein the allocation is based at least in part on the respective portions of the database data that are cached within the respective cache memories of the subset of the plurality of virtual processors and the processing resources that are available at the subset of the plurality of virtual processors for the at least one task.

14. The non-transitory computer-readable medium of claim 13 , wherein the storage platform comprises a plurality of storage devices, and

wherein each of the plurality of virtual processors are operatively coupled to a subset of the plurality of storage devices.

15. The non-transitory computer-readable medium of claim 13 , wherein the at least one task comprises a first task and a second task, and

wherein the processing device is further to:

allocate the first task of the query to a first virtual processor of the plurality of virtual processors responsive to determining that the first task references a first portion of the database data that is stored in the cache of the first virtual processor; and

allocate the second task of the query to a second virtual processor of the plurality of virtual processors responsive to determining that the second task references a second portion of the database data that is stored in the cache of the second virtual processor.

16. The non-transitory computer-readable medium of claim 15 , wherein the processing device is further to receive a task result from each of the first task and the second task and to create a statement result from the task results in response to the query.

17. The non-transitory computer-readable medium of claim 15 , wherein the first portion of the database data and the second portion of the database data comprise a same portion of the database data, and

wherein the first task and the second task are to concurrently process the same portion of the database data on the first and the second virtual processor.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 11, 2021
From: DAGEVILLE, BENOIT; CRUANES, THIERRY; ZUKOWSKI, MARCIN
To: SNOWFLAKE COMPUTING, INC.
Reel/Frame 058090/0054 →
CHANGE OF NAME Recorded Nov 11, 2021
From: SNOWFLAKE COMPUTING, INC.
To: SNOWFLAKE INC.
Reel/Frame 058106/0230 →
Continuity (5)
Continuation 16816180 · Mar 11, 2020
Continuation 16447416 · Jun 20, 2019
Continuation 14518884 · Oct 20, 2014
Provisional Application 61941986 · Feb 19, 2014
Related Publication 20220067067A1 · Mar 3, 2022