<img alt="" src="https://secure.perk0mean.com/173045.png" style="display:none;">

Great research starts with great data.

Learn More
More >
Patent Analysis of

CLOUD COMPUTING: ESTIMATION OF EXECUTION DURATION PERTINENT TO CONCURRENT EXECUTION OF THREADS

Updated Time 15 March 2019

Patent Registration Data

Publication Number

CA2956153A1

Application Number

CA2956153

Application Date

28 January 2017

Publication Date

28 July 2018

Current Assignee

MOHAMMADIAN ABKENAR, SEYED MOJTABA SMMA

Original Assignee (Applicant)

MOHAMMADIAN ABKENAR, SEYED MOJTABA SMMA

International Classification

G06F17/10,G06F9/46,H04L12/16,H04L12/28

Cooperative Classification

H04L12/4625,G06F9/46,H04L12/16,H04L12/28,H04L51/16

Inventor

MOHAMMADIAN ABKENAR, SEYED MOJTABA SMMA

Abstract

Platform as a Service (PAAS) in Cloud Computing can be utilized to execute Application to process data. Sequential processing of data starts by reading a chunk of data from a Cloud Repository, proceeding by executing functions on chunk of data, and ends by writing results to a Cloud Repository. Dividing the code block of sequential instructions and functions for processing of data into sections yields step 0, step 1,...,step n-2, step n-1 dubbed Step Sequence. The steps are ordered by ascending index. step 0 fetches a chunk of data from a Cloud Repository. step n-1 stores the output of the preceding step in a Cloud Repository. step i, 1 <= i <= n - 2 executes functions on the output of preceding step. Each step can be executed in a thread: step 0 yields thread of type Input (thread 0), step n-1 yields thread of type Storing (thread n-1), step i, 1<= i <= n - 2 yields thread of type Compute (thread i), and if the next step of step i, 0 <= i <= n - 2 is executed in alternative Instance, the step yields a thread of type Transport (transThread i) in addition to thread i. Threads of Step Sequence can be executed in sequence in single Instance or can be distributed to a number of Instances for executing. In occurrence of executing a number of Step Sequences, threads of Step Sequences can be executed concurrently in groups. Execution duration of a group of threads executed concurrently can be estimated utilizing a quadratic equation: a(Metric 1)2 + bxMetric 1 + c + d(Metric 2)2 + exMetric 2 + f . Known values of the quadratic equation are calculated utilizing regression analysis to relate: .cndot. A metric to execution duration of single thread. .cndot. A number of metrics to execution &gallon of concurrent execution of threads. The quadratic equation for estimating execution duration of concurrent executing of threads has application in estimating duration of processing data accomplishing by a Step Sequence, scaling threads of Step Sequences on a number of Instances for execution, scaling Instances of the Cloud Server executing threads of Step Sequences, and defining a quality of service pertinent to execution duration of Step Sequence.

Read more

Claims

Claims: 1. Step Sequence comprises step 0, step1,...,step n-2, step n-1 yielding from dividing a code block of sequential instructions and functions for processing a chunk of data into sections. The steps are ordered by ascending index. step 0 fetches a chunk of data from a Cloud Repository, step n-1 stores the output of the preceding step in a Cloud Repository, and step i,1 <= i <= n ¨ 2 executes functions on the output of preceding step. Each step can be executed in a thread: stem 0 yields thread of type Input, step n-1 yields thread of type Storing, step i, 1 <= i <= n ¨ 2 yields thread of type Compute, and if the next step of a step is executed in alternative Instance, a thread of type Transport is ensuing the thread of the step for sending the output of the step to thread of the next step. Thread Weight is a floating-point number measured for 1 execution of a thread of type Input, Compute, Storing, or Transport. Thread Weight for a thread of type Input is size of fetched data from a Cloud Repository which is measured for 1 execution of the thread.

2. Step Sequence comprises step 0, step 1,..., step n-2, step n-1 yielding from dividing a code block of sequential instructions and functions for processing a chunk of data into sections. The steps are ordered by ascending index. step 0 fetches a chunk of data from a Cloud Repository, step n-1 stores the output of the preceding step in a Cloud Repository, and step i,1 <= i <= n - 2 executes functions on the output of preceding step. Each step can be executed in a thread: step 0 yields thread of type Input, step n-1 yields thread of type Storing, step i,1 <= i <= n - 2 yields thread of type Compute, and if the next step of a step is executed in alternative Instance, a thread of type Transport is ensuing the thread of the step for sending the output of the step to thread of the next step. Thread Weight is a floating-point number measured for / execution of a thread of type Input, Compute, Storing, or Transport. Thread Weight for a thread of type Storing is size of stored data in a Cloud Repository which is measured for 1 execution the thread.

3. Step Sequence comprises step 0, step 1,..., step n-2, step n-1 yielding from dividing a code block of sequential instructions and functions for processing a chunk of data into sections. The steps are ordered by ascending index. step 0 fetches a chunk of data from a Cloud Repository, step n-1 stores the output of the preceding step in a Cloud Repository, and step i, 1 <= i <= n - 2 executes functions on the output of preceding step. Each step can be executed in a thread: sten 0 yields thread of type Input, step n-1 yields thread of type Storing, step i, 1 <= i <= n - 2 yields thread of type Compute, and if the next step of a step is executed in alternative Instance, a thread of type Transport is ensuing the thread of the step for sending the output of the step to thread of the next step. Thread Weight is a floating-point number measured for 1 execution of a thread of type Input, Compute, Storing, or Transport. Thread Weight for a thread of type Compute is the number of repeats of the code block pertinent to processing a chunk of data in the thread which is measured for 1 execution of the thread.

4. Step Sequence comprises step 0, step 1,..., step n-2, step n-1 yielding from dividing a code block of sequential instructions and functions for processing a chunk of data into sections. The steps are ordered by ascending index. step 0 fetches a chunk of data from a Cloud Repository, step n-1 stores the output of the preceding step in a Cloud Repository, and step i,1 <= i <= n - 2 executes functions on the output of preceding step. Each step can be executed in a thread: step 0 yields thread of type Input, step n-1 yields thread of type Storing, step i, 1 <= i <= n - 2 yields thread of type Compute, and if the next step of a step is executed in alternative Instance, a thread of type Transport is ensuing the thread of the step for sending the output of the step to thread of the next step. Thread Weight is a floating-point number measured for 1 execution of a thread of type Input, Compute, Storing, or Transport. Thread Weight for a thread of type Transport is size of sent data which is measured for 1 execution of the thread.

5. Threading Sequence comprises thread 0, thread 1,...,thread n-2, thread n- 1, thread 0 is of type Input, thread n-1 is of type Storing, and thread i,1 <= i <= n - 2 is of type Compute. If the next step of thread i, 0 <= i <= n - 2 is executed in alternative Instance, transThread i of type Transport is ensuing thread i for sending the output of thread i to thread of the next step. Execution duration of a number of threads of type Input which are executed concurrently can be estimated utilizing a quadratic equation: a(Metric 1)2 + bxMetric 1 + c + d(Metric 2)2 + exMetric 2 + f . To calculate a, b , and c, a thread of type Input is executed repeatedly. For each execution, Thread Weight and execution duration are measured. Utilizing quadratic regression to relate Thread Weights to execution durations yields calculation of a, b, and c. To calculate d, e , and f, a number of threads of type Input are executed concurrently for a number of iterations. For each execution, Thread Weight of each thread and execution duration of concurrent executing of the threads are measured. In procession, 2 metrics for each execution are calculated: Metric 1 = maximum of Thread Weights of the threads By excluding Thread Weight pertinent to Metric 1: Metric2 = (summation of the remaining Thread Weights)×(the number of the threads subtracting by 1) Utilizing quadratic regression to relate (execution duration ¨ (a(Metric 1)2 + bx Metric 1+ c)) to Metric 2 yields calculation of d,e, and f .

6. Threading Sequence comprises thread 0, thread 1,...,thread n-2,thread n-1. thread 0 is of type Input, thread n-1 is of type Storing, and thread i,1 <= i <= n - 2 is of type Compute. If the next step of thread i, 0 <= i <= n - 2 is executed in alternative Instance, transThreadi of type Transport is ensuing thread i for sending the output of thread i to thread of the next step. Execution duration of a number of threads of type Storing which are executed concurrently can be estimated utilizing a quadratic equation: a(Metric 1)2 + bxMetric 1+ c + d(Metric 2)2 + exMetric 2 + f. To calculate a, b , and c, a thread of type Storing is executed repeatedly. For each execution, Thread Weight and execution duration are measured. Utilizing quadratic regression to relate Thread Weights to execution durations yields calculation of a, b, and c. To calculate d, e , and f , a number of threads of type Storing are executed concurrently for a number of iterations. For each execution, Thread Weight of each thread and execution duration of concurrent executing of the threads are measured. In procession, 2 metrics for each execution are calculated: Metric 1 = maximum of Thread Weights of the threads By excluding Thread Weight pertinent to Metric 1: Metric 2 = (summation of the remaining Thread Weights)×(the number of the threads subtracting by 1) Utilizing quadratic regression to relate (execution duration - (a(Metric 1)2 + bx Metric 1+ c)) to Metric 2 yields calculation of d,e, and f .

7. Threading Sequence comprises thread 0,thread 1,...,thread n-2,thread n-1, thread 0 is of type Input, thread n-1 is of type Storing, and thread i, 1 <= i <= n - 2 is of type Compute. If the next step of thread i, 0 <= i <= n - 2 is executed in alternative Instance, transThread i of type Transport is ensuing thread i, for sending the output of thread i to thread of the next step. Execution duration of a number of threads of type Compute which are executed concurrently can be estimated utilizing a quadratic equation: a(Metric 1)2 + bxMetric 1+ c + d(Metric 2)2 + exMetric 2+ f . To calculate a, b , and c, a thread of type Compute is executed repeatedly. For each execution, Thread Weight and execution duration are measured. Utilizing quadratic regression to relate Thread Weights to execution durations yields calculation of a, b, and c. To calculate d,e , and f , a number of threads of type Compute are executed concurrently for a number of iterations. For each execution, Thread Weight of each thread and execution duration of concurrent executing of the threads are measured. In procession, 2 metrics for each execution are calculated: Metric 1= maximum of Thread Weights of the threads By excluding Thread Weight pertinent to Metric 1: Metric 2 = (summation of the remaining Thread Weights)×(the number of the threads subtracting by 1) Utilizing quadratic regression to relate (execution duration - (a(Metric 1)2 + bx Metric 1+ c)) to Metric 2 yields calculation of d,e, and f .

8. Threading Sequence comprises thread 0,thread 1,...,thread n-2,thread n-1. thread 0 is of type Input, thread n-1 is of type Storing, and thread i,1 <= i <= n - 2 is of type Compute. If the next step of thread i, 0 <= i <= n - 2 is executed in alternative Instance, transThread i of type Transport is ensuing thread i for sending the output of thread i to thread of the next step. Execution duration of a number of threads of type Transport which are executed concurrently can be estimated utilizing a quadratic equation: a(Metric 1)2 + bxMetric 1+ c + d(Metric 2)2 + exMetric 2+ f. To calculate a, b , and c , a thread of type Transport is executed repeatedly. For each execution, Thread Weight and execution duration are measured. Utilizing quadratic regression to relate Thread Weights to execution durations yields calculation of a, b, and c. To calculate d, e , and f , a number of threads of type Transport are executed concurrently for a number of iterations. For each execution, Thread Weight of each thread and execution duration of concurrent executing of the threads are measured. In procession, 2 metrics for each execution are calculated: Metric 1 = maximum of Thread Weights of the threads By excluding Thread Weight pertinent to Metric 1: Metric 2 = (summation of the remaining Thread Weights)×(the number of the threads subtracting by 1) Utilizing quadratic regression to relate (execution duration - (a(Metric 1)2 + bx Metric 1+ c)) to Metric 2 yields calculation of d, e, and f.

Read more

Claim Tree

  • 1
    1. Step Sequence comprises
    • step 0, step1,...,step n-2, step n-1 yielding from dividing a code block of sequential instructions and functions for processing a chunk of data into sections. The steps are ordered by ascending index. step 0 fetches a chunk of data from a Cloud Repository, step n-1 stores the output of the preceding step in a Cloud Repository, and step i,1 <= i <= n ¨ 2 executes functions on the output of preceding step. Each step can be executed in a thread: stem 0 yields thread of type Input, step n-1 yields thread of type Storing, step i, 1 <= i <= n ¨ 2 yields thread of type Compute, and if the next step of a step is executed in alternative Instance, a thread of type Transport is ensuing the thread of the step for sending the output of the step to thread of the next step. Thread Weight is a floating-point number measured for 1 execution of a thread of type Input, Compute, Storing, or Transport. Thread Weight for a thread of type Input is size of fetched data from a Cloud Repository which is measured for 1 execution of the thread.
  • 2
    2. Step Sequence comprises
    • step 0, step 1,..., step n-2, step n-1 yielding from dividing a code block of sequential instructions and functions for processing a chunk of data into sections. The steps are ordered by ascending index. step 0 fetches a chunk of data from a Cloud Repository, step n-1 stores the output of the preceding step in a Cloud Repository, and step i,1 <= i <= n - 2 executes functions on the output of preceding step. Each step can be executed in a thread: step 0 yields thread of type Input, step n-1 yields thread of type Storing, step i,1 <= i <= n - 2 yields thread of type Compute, and if the next step of a step is executed in alternative Instance, a thread of type Transport is ensuing the thread of the step for sending the output of the step to thread of the next step. Thread Weight is a floating-point number measured for / execution of a thread of type Input, Compute, Storing, or Transport. Thread Weight for a thread of type Storing is size of stored data in a Cloud Repository which is measured for 1 execution the thread.
  • 3
    3. Step Sequence comprises
    • step 0, step 1,..., step n-2, step n-1 yielding from dividing a code block of sequential instructions and functions for processing a chunk of data into sections. The steps are ordered by ascending index. step 0 fetches a chunk of data from a Cloud Repository, step n-1 stores the output of the preceding step in a Cloud Repository, and step i, 1 <= i <= n - 2 executes functions on the output of preceding step. Each step can be executed in a thread: sten 0 yields thread of type Input, step n-1 yields thread of type Storing, step i, 1 <= i <= n - 2 yields thread of type Compute, and if the next step of a step is executed in alternative Instance, a thread of type Transport is ensuing the thread of the step for sending the output of the step to thread of the next step. Thread Weight is a floating-point number measured for 1 execution of a thread of type Input, Compute, Storing, or Transport. Thread Weight for a thread of type Compute is the number of repeats of the code block pertinent to processing a chunk of data in the thread which is measured for 1 execution of the thread.
  • 4
    4. Step Sequence comprises
    • step 0, step 1,..., step n-2, step n-1 yielding from dividing a code block of sequential instructions and functions for processing a chunk of data into sections. The steps are ordered by ascending index. step 0 fetches a chunk of data from a Cloud Repository, step n-1 stores the output of the preceding step in a Cloud Repository, and step i,1 <= i <= n - 2 executes functions on the output of preceding step. Each step can be executed in a thread: step 0 yields thread of type Input, step n-1 yields thread of type Storing, step i, 1 <= i <= n - 2 yields thread of type Compute, and if the next step of a step is executed in alternative Instance, a thread of type Transport is ensuing the thread of the step for sending the output of the step to thread of the next step. Thread Weight is a floating-point number measured for 1 execution of a thread of type Input, Compute, Storing, or Transport. Thread Weight for a thread of type Transport is size of sent data which is measured for 1 execution of the thread.
  • 5
    5. Threading Sequence comprises
    • 1)2 + bxMetric 1 + c + d(Metric
    • 2)2 + exMetric 2 + f . To calculate a, b , and c, a thread of type Input is executed repeatedly. For each execution, Thread Weight and execution duration are measured. Utilizing quadratic regression to relate Thread Weights to execution durations yields calculation of a, b, and c. To calculate d, e , and f, a number of threads of type Input are executed concurrently for a number of iterations. For each execution, Thread Weight of each thread and execution duration of concurrent executing of the threads are measured. In procession, 2 metrics for each execution are calculated: Metric 1 = maximum of Thread Weights of the threads By excluding Thread Weight pertinent to Metric 1: Metric2 = (summation of the remaining Thread Weights)×(the number of the threads subtracting by 1) Utilizing quadratic regression to relate (execution duration ¨ (a(Metric 1)2 + bx Metric 1+ c)) to Metric 2 yields calculation of d,e, and f .
  • 6
    6. Threading Sequence comprises
    • 1)2 + bxMetric 1+ c + d(Metric
    • 2)2 + exMetric 2 + f. To calculate a, b , and c, a thread of type Storing is executed repeatedly. For each execution, Thread Weight and execution duration are measured. Utilizing quadratic regression to relate Thread Weights to execution durations yields calculation of a, b, and c. To calculate d, e , and f , a number of threads of type Storing are executed concurrently for a number of iterations. For each execution, Thread Weight of each thread and execution duration of concurrent executing of the threads are measured. In procession, 2 metrics for each execution are calculated: Metric 1 = maximum of Thread Weights of the threads By excluding Thread Weight pertinent to Metric 1: Metric 2 = (summation of the remaining Thread Weights)×(the number of the threads subtracting by 1) Utilizing quadratic regression to relate (execution duration - (a(Metric 1)2 + bx Metric 1+ c)) to Metric 2 yields calculation of d,e, and f .
  • 7
    7. Threading Sequence comprises
    • 1)2 + bxMetric 1+ c + d(Metric
    • 2)2 + exMetric 2+ f . To calculate a, b , and c, a thread of type Compute is executed repeatedly. For each execution, Thread Weight and execution duration are measured. Utilizing quadratic regression to relate Thread Weights to execution durations yields calculation of a, b, and c. To calculate d,e , and f , a number of threads of type Compute are executed concurrently for a number of iterations. For each execution, Thread Weight of each thread and execution duration of concurrent executing of the threads are measured. In procession, 2 metrics for each execution are calculated: Metric 1= maximum of Thread Weights of the threads By excluding Thread Weight pertinent to Metric 1: Metric 2 = (summation of the remaining Thread Weights)×(the number of the threads subtracting by 1) Utilizing quadratic regression to relate (execution duration - (a(Metric 1)2 + bx Metric 1+ c)) to Metric 2 yields calculation of d,e, and f .
  • 8
    8. Threading Sequence comprises
    • 1)2 + bxMetric 1+ c + d(Metric
    • 2)2 + exMetric 2+ f. To calculate a, b , and c , a thread of type Transport is executed repeatedly. For each execution, Thread Weight and execution duration are measured. Utilizing quadratic regression to relate Thread Weights to execution durations yields calculation of a, b, and c. To calculate d, e , and f , a number of threads of type Transport are executed concurrently for a number of iterations. For each execution, Thread Weight of each thread and execution duration of concurrent executing of the threads are measured. In procession, 2 metrics for each execution are calculated: Metric 1 = maximum of Thread Weights of the threads By excluding Thread Weight pertinent to Metric 1: Metric 2 = (summation of the remaining Thread Weights)×(the number of the threads subtracting by 1) Utilizing quadratic regression to relate (execution duration - (a(Metric 1)2 + bx Metric 1+ c)) to Metric 2 yields calculation of d, e, and f.
See all 8 independent claims

Description

CA 2956153 2017-05-25 Sequential processing of data starts by fetching data from a repository, proceeds by executing functions on data, and ends by storing the results to a repository. Platform as a Service (PAAS) in Cloud Computing can be utilized to execute the code block of sequential processing of data. Besides, Cloud Computing provides services which can be utilized to acquire space for storing and fetching data. The distinguished sections of sequential processing of data can be executed in separated threads. A thread fetches data from a repository, executes functions on data, or stores data to a repository. Threads fetching data from a repository, threads executing functions on data, or threads storing data to a repository can be executed concurrently. Execution duration for concurrent executing of a number of threads can be estimated utilizing a quadratic equation: a(Metric1)2 + bxMetrici+ c +d(Metric2)2 + exMetric2+ f. To calculate Metric, and Metric2, a floating-point number for every thread is measured for each execution of the threads concurrently. For / execution: = Metric" is the maximum of the floating-point numbers. = By excluding the floating-point number pertinent to Metric', Metric2 is multiplication of summation of the remaining floating-point numbers to the number of threads subtracted by 1. Known values of the quadratic equation are calculated utilizing regression analysis to relate a number of metrics to execution durations measured for single thread execution and concurrent threads execution.CA 2956153 2017-05-25 Cloud Computing Cloud is Data-Centers for delivering computing equipment and resources in form of renting services, e.g. Azure Cloud (Windows Azure), Amazon Cloud (Amazon Web Services), etc. A Cloud Repository is a space in a Cloud for storing and retrieving data which is acquired utilizing a service e.g. Azure SQL Single Database, Azure SQL Elastic Database, Azure Blob Storage, Azure Table Storage, Azure Queue Storage, Amazon Aurora db.t2.small, Amazon Aurora db.r3.2xlarge, Amazon S3, etc. Cloud Server is a set of Computers in a Cloud identified by public IP address which is acquired utilizing a service e.g. Amazon EC2, Azure Cloud Services, etc. Computer in a Cloud Server is dubbed Instance. Instance comprises Virtual Machine, Operating System, and programming platform. Instance type is utilized to differentiate Instances in accord with computing power. E.g. Instance types in Amazon EC2: t2.nano, t2.micro, t2.small, etc. E.g. Instance types in Azure Cloud Services: AO, Al, A2, etc. Cloud Region is a specific geographical location of a Data-Center of a Cloud Computing provider. Threading Sequence Sequential processing of data in an Instance starts by fetching a chunk of data from a Cloud Repository, proceeds by executing functions on the chunk of data, and ends by storing the results (a chunk of data) to a Cloud Repository. The chunk of data fetched in the beginning of sequential processing of data from a Cloud Repository is dubbed inputs. The chunk of data stored in the end of sequential processing of data to a Cloud Repository is dubbed outputs.

CA 2956153 2017-05-25 The sequence of instructions and functions of sequential processing of data is code block. The code block is sectioned to n code blocks: codeBlocko, = = = ,codeBlockn_i. inputs for codeBlocki,1 < i < n ¨ 1 is outputs from codeBlocki_i. codeBlock1,0 < i < n ¨ 1 is a step in a Step Sequence: = codeBlocko is stepo. stepo fetches an inputs from a Cloud Repository. = codeBlocki is step. stepi executes functions on outputs of stepo. = = codeBlockõ, is stepn_2. stepn_, executes functions on outputs of step,....3. = codeBlockn_i is stepn_i. stepii_i stores outputs of stepn_z to a Cloud Repository. Steps of a Step Sequence are indexed from 0 and are ordered by ascending index: stepo, = = = , stemi_i. outputs of a step is inputsto the next step excluding the last step. Threading Sequence is a sequence of threads. Thread in Threading Sequence executes step of Step Sequence. Threading Sequence for a Step Sequence comprising stepo, = = = ,stepn_i: = thread , thread executes step,. If stepi is executed in alternative Instance, a thread dubbed transThreado is ensuing thread to be executed for sending outputs of stepo to thread of stepi. = threadi. threadi executes Step'. If step, is executed in alternative Instance, a thread dubbed transThreadi is ensuing threadi to be executed for sending outputs of stepi to thread of step,. = = threadn_2. threadn_, executes stepn_2.

CA 2956153 2017-05-25 If stepn_i is executed in alternative Instance, a thread dubbed transThreadn_2 is ensuing threadn_2 to be executed for sending outputs of stepn_2 to thread of stenn_i. = threadn_i. threadn_i executes stepn_i. Thread types: = Input. Thread of type Input fetches inputsfrom a Cloud Repository. thread() is of type Input. = Compute. Thread of type Compute executes functions on outputs of the preceding step. threadi, 1 < i n ¨ 2 is of type Compute. = Transport Thread of type Transport sends outputs of a thread of type Input or Compute to thread of the next step. transThread1,0 < i < n ¨ 2 is of type Transport. = Storing. Thread of type Storing stores outputs of the preceding step in a Cloud Repository. threadn_i is of type Storing. thread1,0 < i < n ¨ 1 in Threading Sequence (thread , threadi, =-= ,threadn_i) is of type Input, Compute, or Storing. Threading Sequence doesn't indicate whether a thread of type Transport is ensuing a thread of a Threading Sequence. Threads of a Threading Sequence can be distributed for executing in a number of Instances. And a number of Threading Sequences can be executed together in a number of Instances. Thread Weight Thread Weight is a floating-point number measured for a thread of type Input, Compute, Storing, or Transport for / execution of the thread. Appertaining to a thread of type:

CA 2956153 2017-05-25 = Input. Thread Weight is size of inputs which is fetched from a Cloud Repository in / execution of thread of type Input. = Storing. Tpread Weight is size of outputs of the preceding step which is stored in a Cloud Repository in / execution of thread of type Storing. = Transport. Thread Weight is size of outputs of the step which is sent to thread of the next step in alternative Instance in / execution of thread of type Transport. = Compute. Thread Weight is the number of repeats of the code block for processing the outputs of the preceding step in / execution of thread of type Compute. A variable is a Primitive Data Type or is an array of a Primitive Data Type. A variable of a Primitive Data Type is an array of Primitive Data Type with length 1. Primitive Data Types are Character, Integer, Floating-point number, and Fixed-point number. inputs of thread of type Compute comprises variables. A number of entries retrieved from the variables sufficient for/ repeat of the code block in / execution is reference input. The duration of / repeat of the code block to process reference input in / execution is reference duration. reference input comprises k entries. Size of reference input in Bytes:= 1((lengtho f entry]) x(size of Primitive Data Type pertinent to entryi in byes)) inputs comprises i variables: = Variable 0. In is the length of an array of a Primitive Data Type. Size of the Primitive Data Type is mo in Bytes. CA 2956153 2017-05-25 = Variable i ¨ 1. 4_1 is the length of an array of a Primitive Data Type. Size of the Primitive Data Type is mi_1 in Bytes. Eii1(4xmi) Thread Weight = _______________ Thread Cluster Thread Cluster is a number of threads which are executed concurrently. Thread Clusters are not executed concurrently. In a Thread Cluster: = Threads have identical type. Thread Cluster of type Input is for threads of type Input. Thread Cluster of type Storing is for threads of type Storing. Thread Cluster of type Transport is for threads of type Transport. Thread Cluster of type Compute is for threads of type Compute. = Indexes of threads are odd or even. In odd Thread Cluster, indexes of threads are odd. In even Thread Cluster, indexes of threads are even. = Every thread has Thread Weight. In a Thread Cluster of type Input, Thread Weights have identical unit e.g. Kilo-Bytes. In a Thread Cluster of type Storing, Thread Weights have identical unit e.g. Kilo-Bytes. In a Thread Cluster of type Transport, Thread Weights have identical unit e.g. Kilo-Bytes.

CA 2956153 2017-05-25 To add a thread of type Input to a Thread Cluster of type Input: = Index of the thread and index of each thread of the Thread Cluster are odd. Or index of the thread and index of each thread of the Thread Cluster are even. = The thread and each thread of the Thread Cluster utilize identical Cloud Repository. = The thread and each thread of the Thread Cluster utilize Cloud Repository of identical Region. = The thread and each thread of the Thread Cluster utilize identical programing platform. = The number of fetches accomplished in the thread in / execution and the number of fetches accomplished in each thread of the Thread Cluster in / execution are identical. = Method of fetching utilized in the thread and each thread of the Thread Cluster are identical. To add a thread of type Storing to a Thread Cluster of type Storing: = Index of the thread and index of each thread of the Thread Cluster are odd. Or index of the thread and index of each thread of the Thread Cluster are even. = The thread and each thread of the Thread Cluster utilize identical Cloud Repository. = The thread and each thread of the Thread Cluster utilize Cloud Repository of identical Region. = The thread and each thread of the Thread Cluster utilize identical programing platform. = The number of storings accomplished in the thread in / execution and the number of storings accomplished in each thread of the Thread Cluster in / execution are identical. = Method of storing utilized in the thread and each thread of the Thread Cluster are identical.

CA 2956153 2017-05-25 To add a thread of type Compute to a Thread Cluster of type Compute: = Index of the thread and index of each thread of the Thread Cluster are odd. Or index of the thread and index of each thread of the Thread Cluster are even. = The thread and each thread of the Thread Cluster utilize identical programing platform. = reference duration of the thread and reference duration of each thread in the Thread Cluster are almoSt equal. To add a thread of type Transport to a Thread Cluster of type Transport: = Index of the thread and index of each thread of the Thread Cluster are odd. Or index of the thread and index of each thread of the Thread Cluster are even. = The thread and each thread of the Thread Cluster utilize identical programing platform. = Communication protocol of the thread and Communication protocol of each thread in the Thread Cluster are identical. = The number of queries sent in the thread in / execution and the number of queries sent in each thread of the Thread Cluster in / execution are identical. = Receivers of queries and senders of queries are in the identical Region. Estimation of Execution Duration pertinent to Thread Cluster of Type Input In Thread Cluster, a number of threads bear the highest Thread Weights. A major thread is a thread with highest Thread Weight. By executing the major thread alone, minimum execution duration is measured. By executing the major thread in Thread Cluster, execution of the major thread is slowed

CA 2956153 2017-05-25 , by the threads which are executed concurrently. Execution duration for Thread Cluster is summation of execution duration of the major thread with a delay. A Thread Cluster has n threads. n threads yield n Thread Weights. The metrics: = Metrici Metrici = a maximum in (ThreadWeighto, == = ,ThreadWeightn_i) = Metric2 By excluding of Thread Weight pertinent to Metrici, appertaining to n ¨ 1 Thread Weights: (n-2 Metric2 = X(ThreadWeighti) x(n ¨ 1) i=0 Equation for estimating execution duration of Thread Cluster: a(Metric1)2 + bxMetric 1 + c + d(Metric2)2 + exMetric2 + f To collect data for calculating a, b, c, d, e, and I,- data are stored in a Cloud Repository of pertinence. Chunks of data variant in size are fetched by executing single thread or Thread Cluster. During collecting data: = Method of fetching in single thread and method of fetching in each thread of Thread Cluster are identical and constant. = Numbers of fetches accomplished in single thread in / execution and numbers of fetches accomplished in each thread of Thread Cluster in 1 execution are identical and constant. = Sizes of fetched data in accomplished fetches are variant. = Number of threads in Thread Cluster is variant. = Cloud Repository utilized for fetching chunks of data does not modify. = Instance type in the Instance utilized for collecting data does not modify.

CA 2956153 2017-05-25 = Programming platform in the Instance utilized for collecting data does not modify. = Cloud Repository utilized for fetching chunks of data and the Instance employed for collecting data are in identical Region. E.g. method of fetching: = In rational database, e.g. a fetching in SQL: SKIP a number of rows TAKE a number of rows = In storage, e.g. a fetching in,REST query: GET query for fetching a number of entities E.g. the number of fetches: = In rational database, e.g. fetching in SQL: = The number of fetches is 3: SKIP 100 rows TAKE 5 rows SKIP 10 rows TAKE 50 rows SKIP 1000 rows TAKE 5000 rows = In storage, e.g. fetching in REST query: = The number of fetches is 2: GET query for fetching 10 entities GET query for fetching 45 entities CA 2956153 2017-05-25 W is the number of fetches accomplished in thread', 0 < i < n ¨ 1 of a Thread Cluster in 1 execution. And ThreadWeightij is measured for thread1,0 < i < n ¨ 1 for execution j of the Thread Cluster. Appertaining to / executions of the Thread Cluster: = execution . w-i ThreadWeighto =X (size of data in fetch k) ,0 i n ¨ 1 k=0 = executioni. w-i ThreadWeight14 =1(size of data in fetch k) ,0 i n ¨ 1 k=0 = executiont_2. w-i ThreadWeight1,1_2 =I(size of data in fetch k) ,0 < i < n ¨1 k=0 = executioni_i. w-i ThreadWeighto_i =I(size ofdata in fetch 0,0 < i < n ¨ 1 k=c) To calculate a, b, and c , an Application hosted in an Instance executes a thread repeatedly. For each execution: = The thread fetches a chunk of data from a Cloud Repository. = Execution duration and size of chunk of data (Thread Weight) are measured. Execution duration commences prior to execution of thread and concludes succeeding execution of thread.

CA 2956153 2017-05-25 Appertaining to: = execution , ThreadWeighto and duration are measured. = executioni, ThreadWeighti and durationi are measured. = = executioni_z, ThreadWeighti_z and duration1_2 are measured. = executioni_i, Thread Weight and durationt_i are measured. In procession, utilizing quadratic regression to relate durationi to ThreadWeighti yields calculation of a, b, and c. durationi and ThreadWeighti are measured for execution I, 0 j / ¨ 1. To calculate 4 e, and!; an Application hosted in an Instance executes a Thread Cluster repeatedly. For each execution: = Each thread of Thread Cluster fetches a chunk of data from a Cloud Repository. = Execution duration of Thread Cluster and size of chunk of data fetched in each thread (Thread Weight) of Thread Cluster are measured. Execution duration commences prior to execution of Thread Cluster and concludes succeeding execution of Thread Cluster. Appertaining to: = = execution , no is the number of threads in the Thread Cluster. ThreadWeight0,0,ThreadWeight1,0, = = = , Thread Weight02 0,ThreadWeightno_ are measured Thread Weights for threads in the Thread Cluster. And duration is measured execution duration for the Thread Cluster. metricLo = a maximum in [ThreadW eight0,0,ThreadWeighti3O, = = = ,ThreadWeightno_Lol partialDurationo = a(Metric1,0)2 + bxMetricLo + c

CA 2956153 2017-05-25 . . (n0-2 metric2,0 = (ThreadWeighti,o)) x(no ¨ 1) i=0 = execution', n1 is the number of threads in the Thread Cluster. ThreadW eig ht0.1, ThreadWeig ht", = = = , ThreadWeight -ni-2,1, ThreadWeight -ni-1,1 are measured Thread Weights for threads in the Thread Cluster. And duration" is measured execution duration for the Thread Cluster. metric" = a maximum in [ThreadW eig hto,",ThreadWeight", = = = , ThreadWeight _fli-1,11 partialDuration" = a(Metric1,1)2 + bxMetric" + c (ni-2 metric2,1 = 1 (ThreadWeighti,")) x(ni ¨ 1) i=1:1 = ¨ = execution1_2, n1_2 is the number of threads in the Thread Cluster. ThreadW eig ht0,1_2, = = = ,ThreadWeight -n1_2-2,/-2, ThreadWeight1_2_1,1-2 are measured Thread Weights for threads in the Thread Cluster. And durationi_2 is measured execution duration for the Thread Cluster. metric-1,1_2 =- a maximum in [ThreadW eight0,1_2, = = = ,ThreadWeight _Th_2-1,1-21 , partialDuration1_2 = a(Metrict1_2)2 + bx Metric1,t_2 + c (111_2-2 \ MetriC23_2 = 1 (ThreadWeighto_2) Kni_2 ¨ 1) i=o i = execution1_1, n1_1 is the number of threads in the Thread Cluster. ThreadW eight0,1_1, ThreadWeig ht1,1_1, == = , ThreadWeight -fl1_I-1,i-1 are measured Thread Weights for threads in the Thread Cluster. And durationt_i is measured, execution duration for the Thread Cluster. metricu_i = a maximum in fThreadWeight03_1, = = = ,ThreadWeight -n1_1-1,1-11

CA 2956153 2017-05-25 partialDurationt_i = a(Metric1,1_1)2 + bxMetricti_i + c (n1_1-2 metric2,1_1= 1 (ThreadWeightu_i)) x (nt_, ¨ 1) i=o In procession, utilizing quadratic regression to relate (durationj ¨ partialDurationj) to Metric21 yields calculation of d, e, and I duration], partialDuration], and Metric2,1 are measured or calculated for execution j, 0 <j < 1 ¨ 1. a, b, c, d, e, and! are confined to: = Cloud Repository. Cloud Repository is the Cloud Repository utilized during collecting data to calculate a, 4 c, d, e, and f . To utilize a, b, c, d, e, and! for a Thread Cluster, Cloud Repository utilized by threads in the Thread Cluster is identical to the Cloud Repository employed during collecting data to calculate a, b, c, d, e, and! In addition, the Thread Cluster and the Cloud Repository are in identical Region. = Method of fetching. Method of fetching is the method of fetching utilized during collecting data to calculate a, b, c, d, e, and! To utilize a, b, c, d, e, and f for a Thread Cluster, method of fetching utilized by threads in the Thread Cluster is identical to the method of fetching employed during collecting data to calculate a, b, c, d, e, and! = Number of fetches. Number of fetches is the number of fetches accomplished in each thread in / execution during collecting data to calculate a, 4 c, d, e, and F. To utilize µ7, 4 c, d, e, and! for a Thread Cluster, the number of fetches accomplished in each thread of the Thread Cluster in / execution is identical to the number of fetches accomplished in each thread in / execution during collecting data to calculate a, 4 c, d, e, and f . = Service utilized to acquire Instance. Service utilized to acquire Instance is the Service utilized to acquire Instance during collecting data to calculate a, 4 c, d, e, and f .

CA 2956153 2017-05-25 To utilize a, b, c, d, e, and! for a Thread Cluster, service utilized to acquire Instance executing the Thread Cluster is identical to the service utilized to acquire the Instance during collecting data to calculate a, b, c; ci, e, and!. = Instance type. Instance type is the Instance type in the Instance utilized during collecting data to calculate a, 1, c, d, e, and!. To utilize a, b, c, d, e, and ffor a Thread Cluster, Instance type of the Instance executing the Thread Cluster is identical to the Instance type of the Instance employed during collecting data to calculate a, b, c, d, e, and!. = Programming platform. Programming platform is the programming platform utilized during collecting data to calculate a, b, c, d, e, and!. To utilize a, 4 c, d, e, and f for a Thread Cluster, programming platform executing the Thread Cluster is identical to the programming platform employed during collecting data to calculate a, b, c, d, e, and!. Estimation of Execution Duration pertinent to Thread Cluster of Type Compute In Thread Cluster, a number of threads bear the highest Thread Weights. A major thread is a thread with highest Thread Weight. By executing the major thread alone, minimum execution duration is measured. By executing the major thread in Thread Cluster, execution of the major thread is slowed by the threads which are executed concurrently. Execution duration for Thread Cluster is summation of execution duration of the major thread with a delay. A Thread Cluster has n threads. n threads yield n Thread Weights. The metrics: = Metrici Metrici = a maximum in (ThreadWeighto, = = = ,ThreadWeightri_i). = Metric2 By excluding of Thread Weight pertinent to Metrici, appertaining to n ¨ 1 Thread Weights: CA 2956153 2017-05-25Metric2= ( I(ThreadWeights) x(n ¨ 1) i=o Equation for estimating execution duration of Thread Cluster: a(Metric1)2 + bxMetrici+ c + d(Metric2)2 + exMetric2+ f To collect data for calculating a, b, c, d, e, and 1: code blocks of pertinence are executed in single thread or in Thread Cluster. code blocks of pertinence have almost equal reference duration. During collecting data: = Instance type in the Instance utilized for collecting data does not modify. = Programming platform in the Instance utilized for collecting data does not modify. = reference duration for single thread and each thread of Thread Cluster are almost equal and constant. = Number of repeats of a code block is variant. = Number of threads in Thread Cluster is variant. In thread1,0 < i < n¨ 1 of Thread Cluster: = ri is the number of repeats of code block of pertinence. = ss is size of reference input, Appertaining to / executions of Thread Cluster: = execution . size of inputs of threads ThreadWeighto = rs,0 = ______________________ ,0 < i < n-1 ss,0 = executioni.

CA 2956153 2017-05-25 size of inputs of threadi ThreadWeighti,"= ri,i = _____________________ .0 < i < n ¨ 1 si,i = executiont_2. size of inputs of threadi ThreadWeighti,i_2 = = ________________ , 0 < i < n ¨1 so-z = executiont_". size of inputs of thread, ThreadWeightu_i = rj1 = ________________________ ,0

CA 2956153 2017-05-25 In procession, utilizing quadratic regression to relate duration] to ThreadWeight] yields calculation of a, b, and c. duration] and ThreadWeight] are measured for execution j, 0 j / ¨ 1. To calculate 4 e, and!; an Application hosted in an Instance executes a Thread Cluster repeatedly. For each execution: = Each thread in Thread Cluster repeats a code block and the repeats of code blocks are variant in number. = Execution duration of Thread Cluster and the number of repeats in each thread (Thread Weight) of Thread Cluster are measured. Execution duration commences prior to execution of Thread Cluster and concludes succeeding execution of Thread Cluster. Appertaining to: = execution , no is the number of threads in the Thread Cluster. ThreadWeight0,0,ThreadWeight", = = = ,ThreadWeightno_40,ThreadWeightno_Lo are measured Thread Weights for threads in the Thread Cluster. And duration is measured execution duration for the Thread Cluster. metric" = a maximum in {ThreadW eight ,0,ThreadWeight", = = = ,ThreadW eight-7,0_1,0} partialDuration = a(Metric10)2 + bxMetric" + c (n0-2 metricu = 1(ThreadW eight,m)) x(no ¨ 1) i=o = executioni, n1 is the number of threads in the Thread Cluster. ThreadWeight0,1,ThreadWeight1,1,--- ,ThreadWeight ThreadWeight -ni-1,1 are measured Thread Weights for threads in the Thread Cluster. And durationi is measured execution duration for the Thread Cluster. metricu = a maximum in [ThreadW eight ,1,ThreadWeightLi, = = = ,ThreadWeightni -1,11

CA 2956153 2017-05-25 partialDurationi = a(Metrici,02 + bxMetricLi + c (n1-2 MetriC2,1 = 1 (ThreadW eightij)) x(ni - 1) i=o = ... = execution1_2, n1_2 is the 'number of threads in the Thread Cluster. ThreadWeight0,1_2,- = ,ThreadWeight -711_2-2,1-2,ThreadWeight -ni-z-13-2 are measured Thread Weights for threads in the Thread Cluster. And duration1_2 is measured execution duration for the Thread Cluster. metric1,_2 = a maximum in [ThreadW eight0,1_2, = = = ,ThreadWeightni_2_1,1_21 , partialDuration1_2 = a(Metricti_2)2 + bxMetric1,1_2 + c n/-2-2 m etric2,1_2 = ( 1 (ThreadWei9hti,i_2) x (ni_2 - 1) i=o = executiont_i, n1_1 is the number of threads in the Thread Cluster. ThreadWeight0,1_1,ThreadWeight11_1, = = = ,ThreadWeightn,_1-1,1-1 are measured Thread Weights for threads in the Thread Cluster. And durationt_l is measured execution duration for the Thread Cluster. metricu_i = a maximum in [ThreadW e6hto,i_i, = = = ,ThreadWeight -n1_1-1,/-11partialDurationi_i = a(Metricti_i) + bxMetrici,t_i + c n/-1-2 metric2,1_1 = ( 1 (ThreadWeightij_i) x (ni_i - 1) i=o In procession, utilizing quadratic regression to relate (duration] - partialDuration]) to Metric2J yields calculation of d, e, and I duration ] , partialDuration], and Metric21 are measured or calculated for execution j, 0 < j < / - 1., . CA 2956153 2017-05-25 a, b, c, d, e, and! are confined to: = Service utilized to acquire Instance. Service utilized to acquire Instance is the Service utilized to acquire Instance during collecting data to calculate a, b, c d, e, and f . To utilize a, b, c, d, e, and! for a Thread Cluster, service utilized to acquire Instance executing the Threkl Cluster is identical to the service utilized to acquire the Instance during collecting data to calculate a, b, c, d, e, and f . = Instance type. Instance type is the Instance type in the Instance utilized during collecting data to calculate a, b, c, d, e, and f. To utilize a, b, c, d, e, and f for a Thread Cluster, Instance type of the Instance executing the Thread Cluster is identical to the Instance type of the Instance employed during collecting data to calculate a, b, c, 4 e, and f. = Programming platform. Programming platform is the programming platform utilized during collecting data to calculate a, b, c, 4 e, and f . To utilize a, b, c, d, e, and! for a Thread Cluster, programming platform executing the Thread Cluster is identical to the programming platform employed during collecting data to calculate a, b, c, d, e, and f . = Reference duration. Reference duration is the reference duration utilized during collecting data to calculate a, b, c, d, e, and f . To utilize a, b, c, d, e, and! for a Thread Cluster, reference durations in threads of the Thread Cluster are almost equal to the reference duration of threads which are executed during collecting data to calculate a, b, c, 4 e, and f . Estimation of Execution Duration pertinent to Thread Cluster of Type Transport In Thread Cluster, a number of threads bear the highest Thread Weights. A major thread is a thread with highest Thread Weight. CA 2956153 2017-05-25 By executing the major thread alone, minimum execution duration is measured. By executing the major thread in Thread Cluster, execution of the major thread is slowed by the threads which are executed concurrently. Execution duration for Thread Cluster is summation of execution duration of the major thread with a delay. A Thread Cluster has n threads. n threads yield n Thread Weights. The metrics: = Metric]. Metric]. = a maximum in [ThreadW eight , = == ,ThreadWeightn_i} = Metric2 By excluding of Thread Weight pertinent to Metrici, appertaining to n ¨ 1 Thread Weights:MetTiC2 = ( (ThreadWeighti)) x(n ¨ 1) i=o Equation for estimating execution duration of Thread Cluster: = a(Metric1)2 + bxMetrici + c + d(Metric2)2 + exMetric2 +f To collect data for calculating a, b, c, d, e, and f; an Application hosted in an Instance sends queries variant in sizes utilizing communication protocol of pertinence in single thread or Thread Cluster to an Application hosted in alternative Instance. During collecting data: = Instance type in the Instance hosting the sender Application and instance type in the Instance hosting the receiver Application are identical. The Instance type does not modify. = Service utilized to acquire the Instance hosting sender Application and service utilized to acquire the Instance hosting receiver Application are identical. The service does not modify. = The Instance hosting sender Application and the Instance hosting receiver Application are in identical region.

CA 2956153 2017-05-25 = Programming platforms in the Instances utilized for collecting data are identical and do not modify. = Communication protocol does not modify. = Number of queries sent by single thread in 1 execution and each thread of Thread Cluster in 1 execution are identical and constant. = Sizes of sent queries are variant. = Number of threads in Thread Cluster is variant. E.g. the number of queries: = Communication protocol is UDP: = The number of queries is 2: Open connection Send array of bytes Close connection Open connection Send array of bytes Close connection = Communication protocol is TCP: = The number of queries is 1: Open connection Send array of bytes Close connection z is the number of queries sent in thread, 0 < i < n ¨ 1 of a Thread Cluster in 1 execution. Appertaining to 1 executions of the Thread Cluster:

CA 2956153 2017-05-25 = execution . z-i ThreadWeighto =1(size pf query k) ,0 i n ¨ 1 k=0 = execution". z-i ThreadWeighto =1(size of query k) ,0 i n ¨ 1 k=0 = execution1_2. z-i ThreadWeight1_2 =I(size of query k) , 0 i n ¨ 1 k=0 = executioni_". z-i ThreadWeightu_i =1(size of query k) , 0 i n ¨ 1 k=t) To calculate a, b, and c, a sending Application hosted in an Instance executes thread repeatedly. For each execution: = The thread sends queries to a receiving Application hosted in an alternative Instance. = Execution duration and size of sent queries (Thread Weight) are measured. Execution duration commences prior to execution of thread and concludes succeeding to execution of thread. Appertaining to: = execution , ThreadWeighto and duration are measured. = execution', Thread Weight" and duration' are measured.

CA 2956153 2017-05-25 = = = = = execution1_2, ThreadWeightl_2 and duration1_2 are measured. = executioni_i, ThreadWeighti_i and cturationi_i are measured. In procession, utilizing quadratic regression to relate durationj to ThreadW eightj yields calculation of a, b, and c. duration./ and ThreadWeightj are measured for execution j, 0 j < / ¨ 1. To calculate d, e, and!; a sending Application hosted in an Instance executes Thread Cluster repeatedly. For each execution: = Each thread in Thread Cluster sends queries to a receiving Application hosted in an alternative Instance. = Execution duration of Thread Cluster and size of sent queries in each thread (Thread Weight) of Thread Cluster are measured. Execution duration commences prior to execution of Thread Cluster and concludes succeeding to execution of Thread Cluster. Appertaining to: = execution , no is the number of threads in the Thread Cluster. ThreadWeight ,0,ThreadW eight", = = = ,ThreadW e ight020,ThreadWeight11010 are measured Thread Weights for threads in the Thread Cluster. And duration is measured execution duration for the Thread Cluster. = a maximum in [ThreadWeight0,0,ThreadWeightLo, = = = ,ThreadWeightno_u) partialDurationo = a(Metrici3O)2 + bxMetricLo + c /n0-2 metric2,0 = I(ThreadWeighti,o) x (no ¨ 1) i=o

CA 2956153 2017-05-25 = executioni, n1 is the. number of threads in the Thread Cluster. ThreadW eight0,1, ThreadWeig ht", = = = , ThreadW eight -ni-2,1P Thread Weight,_" are measured Thread Weights for threads in the Thread Cluster. And duration1 is measured execution duration for the Thread Cluster. metric" = a maximum in [ThreadW eight0j, Thread Weight", = . = ,ThreadWeightn1_111 partialDurationi = a(Metric")2 + bxMetric" + c (n1-2 metric2,1 = 1(ThreadW eight")) x (ni ¨ 1) i=o = ¨ = execution1_2, n1_2 is the number of threads in the Thread Cluster. ThreadWeight0,1_2, = = = ,ThreadWeight -ni_2-2,/-2, ThreadW eight -ni_2-1,1-2 a r e measured Thread Weights for threads in the Thread Cluster. And duration1_2 is measured execution duration for the Thread Cluster. , . metric1,1_2 = a maximum in tThreadWeight0,1_2,===, ThreadWeight -711_2-1,1-2} , partialDuration1_2 = a(Metrici,1_2)2 + bxMetric1,1_2 + cmetricm_2 = ( 1 (ThreadWei9hti,i_2) x(n1_2 ¨ 1) i=o = executioni_i, nt_i is the number of threads in the Thread Cluster. ThreadWeight03_1, ThreadWeightm_i, = = = , ThreadW eight -ni_1-1,[-1 are measured Thread Weights for threads in the Thread Cluster. And durationi_, is measured execution duration for the Thread Cluster. metricij_i = a maximum in {ThreadWeig hto,i = == ,ThreadWeigh tiii_i-1,1-1} partialDurationi_i = a(Metricm_02 + bxMetricti_i + c , . CA 2956153 2017-05-25 ni_I-2 metric2,1_1 = ( 1 (ThreadWeighti,i_i) x(ni_i ¨ 1) i=o In procession, utilizing quadratic regression to relate (duration) ¨ partialDurationj) to Itletric24 yields calculation of d, e, and I durationj, partialDurationj, and Metriczj are measured or calculated for execution j, 0 <j < 1 ¨ 1. a, b, c, d, e, and f are confined to: = Number of queries. Number of queries is the number of queries sent in each thread in 1 execution during collecting data to calculate a, b, c, d, e, and f. To utilize a, b, c, d, e, and f for a Thread Cluster, the number of queries sent in each thread of the Thread Cluster in / execution is identical to the number of queries sent in each thread in / execution during collecting data to calculate a, b, c, d, e, and!. = Service utilized to acquire Instance. Service utilized to acquire Instance is the Service utilized to acquire Instance during collecting data to calculate a, b, c, d, e, and!. To utilize a, b, c, d, e, and! for a Thread Cluster, service utilized to acquire Instance executing the Thread Cluster and service utilized to acquire Instance executing receiving Application are identical to the service utilized to acquire Instances during collecting data to calculate a, b, c, d, e, and f . And senders of the queries and receivers of the queries are in identical Region. = Instance type. Instance type is the Instance type in the Instances utilized during collecting data to calculate a, b, c, d, e, and!. To utilize a, b, c, d, e, and ffor a Thread Cluster, Instance type of the Instance executing the Thread Cluster and Instance type of the Instance executing the receiving Application are identical to the Instance type of Instances employed during collecting data to calculate a, b, c, d, e, and f . . . = Programming platform. Programming platform is the programming platform utilized during collecting data to calculate a, b, c, d, e, and I.

CA 2956153 2017-05-25 To utilize a, 6, c d, e, and! for a Thread Cluster, programming platform executing the Thread Cluster and the receiving Application are identical to the programming platform employed during collecting data to calculate a, b, c, d, e, and f. = Communication protocol. Communication protocol is the communication protocol utilized during collecting data to calculate a, b, c, d, e, and!. To utilize a, A c, d, e, and! for a Thread Cluster, communication protocol utilized in threads of the Thread Cluster and the receiving Application are identical to communication protocol employed during collecting data to calculate a, b, c, d, e, and!. Estimation of Execution Duration pertinent to Thread Cluster of Type Storing In Thread Cluster of type Storing, a number of threads bear the highest Thread Weights. A major thread is a thread with highest Thread Weight. By executing the major thread alone, minimum execution duration is measured. By executing the major thread in Thread Cluster, execution of the major thread is slowed by the threads which are executed concurrently. Execution duration for Thread Cluster is summation of execution duration of the major thread with a delay A Thread Cluster has n threads. n threads yield n Thread Weights. The metrics: = Metric]. Metric]. = a maximum in [ThreadWeighto, === , ThreadWeightn_11 = Metricz By excluding of Thread Weight pertinent to Metrici, appertaining to n ¨ 1 Thread Weights: (n-2 Metric2 = X(ThreadWeighti) x(n ¨ 1) i=o

CA 2956153 2017-05-25 Equation pertinent to estimating execution duration for Thread Cluster: a(Metrici)2 + bxMetrici+ c + d(Metric2)2 + exMetric2+ f To collect data for calculating a, 1), c, d e, and I; space is acquired in a Cloud Repository of pertinence. Chunks of data variant in size are stored by executing single thread or Thread Cluster. During collecting data: = Methods of storing in single thread and each thread of Thread Cluster are identical and don't modify. = Numbers of storings accomplished in single thread in / execution and each thread of Thread Cluster in / execution are identical and constant. = Sizes of stored data in accomplished storings are variant. = Cloud Repository utilized for acquiring space does not modify. = Instance type in the Instance utilized for collecting data does not modify. = Programming platform in the Instance utilized for collecting data does not modify. = Cloud Repository utilized for acquiring space and the Instance employed for collecting data are in identical Region. = Number of threads in Thread Cluster is variant. E.g. method of storing: = In rational database, e.g. a storing in SQL: = INSERT a number of rows = UPDATE a number of rows = In storage, e.g. a storing in REST query: = PUT query for updating a number of entities = POST query for inserting a number of entities

CA 2956153 2017-05-25 E.g. the number of storings: = In rational database, e.g. storing in SQL: = The number of storings is 3: INSERT 10 rows INSERT 100 rows INSERT 34 rows = In storage, e.g. storing in REST query: = The number of storings is 2: POST 10 entities POST 45 entities; m is the number of storings accomplished in threadi3O < i < n ¨ 1 of a Thread Cluster in / execution. Appertaining to / executions of the Thread Cluster: = execution . ThreadWeighto =I(size of data in storing k) .0 < i < n ¨ 1 k=0 = executioni. in-1 ThreadWeightij =I(size of data in storing k),0 i < n¨ 1 k=0 = execution1_2.ThreadWeightu_2 =I(size of data in storing k) ,0 < i < n¨ 1 k=0

CA 2956153 2017-05-25 , = executioni_". m-i ThreadWeightij_i =I(size ofdata in storing k) 0 < i n ¨ 1 k=o To calculate a, b, and c, an Application hosted in an Instance executes a thread repeatedly. For each execution: = The thread stores a chunk of data in a Cloud Repository. = Execution duration and size of chunk of data (Thread Weight) are measured. Execution duration commences prior to execution of thread and concludes succeeding execution of thread. , Appertaining to: = execution , ThreadWeighto and duration are measured. = execution', Thread Weight" and durationi are measured. = execution1_2, ThreadWeightt_2 and duration1_2 are measured. = executioni_l, ThreadWeighti_i and durationi_i are measured. In procession, utilizing quadratic regression to relate durationi to ThreadWeighti yields calculation of a, b, and c. durationj and ThreadWeightj are measured for execution I, 0 j < ¨ 1. To calculate d, e, and f, an Application hosted in an Instance executes a Thread Cluster repeatedly. For each execution: = Each thread of Thread Cluster stores a chunk of data in a Cloud Repository. CA 2956153 2017-05-25 = Execution duration of Thread Cluster and size of chunk of data stored in each thread (Thread Weight) of Thread Cluster are measured. Execution duration commences prior to execution of Thread Cluster and concludes succeeding to execution of Thread Cluster. Appertaining to: = execution , no is the number of threads in the Thread Cluster. ThreadWeight0,0,ThreadWeight1,0, = = = , ThreadWeightno ThreadWeightno-to are measured Thread Weights for threads in the Thread Cluster. And duration is measured execution duration for the Thread Cluster. metricLo = a maximum in fThreadWeight0,0,ThreadWeighti,o, = = = , ThreadWeig htno_ partialDurationo = a(Metric1,0)2 + bxMetric1,0 + c (n0-2 metric2,0 = I(ThreadWeighti,o)) x (no ¨ 1) i=o = executioni, ni is the number of threads in the Thread Cluster. Thread Weight01, ThreadW eightu, = = = ,ThreadWeightni_2,1,ThreadWeight -ni-1,1 are measured Thread Weights for threads in the Thread Cluster. And durationi is measured execution duration for the Thread Cluster. metricti = a maximum in [ThreadWeig hto,i,ThreadWeightLi, = = = , ThreadW eightpartialDurationi = a(Metric1,1)2 + 6xMetric" + cmetriczi = I(ThreadWeightu) x(ni ¨ 1) \ i=o = ... = execution1_2, n1_2 is the number of threads in the Thread Cluster. ThreadW eig ht0,1_2, = = = ,ThreadWeightni212 _3 ThreadW eightni_2_ -,-, 13-2

CA 2956153 2017-05-25 are measured Thread Weights for threads in the Thread Cluster. And durationi_2 is measured execution duration for the Thread Cluster. metricm-2 = a maximum in fThreadWeight0,1_2, = == ,ThreadWeight -n1_2-1,1-z}partialDurutioni_z = a(Metricu_2) + bxMetric1,1_2 + c n/-2-2 MetriC23_2 = ( / (ThreadWei9hti,1_2) x(ni_z - 1) i=o = executioni_i, ni_i is the. number of threads in the Thread Cluster. ThreadWeighto,i_i ,ThreadWeightv_i, --- , ThreadW eight --n,_1-1,1-1. are measured Thread Weights for threads in the Thread Cluster. And durationi_i is measured execution duration for the Thread Cluster. metrici,t_i = a maximum in (ThreadWeighto3_1, = = = ,ThreadWeight\ 2 partialDurationt_i = a(Metricti_i) + bxMetricm_i + c /ni_i -2 metric2,1_1 = 1 (ThreadWeighti,i_i) x(ni_i - 1) \ iro In procession, utilizing quadratic regression to relate (durationj ¨ partialDurationj) to Metric21 yields calculation of d, e, and I durationj, partialDurationj, and Metric21 are measured or calculated for execution), 0 < j < I ¨ 1. a, b, c, d, e, and! are confined to:, . = Cloud Repository. Cloud Repository is the Cloud Repository utilized during collecting data to calculate a, b, c, d, e, and f . To utilize a, b, c, d, e, and! for a Thread Cluster, Cloud Repository utilized by threads of the Thread Cluster is identical to the Cloud Repository employed during collecting data to calculate a, b, c, d, e, and f . In addition, Thread Cluster and the Cloud Repository are in identical Region.

CA 2956153 2017-05-25 = Method of storing. Method of storing is the method of stroing utilized during collecting data to calculate a, b c, d, e, and f . To utilize a, b, c, d, e, and [for a Thread Cluster, method of storing employed by each thread of the Thread Cluster is identical to the method of stroing utilized during collecting data to calculate a, b, c, d, e, and f . = Number of stroings. Number of storings is the number of storing accomplished in each thread in / execution during collecting data to calculate a, b, c, d, e, and f . To utilize a, b, c, d, e, and! for a Thread Cluster, the number of storings accomplished in each thread of the Thread Cluster in / execution is identical to the number of storings accomplished in each thread in / execution during collecting data to calculate a, b, c, d, e, and f . = Service utilized to acquire Instance. Service utilized to acquire Instance is the Service utilized to acquire Instance during collecting data to calculate a, b, c, d, e, and f . To utilize a, b, c, d, e, and [for a Thread Cluster, service employed to acquire Instance executing the Thread Cluster is identical to the service utilized to acquire the Instance during collecting data to calculate a, 6, c, d, e, and 1. = Instance type. Instance type is the Instance type in the Instance utilized during collecting data to calculate a, b, c, d, e, and f . To utilize a, b, c, d, e, and! for a Thread Cluster, Instance type of the Instance executing the Thread Cluster is identical to the Instance type of the Instance employed during collecting data to calculate a, b, c, d, e, and f . = Programming platform. Programming platform is the programming platform utilized during collecting data to calculate a, b, c, d, e, and f . To utilize a, b, c, d, e, and! for a Thread Cluster, programming platform executing the Thread Cluster is identical to the programming platform employed during collecting data to calculate a, b, c, ci, e, and f . Estimation of Execution Duration pertinent to a sequence of Thread Clusters A sequence of Thread Clusters:

CA 2956153 2017-05-25 ThreadCluster , ThreadClusteri, = = = ,ThreadClustern_2 , ThreadClustern_i n > 1 A sequence Thread Clusters are executed sequentially and in ascending order. Estimation of execution duration: estimation of execution duration of ThreadClustero + estimation of execution duration of ThreadClusteri + = = = + estimation of execution duration of ThreadClustern_2 + estimation of execution duration of ThreadClustern_i Subsequent to executing Thread Clusters of type Input, Storing, and Compute of a sequence, Thread Clusters of type Transport are executed. Sequences of Thread Clusters are not executed concurrently. Thread of a step is executed in a Thread Cluster of a sequence of Thread Clusters: = If the step has next step, thread of the next step is not executed in the same sequence of Thread Clusters. = If the step has preceding step, thread of the preceding step is not executed in the same sequence of Thread Clusters.

Read more
PatSnap Solutions

Great research starts with great data.

Use the most comprehensive innovation intelligence platform to maximise ROI on research.

Learn More

PatSnap Solutions

PatSnap solutions are used by R&D teams, legal and IP professionals, those in business intelligence and strategic planning roles and by research staff at academic institutions globally.

PatSnap Solutions
Search & Analyze
The widest range of IP search tools makes getting the right answers—and asking the right questions—easier than ever. One click analysis extracts meaningful information on competitors and technology trends from IP data.
Business Intelligence
Gain powerful insights into future technology changes, market shifts and competitor strategies.
Workflow
Manage IP-related processes across multiple teams and departments with integrated collaboration and workflow tools.
Contact Sales