Search

US-12625736-B2 - Processor core sharing using voluntary yielding in a data storage system hosting a containerized service

US12625736B2US 12625736 B2US12625736 B2US 12625736B2US-12625736-B2

Abstract

A shared portion of processor cores is allocated within the processor cores of a data storage system. Each processor core in the shared portion of processor cores is shared between a storage system application executing in the data storage system and a containerized service also executing in the data storage system. A voluntary yield time interval is dynamically generated based on both a workload of the containerized service and a workload of the storage system application. Each processor core in the shared portion of the processor cores is periodically voluntarily yielded by the storage system application, based on the voluntary yield time interval, to allow execution of the containerized service on that processor core.

Inventors

  • Vladimir Shveidel
  • Roy Koren

Assignees

  • DELL PRODUCTS L.P.

Dates

Publication Date
20260512
Application Date
20230830

Claims (20)

  1. 1 . A method comprising: allocating a shared portion of a plurality of processor cores in a data storage system, wherein each processor core in the shared portion of the plurality of processor cores is shared between a storage system application executing in the data storage system and a containerized service also executing in the data storage system; dynamically generating a voluntary yield time interval based on both a workload of the containerized service and a workload of the storage system application; and periodically voluntarily yielding each processor core in the shared portion of the plurality of processor cores, by the storage system application based on the voluntary yield time interval, to allow execution of the containerized service on that processor core.
  2. 2 . The method of claim 1 , wherein dynamically generating the voluntary yield time interval comprises: measuring the workload of the containerized service based on host I/O (Input/Output) requests received by the data storage system that are directed to the containerized service; measuring the workload of the storage system application based on host I/O requests received by the data storage system that are directed to the storage system application; and generating the voluntary yield time interval based on a ratio of the workload of the containerized service to the workload of the storage system application.
  3. 3 . The method of claim 2 , wherein dynamically generating the voluntary yield time interval comprises generating smaller values for the voluntary yield time interval for larger values of the ratio of the of the workload of the containerized service to the workload of the storage system application.
  4. 4 . The method of claim 3 , wherein dynamically generating the voluntary yield time interval based on the ratio of the workload of the containerized service to the workload of the storage system application further comprises indexing into a table using the ratio of the workload of the containerized service to the workload of the storage system application to retrieve the voluntary yield time interval.
  5. 5 . The method of claim 2 , further comprising: identifying the host I/O requests received by the data storage system that are directed to the containerized service by identifying those host I/O requests received by the data storage system that are received from at least one SCSI (Small Computer System Interface) initiator associated with the containerized service.
  6. 6 . The method of claim 2 , further comprising: identifying the host I/O requests received by the data storage system that are directed to the containerized service by identifying those host I/O requests received by the data storage system that are directed to at least one storage volume associated with the containerized service.
  7. 7 . The method of claim 1 , wherein periodically voluntarily yielding the processor core by the storage system application comprises: checking whether the voluntary yield time interval has expired for the processor core; and in response to the voluntary yield time interval having expired for the processor core, voluntarily yielding the processor to a scheduler of an operating system of the data storage system.
  8. 8 . The method of claim 7 , further comprising: setting all execution threads of the storage system application to a first thread priority; and setting all execution threads of the containerized application to a second thread priority, wherein the second thread priority is higher than the first thread priority.
  9. 9 . The method of claim 1 , wherein the containerized service provides a file-based data storage service to one or more hosts; and wherein the storage system application provides a block-based data storage service to one or more hosts.
  10. 10 . The method of claim 1 , wherein the plurality of processor cores in the data storage system further includes a non-shared portion; and wherein each processor core in the non-shared portion of the plurality of processor cores in the data storage system executes only the storage system application.
  11. 11 . A data storage system comprising: processing circuitry and a memory; a plurality of non-volatile data storage drives; and wherein the memory has program code stored thereon, wherein the program code, when executed by the processing circuitry, causes the processing circuitry to: allocate a shared portion of a plurality of processor cores in the processing circuitry of the data storage system, wherein each processor core in the shared portion of the plurality of processor cores is shared between a storage system application executing in the data storage system and a containerized service also executing in the data storage system; dynamically generate a voluntary yield time interval based on both a workload of the containerized service and a workload of the storage system application; and periodically voluntarily yield each processor core in the shared portion of the plurality of processor cores, by the storage system application based on the voluntary yield time interval, to allow execution of the containerized service on that processor core.
  12. 12 . The data storage system of claim 11 , wherein the program code, when executed by the processing circuitry, causes the processing circuitry to dynamically generating the voluntary yield time interval at least in part by causing the processing circuitry to: measure the workload of the containerized service based on host I/O (Input/Output) requests received by the data storage system that are directed to the containerized service; measure the workload of the storage system application based on host I/O requests received by the data storage system that are directed to the storage system application; and generate the voluntary yield time interval based on a ratio of the workload of the containerized service to the workload of the storage system application.
  13. 13 . The data storage system of claim 12 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to dynamically generate the voluntary yield time interval at least in part by causing the processing circuitry to generate smaller values for the voluntary yield time interval for larger values of the ratio of the of the workload of the containerized service to the workload of the storage system application.
  14. 14 . The data storage system of claim 13 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to dynamically generate the voluntary yield time interval based on the ratio of the workload of the containerized service to the workload of the storage system application at least in part by causing the processing circuitry to index into a table using the ratio of the workload of the containerized service to the workload of the storage system application to retrieve the voluntary yield time interval.
  15. 15 . The data storage system of claim 12 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to: identify the host I/O requests received by the data storage system that are directed to the containerized service by identifying those host I/O requests received by the data storage system that are received from at least one SCSI (Small Computer System Interface) initiator associated with the containerized service.
  16. 16 . The data storage system of claim 12 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to: identify the host I/O requests received by the data storage system that are directed to the containerized service by identifying those host I/O requests received by the data storage system that are directed to at least one storage volume associated with the containerized service.
  17. 17 . The data storage system of claim 11 , wherein causing the processing circuitry to periodically voluntarily yield the processor core includes causing the processing circuitry to: check whether the voluntary yield time interval has expired for the processor core; and in response to the voluntary yield time interval having expired for the processor core, voluntarily yield the processor to a scheduler of an operating system of the data storage system.
  18. 18 . The data storage system of claim 17 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to: set all execution threads of the storage system application to a first thread priority; and set all execution threads of the containerized application to a second thread priority, wherein the second thread priority is higher than the first thread priority.
  19. 19 . The data storage system of claim 11 , wherein the containerized service provides a file-based data storage service to one or more hosts; and wherein the storage system application provides a block-based data storage service to one or more hosts.
  20. 20 . The data storage system of claim 11 , wherein the plurality of processor cores in the processing circuitry of the data storage system further includes a non-shared portion; and wherein each processor core in the non-shared portion of the plurality of processor cores in the processing circuitry of the data storage system executes only the storage system application.

Description

TECHNICAL FIELD The present disclosure relates generally to data storage systems that host containerized services. BACKGROUND Data storage systems are arrangements of hardware and software that are coupled to non-volatile data storage drives, such as solid state drives and/or magnetic disk drives. The data storage system services host I/O requests received from physical and/or virtual host machines (“hosts”). The host I/O requests received by the data storage system specify host data that is written and/or read by the hosts. The data storage system executes software that processes the host I/O requests by performing various data processing tasks to efficiently organize and persistently store the host data in the non-volatile data storage drives of the data storage system. SUMMARY In the disclosed technology, a shared portion of processor cores is allocated within the multiple processor cores of a data storage system. Each processor core in the shared portion of the processor cores is shared between a storage system application executing in the data storage system and a containerized service also executing in the data storage system. A voluntary yield time interval is dynamically generated based on both a workload of the containerized service and a workload of the storage system application. Based on the voluntary yield time interval, the storage system application periodically voluntarily yields each processor core in the shared portion of the plurality of processor cores to allow execution of the containerized service on that processor core. In some embodiments, the voluntary yield time interval is dynamically generated by measuring the workload of the containerized service based on host I/O (Input/Output) requests received by the data storage system that are directed to the containerized service, measuring the workload of the storage system application based on host I/O requests received by the data storage system that are directed to the storage system application, and then generating the voluntary yield time interval based on a ratio of the workload of the containerized service to the workload of the storage system application. In some embodiments, the voluntary yield time interval is dynamically generated by generating smaller values for the voluntary yield time interval for larger values of the ratio of the workload of the containerized service to the workload of the storage system application. In some embodiments, the voluntary yield time interval is dynamically generated based on the ratio of the workload of the containerized service to the workload of the storage system application at least in part by indexing into a table using the ratio of the workload of the containerized service to the workload of the storage system application to retrieve the voluntary yield time interval. In some embodiments, the host I/O requests received by the data storage system that are directed to the containerized service are identified by identifying those host I/O requests that are received by the data storage system and that are received from at least one SCSI (Small Computer System Interface) initiator that is associated with the containerized service. In some embodiments, the host I/O requests received by the data storage system that are directed to the containerized service are identified by identifying those of the host I/O requests that are received by the data storage system that are directed to at least one storage volume that is associated with the containerized service. In some embodiments, periodically voluntarily yielding an individual processor core by the storage system application includes checking whether the voluntary yield time interval has expired for that processor core. In response to the voluntary yield time interval having expired for the processor core, the storage system application voluntarily yields the processor to a scheduler of an operating system of the data storage system. In some embodiments, all execution threads of the storage system application are set to a first thread priority, and all execution threads of the containerized application are set to a second thread priority. The second thread priority is higher than the first thread priority. In some embodiments, the containerized service provides a file-based data storage service to one or more hosts, and the storage system application provides a block-based data storage service to one or more hosts. In some embodiments, the processor cores in the data storage system also include a non-shared portion. Each processor core in the non-shared portion of the processor cores in the data storage system executes only the storage system application. The disclosed technology is integral to providing a practical technical solution to the problem of sharing processor cores within a data storage system under varying workloads. Embodiments of the disclosed technology use a containerized application to improve the functionality of the data storag