Uniprocessor schedulability testing for non-preemptive task sets
US-9766931-B2 · Sep 19, 2017 · US
US2017090999A1 · US · A1
| Field | Value |
|---|---|
| Publication number | US-2017090999-A1 |
| Application number | US-201514866293-A |
| Country | US |
| Kind code | A1 |
| Filing date | Sep 25, 2015 |
| Priority date | Sep 25, 2015 |
| Publication date | Mar 30, 2017 |
| Grant date | — |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
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.
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,
by using speculative mechanisms · CPC title
Workload threshold · CPC title
considering data affinity · CPC title
involving task migration · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.