Storage System Multiprocessing and Mutual Exclusion in a Non-Preemptive Tasking Environment

US2017090999A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2017090999-A1
Application numberUS-201514866293-A
CountryUS
Kind codeA1
Filing dateSep 25, 2015
Priority dateSep 25, 2015
Publication dateMar 30, 2017
Grant date

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.

Selective multiprocessing in a non-preemptive task scheduling environment is provided. Tasks of an application are grouped based on similar functionality and/or access to common code or data structures. The grouped tasks constitute a task core group, and each task core group may be mapped to a core in a multi-core processing system. A mutual exclusion approach reduces overhead imposed on the storage controller and eliminates the risk of concurrent access. A core guard routine is used when a particular application task in a first task core group requires access to a section of code or data structure associated with a different task core group. The application task is temporarily assigned to the second task core group. The application task executes the portion of code seeking access to the section of code or data structure. Once complete, the application task is reassigned back to its original task core group.

First claim

Opening claim text (preview).

1 . A method comprising: determining, by a storage controller, a first designated central processing unit (CPU) core to which a first group of tasks is assigned for an application based on reliance on a first shared data structure associated with the first group of tasks, the first group of tasks comprising a first application task; mapping, by the storage controller, the first group of tasks to the first designated CPU core based on the determination; excluding, by the storage controller, access to the first shared data structure by a second application task grouped with a second group of tasks; and tracking, by the storage controller, the application task of the first group of tasks over time, wherein application tasks within the first group of tasks are non-preemptive with respect to each other. 2 . The method of claim 1 , further comprising: determining, by the storage controller, a second designated CPU core to which the second group of tasks is assigned for the application based on reliance on a second shared data structure associated with the second group of tasks; and mapping, by the storage controller, the second group of tasks to the second designated CPU core based on the determination. 3 . The method of claim 2 , further comprising: receiving, at the storage controller, a request from the first application task of the first group of tasks to be temporarily remapped to the second designated CPU core to which the second group of tasks is assigned so that the first application task may access the second shared data structure associated with the second group of tasks; reassigning, by the storage controller, the first application task to the second group of tasks mapped to the second designated CPU core; and scheduling, by a scheduler of the storage controller, the first application task on the second designated CPU core among one or more tasks associated with the second group of tasks. 4 . The method claim 3 , further comprising: receiving, by the storage controller, an indication from the first application task of completion of at least one operation requiring access to the second shared data structure; and reassigning, by the storage controller, the application task to the first group of tasks mapped to the first designated CPU core. 5 . The method of claim 4 , further comprising: causing, by the storage controller, a second application task grouped with the first group of tasks to begin execution by the first designated CPU core in response to the first application task being temporarily reassigned to the second group of tasks mapped to the second designated CPU core; and scheduling, by the scheduler of the storage controller, the first application task on the first designated CPU core to resume execution on the first designated CPU core after the completion of the at least one operation and after the second application task grouped with the first group of tasks completes execution. 6 . The method of claim 1 , further comprising: measuring, by the storage controller, a performance metric for each of the first and second designated CPU cores based on the tracking; and remapping, by the storage controller, the first group of tasks to the second designated CPU core in response to determining that the performance metric for the first designated CPU core is above a first threshold and the performance metric for the second designated CPU core is below a second threshold, or remapping, by the storage controller, the second group of tasks to the first designated CPU core in response to determining that the performance metric for the second designated CPU core is above the first threshold and the performance metric for the first designated CPU core is below the second threshold. 7 . The method of claim 1 , further comprising: performing the determining, mapping, and tracking by a wrapper operating between the application and a scheduler for an operating system of the storage controller. 8 . A computing device comprising: a memory containing machine readable medium comprising machine executable code having stored thereon instructions for performing a method of multiprocessing and mutual exclusion in a non-preemptive tasking environment; a processor coupled to the memory and comprising a plurality of central processing unit (CPU) cores, the processor configured to execute the machine executable code to cause the processor to: determine a first CPU core to which a first core group is assigned that comprises a first plurality of tasks, based on reliance on a first shared data structure associated with the first core group; determine a second CPU core to which a second core group is assigned that comprises a second plurality of tasks, based on reliance on a second shared data structure associated with the second core group, the first and second plurality of tasks being non-preemptive; map the first core group to the first CPU core and the second core group to the second CPU core in response to the determination; exclude access to the first shared data structure by the second plurality of tasks while assigned to the second core group and to the second shared data structure by the first plurality of tasks while assigned the first core group; and temporarily reassign a running task from among the first plurality of tasks to the second core group mapped to the second CPU core to enable access by the running task to the second shared data structure associated with the second core group. 9 . The computing device of claim 8 , wherein the processor is further configured to execute the machine executable code to cause the processor to: schedule, by a scheduler of the computing device, the running task on the second CPU core among the second plurality of tasks. 10 . The computing device of claim 8 , wherein the processor is further configured to execute the machine executable code to cause the processor to: receive an indication from the running task of completion of at least one operation requiring access to the second shared data structure; and reassign the running task to the first core group mapped to the first CPU core in response to receiving the indication. 11 . The computing device of claim 8 , wherein the processor is further configured to execute the machine executable code to cause the processor to: cause a second task from among the first plurality of tasks to begin execution by the first CPU core in response to the running task being temporarily reassigned to the second core group mapped to the second CPU core; and schedule, after the running task completes access to the second shared data structure, the running task on the first CPU core to continue execution on the first CPU core after the second task completes execution. 12 . The computing device of claim 8 , wherein the processor is further configured to execute the machine executable code to cause the processor to: monitor a performance metric for each of the first and second CPU cores as one or more of the first and second plurality of tasks are executed; and remap the first core group to the second CPU core in response to determining that the performance metric for the first CPU core is above a first threshold and the performance metric for the second CPU core is below a second threshold, or remap the second core group to the first CPU core in response to determining that the performance metric for the second CPU core is above the first threshold and the performance metric for the first CPU core is below the second threshold. 13 . The computing device of claim of claim 8 , wherein: the first and second plurality of tasks comprise application tasks,

Assignees

Inventors

Classifications

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 US2017090999A1 cover?
Selective multiprocessing in a non-preemptive task scheduling environment is provided. Tasks of an application are grouped based on similar functionality and/or access to common code or data structures. The grouped tasks constitute a task core group, and each task core group may be mapped to a core in a multi-core processing system. A mutual exclusion approach reduces overhead imposed on the st…
Who is the assignee on this patent?
Netapp Inc
What technology area does this patent fall under?
Primary CPC classification G06F9/528. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu Mar 30 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 3 related publications on this page (citations in our corpus or others sharing the same primary CPC).