Lock acceleration

US9460144B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9460144-B2
Application numberUS-201213350535-A
CountryUS
Kind codeB2
Filing dateJan 13, 2012
Priority dateJan 13, 2012
Publication dateOct 4, 2016
Grant dateOct 4, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A method for locking resources, including: receiving, by an accelerator, a first request from a first client to lock a first resource; evaluating, by a computer processor of a server, a hash function using an identifier of the first resource as an input to the hash function; identifying, by the computer processor and based on evaluating the hash function, a first hash bucket in a shared memory residing in a physical memory of the server; detecting that the first hash bucket is occupied; and sending the first request to a master lock monitor residing in a user space of the server based at least on detecting that the first hash bucket is occupied.

First claim

Opening claim text (preview).

What is claimed is: 1. A method for locking resources, comprising: receiving, by an accelerator, a first request from a first client to place a first lock on a first resource, wherein the first lock is a right for the first client to use the first resource; identifying, by the accelerator executing on the computer processor and based on a first identifier of the first resource, a first entry of a data structure stored in a shared memory residing in a physical memory of the server; detecting that the first entry is occupied by determining that the first entry is storing a first lock state element comprising a non-Null lock identifier; sending the first request to a master lock monitor residing in a user space of the server based at least on detecting that the first entry is occupied; granting, by the master lock monitor, the first lock on the first resource to the first client; receiving, by the accelerator, a second request from a second client to place a second lock on a second resource, wherein the second lock is a right for the second client to use the second resource; identifying, based on a second identifier of the second resource, a second entry of the data structure in the shared memory; detecting that the second entry is empty, indicating that the second resource is not currently locked; entering, in response to detecting that the second entry is empty, a second lock state element referencing the second resource into the second entry; and granting, after entering the second lock state element, without sending the second request to the master lock monitor and based at least in part on detecting that the second entry is empty, the second lock on the second resource to the second client. 2. The method of claim 1 , further comprising: identifying a mode of the first lock state element; and determining that the mode of the first lock state element and a mode of the first request are incompatible, wherein sending the first request to the master lock monitor is further based on determining that the mode of the first lock state element and a mode of the first request are incompatible. 3. The method of claim 1 , wherein granting, by the master lock monitor, the first lock on the first resource to the first client further comprises: receiving the first request by the master lock monitor; queuing, in a variable lock database residing in the user space, the first request according to a predefined queuing protocol; unlocking, after queuing the first request, the first resource in response to an unlock request; selecting, after unlocking the first resource, the first request for fulfillment based on the predefined queuing protocol; overwriting, by the master lock monitor, the first lock state element with a second lock state element referencing the first resource into the first entry; and granting, after entering the second lock state element, the first lock on the first resource to the first client. 4. The method of claim 1 , further comprising: sending, by the master lock monitor, a command to disable the accelerator; and disabling the accelerator in response to the command, wherein the accelerator forwards subsequent lock and unlock requests to the master lock monitor for fulfillment after being disabled. 5. The method of claim 1 , wherein: the accelerator resides in one selected from a group consisting of a kernel space of the server and a device processor space of a device; the data structure is a hash table comprising a hash function; the first entry is a hash bucket; and the hash bucket is a smaller data set to which a larger data set is mapped via the hash function. 6. The method of claim 1 , further comprising: identifying a consult master field within the first lock state element residing in the first entry; and reading a value of the consult master field, wherein sending the first request to the master lock monitor is further based on the value. 7. The method of claim 1 , wherein the first resource is a row in a database management system (DBMS) instance, and wherein the DBMS instance comprises the accelerator, the master lock monitor, and the shared memory. 8. The method of claim 1 , wherein the first resource is a file in a file system, and wherein the file system comprises the accelerator, the master lock monitor, and the shared memory. 9. The method of claim 1 , wherein the first client is a database management system (DBMS) instance in a distributed database cluster. 10. A method for locking resources, comprising: receiving, by an accelerator, a first request from a first client to place a first lock on a first resource, wherein the accelerator resides in one selected from a group consisting of a kernel space and a device processor space, and wherein the first lock is a right for the first client to use the first resource; determining, by the accelerator executing on a computer processor, that the resource is exclusively locked by identifying a mode in a lock state element stored in an entry of a data structure, wherein the mode comprises an indication that the resource is exclusively locked; sending the request to a master lock monitor residing in user space in response to determining that the resource is exclusively locked; granting, by the master lock monitor, the first lock on the first resource to the first client; receiving, by the accelerator, a second request from a second client to place a second lock on a second resource, wherein the second lock is a right for the second client to use the second resource; identifying, based on a second identifier of the second resource, a second entry of the data structure in the shared memory; detecting that the second entry is empty, indicating that the second resource is not currently locked; entering, in response to detecting that the second entry is empty, a second lock state element referencing the second resource into the second entry; and granting, after entering the second lock state element, without sending the second request to the master lock monitor and based at least in part on detecting that the second entry is empty, the second lock on the second resource to the second client. 11. A system for locking resources, comprising: a computer processor; a physical memory comprising a shared memory; an accelerator, executing on the computer processor and configured to: receive a first request from a first client to place a first lock on a first resource, wherein the first lock is a right for the first client to use the first resource; identify, based on the identifier of the first resource, a first entry of a data structure in the shared memory; detect that the first entry is occupied by determining that the first entry is storing a first lock state element comprising a non-Null lock identifier; send the first request to a master lock monitor based at least on detecting that the first entry is occupied receive a second request from a second client to place a second lock on a second resource, wherein the second lock is a right for the second client to use the second resource; identify, based on a second identifier of the second resource, a second entry of the data structure in the shared memory; detect that the second entry is empty, indicating indicates that the second resource is not currently locked; enter, in response to detecting that the second entry is empty, a second lock state element referencing the second resource into the second entry; and grant, after entering the second lock state element, without sending the second request to the master lock monitor and based at least in part on detecting that the second entry is empty, the second lock on the second re

Assignees

Inventors

Classifications

  • Locking methods, e.g. distributed locking or locking implementation details · CPC title

  • Physics · mapped topic

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9460144B2 cover?
A method for locking resources, including: receiving, by an accelerator, a first request from a first client to lock a first resource; evaluating, by a computer processor of a server, a hash function using an identifier of the first resource as an input to the hash function; identifying, by the computer processor and based on evaluating the hash function, a first hash bucket in a shared memory …
Who is the assignee on this patent?
Brower David, Pruscino Angelo, Chan Wilson, and 2 more
What technology area does this patent fall under?
Primary CPC classification G06F16/2343. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Oct 04 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).