IP Library Granted Patent US 12664018
Granted Patent B2
US 12664018 · App. 17/400,579 · Granted Jun 23, 2026

System and method for estimating job scalability on a computing device

Inventors: Max Alt (San Francisco, CA); Paulo Roberto Pereira de Souza filho (Maringa, BR)
Assignee: Advanced Micro Devices, Inc.
G06F9/5005G06F9/466
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 12664018
App. No.
17/400,579
Granted
Jun 23, 2026
Kind
B2
Abstract

Systems and methods for estimating the scalability of applications in high performance computing and distributed computing environments and for configuring applications based on those estimates are disclosed. A model is disclosed that provides an estimate of the scalability behavior of an application based on basic parameters and a small number of runs on bare metal and cloud systems. The system may also be configured to use the estimated performance to recommend optimal configurations based on different policies, including best performance, lowest cost, and best performance per cost.

Claims (74)

1 . A method for estimating job scalability on a computing system, the method comprising:

determining available memory for multiple processing cores in the computing system being evaluated for executing a job;

calculating one or more estimated execution times for the job;

wherein the one or more estimated execution times are estimated based on (i) a serial time estimate for the job, (ii) a parallel time estimate that scales with a number of cores of the multiple processing cores being evaluated for executing the job, and (iii) a network overhead estimate for the job; and

wherein the serial time estimate, the parallel time estimate, and the network overhead estimate are derived from performance measurements taken from one or more prior executions of the job on other computer systems having similar cores and available memory per core as the computing system;

calculating a first estimated number of cores of the multiple processing cores for a performance option at which the one or more estimated execution times for the job is minimized;

calculating a second estimated number of cores of the multiple processing cores for a lowest cost option at which an estimated financial cost to execute the job is minimized;

displaying one or more numbers of cores including the first estimated number of cores and the second estimated number of cores;

scaling the job according to a selected number of cores of the one or more numbers of cores; and

executing the scaled job on the computing system using the selected number of cores.

2 . The method of claim 1 , wherein determining the available memory is performed on a per-core or per-thread basis.

3 . The method of claim 1 , further comprising estimating a problem size for the job, wherein the problem size is estimated from a previous run of the job based on a total RAM memory usage without the multiple processing cores paging.

4 . The method of claim 3 , further comprising determining a hard threshold restriction (H) that penalizes configurations where n>mP, where n is the size of the problem, m is the available memory per core and P is the number of cores of the multiple processing cores being evaluated for executing the job.

5 . The method of claim 1 , wherein:

the serial time estimate for the job is a fixed term that does not scale with the number of cores of the multiple processing cores in the computing system being evaluated for executing the job;

and

the network overhead estimate is proportional to the number of cores of the multiple processing cores in the computing system being evaluated for executing the job.

6 . The method of claim 1 , further comprising performing one or more test runs of the job with performance instrumentation, wherein if a number of test runs is less than three, calculating the serial time estimate based on a sum of time spent by the number of cores of the multiple processing cores being evaluated for executing the job sending or receiving messages plus time spent by the job in disk operations divided by the number of cores of the multiple processing cores being evaluated for executing the job, and calculating the parallel time estimate based on a total job time divided by the number of cores of the multiple processing cores being evaluated for executing the job minus the serial time estimate.

7 . The method of claim 1 , further comprising:

calculating a third estimated number of cores of the multiple processing cores for a best performance per financial cost option;

calculating an estimated financial cost for the performance option at which the one or more estimated execution times for the job is minimized;

calculating an estimated financial cost for the lowest cost option;

calculating an estimated financial cost for the best performance per financial cost option; and

displaying the estimated financial cost for the performance option at which the one or more estimated execution times for the job is minimized, the estimated financial cost for the lowest cost option, and the estimated financial cost for the best performance per financial cost option.

8 . The method of claim 1 , wherein the performance option is a best performance option.

9 . A system for estimating a job's scalability in a computer system, comprising:

a memory;

one or more processors configured to execute instructions in the memory, which when executed cause the one or more processors to:

determine available memory for each core in a computing system being evaluated for executing a job;

calculate one or more estimated execution times for the job;

wherein the one or more estimated execution times are estimated based on (i) a serial time estimate for the job, (ii) a parallel time estimate that scales with a number of cores being evaluated for executing the job, and (iii) a network overhead estimate for the job; and

wherein the serial time estimate, the parallel time estimate, and the network overhead estimate are based on performance measurements taken from one or more prior executions of the job on other computer systems having similar cores and available memory per core as the computing system;

calculate a first estimated number of cores of the computing system for a performance option at which the one or more estimated execution times for the job is minimized;

calculate a second estimated number of cores of the computing system for a lowest cost option at which an estimated financial cost to execute the job is minimized;

display one or more numbers of cores including the first estimated number of cores and the second estimated number of cores;

scale the job according to a selected number of cores of the one or more numbers of cores; and

execute the scaled job on the computing system using the selected number of cores.

10 . The system of claim 9 , wherein the one or more processors calculate a third estimated number of cores of the computing system for a best performance per financial cost option.

11 . The system of claim 9 , wherein:

the one or more processors estimate a problem size for the job; and

the problem size is estimated from a previous run of the job based on a total RAM memory usage without paging.

12 . The system of claim 9 , wherein:

the serial time estimate for the job is a fixed term that does not scale with the number of cores in the computing system being evaluated for executing the job;

and

the network overhead estimate is proportional to the number of cores in the computing system being evaluated for executing the job.

13 . A system for estimating a job's scalability in a computer system, comprising:

a memory;

one or more processors configured to execute instructions in the memory, which when executed cause the one or more processors to:

determine available memory for a plurality of cores in the computing system being evaluated for executing a job;

determine one or more execution times for the job;

wherein the one or more execution times are estimated based on a serial time estimate for the job, a parallel time estimate that scales with a number of cores of the plurality of cores being evaluated for executing the job, and a network overhead estimate for the job; and

wherein at least one of: the serial time estimate, the parallel time estimate, and the network overhead estimate are based on performance measurements taken from one or more prior executions of the job on the computer system; and the serial time estimate, the parallel time estimate, and the network overhead estimate are based on performance measurements taken from one or more prior executions of the job on other computer systems having similar cores and available memory per core as the computing system;

calculate one or more numbers of cores including (i) a first estimated number of cores of the computing system for a performance option that minimizes the one or more execution times for the job and (ii) a second estimated number of cores of the computing system for a lowest financial cost option;

scale the job according to a selected number of cores of the one or more numbers of cores; and

execute the scaled job on the computing system using the selected number of cores; and

a display that displays one or more of (i) and (ii).

14 . The system of claim 13 , wherein:

the one or more processors run one or more test workloads to measure one or more performance metrics for one or more cloud environments; and

the one or more processors estimate the one or more execution times for the job based on the one or more performance metrics.

15 . The system of claim 14 , wherein:

the one or more processors collect the one or more performance metrics for the job once the job is being executed; and

the one or more processors estimate a second execution time for a second job based on the one or more performance metrics.

16 . The system of claim 13 , wherein:

the one or more numbers of cores further includes a third estimated number of cores of the computing system for a best performance per financial cost option; and/or

the serial time estimate for the job is a fixed term that does not scale with the number of cores of the plurality of cores in the computing system being evaluated for executing the job; and/or

the network overhead estimate is proportional to the number of cores of the plurality of cores in the computing system being evaluated for executing the job.

17 . The system of claim 13 , wherein the instructions, when executed, further cause the one or more processors to:

perform one or more test runs of the job with performance instrumentation; and

if the number of test runs is less than three:

calculate the serial time estimate based on a sum of time spent by the number of cores of the plurality of cores being evaluated for executing the job sending or receiving messages plus time spent by the job in disk operations divided by the number of cores of the plurality of cores being evaluated for executing the job; and

calculate the parallel time estimate based on a total job time divided by the number of cores of the plurality of cores being evaluated for executing the job minus the serial time.

18 . The system of claim 13 wherein the instructions, when executed, further cause the one or more processors to:

calculate a first estimated number of threads of the computing system for a best performance option at which the one or more estimated execution times for the job is minimized; and

calculate a second estimated number of threads of the computing system for a lowest cost option at which an estimated financial cost to execute the job is minimized using the second estimated number of threads.