<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article">
 <front>
  <journal-meta>
   <journal-id journal-id-type="publisher-id">
    ojapps
   </journal-id>
   <journal-title-group>
    <journal-title>
     Open Journal of Applied Sciences
    </journal-title>
   </journal-title-group>
   <issn pub-type="epub">
    2165-3917
   </issn>
   <issn publication-format="print">
    2165-3925
   </issn>
   <publisher>
    <publisher-name>
     Scientific Research Publishing
    </publisher-name>
   </publisher>
  </journal-meta>
  <article-meta>
   <article-id pub-id-type="doi">
    10.4236/ojapps.2025.151011
   </article-id>
   <article-id pub-id-type="publisher-id">
    ojapps-140216
   </article-id>
   <article-categories>
    <subj-group subj-group-type="heading">
     <subject>
      Articles
     </subject>
    </subj-group>
    <subj-group subj-group-type="Discipline-v2">
     <subject>
      Biomedical 
     </subject>
     <subject>
       Life Sciences, Chemistry 
     </subject>
     <subject>
       Materials Science, Computer Science 
     </subject>
     <subject>
       Communications, Engineering, Physics 
     </subject>
     <subject>
       Mathematics
     </subject>
    </subj-group>
   </article-categories>
   <title-group>
    Efficient Resource Allocation in Cloud IaaS: A Multi-Objective Strategy for Minimizing Workflow Makespan and Cloud Resource Costs
   </title-group>
   <contrib-group>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Jean Edgard
      </surname>
      <given-names>
       Gnimassoun
      </given-names>
     </name> 
     <xref ref-type="aff" rid="aff1"> 
      <sup>1</sup>
     </xref>
    </contrib>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Dagou Dangui Augustin Sylvain Legrand
      </surname>
      <given-names>
       Koffi
      </given-names>
     </name> 
     <xref ref-type="aff" rid="aff2"> 
      <sup>2</sup>
     </xref>
    </contrib>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Akanza Konan Ricky
      </surname>
      <given-names>
       N’dri
      </given-names>
     </name> 
     <xref ref-type="aff" rid="aff3"> 
      <sup>3</sup>
     </xref>
    </contrib>
   </contrib-group> 
   <aff id="aff1">
    <addr-line>
     aDépartement Informatique et Analyse de Donées, Université de San Pedro, San Pedro, Côte d’Ivoire
    </addr-line> 
   </aff> 
   <aff id="aff2">
    <addr-line>
     aDépartement Informatique, Ecole Supérieure Africaine des Technologies d’Information et de Communication, Abidjan, Côte d’Ivoire
    </addr-line> 
   </aff> 
   <aff id="aff3">
    <addr-line>
     aDépartement Mathématiques et Informatique, Université Alassane Ouattara, Bouaké, Côte d’Ivoire
    </addr-line> 
   </aff> 
   <pub-date pub-type="epub">
    <day>
     07
    </day> 
    <month>
     01
    </month>
    <year>
     2025
    </year>
   </pub-date> 
   <volume>
    15
   </volume> 
   <issue>
    01
   </issue>
   <fpage>
    147
   </fpage>
   <lpage>
    167
   </lpage>
   <history>
    <date date-type="received">
     <day>
      6,
     </day>
     <month>
      December
     </month>
     <year>
      2024
     </year>
    </date>
    <date date-type="published">
     <day>
      23,
     </day>
     <month>
      December
     </month>
     <year>
      2024
     </year> 
    </date> 
    <date date-type="accepted">
     <day>
      23,
     </day>
     <month>
      January
     </month>
     <year>
      2024
     </year> 
    </date>
   </history>
   <permissions>
    <copyright-statement>
     © Copyright 2014 by authors and Scientific Research Publishing Inc. 
    </copyright-statement>
    <copyright-year>
     2014
    </copyright-year>
    <license>
     <license-p>
      This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/
     </license-p>
    </license>
   </permissions>
   <abstract>
    The ease of accessing a virtually unlimited pool of resources makes Infrastructure as a Service (IaaS) clouds an ideal platform for running data-intensive workflow applications comprising hundreds of computational tasks. However, executing scientific workflows in IaaS cloud environments poses significant challenges due to conflicting objectives, such as minimizing execution time (makespan) and reducing resource utilization costs. This study responds to the increasing need for efficient and adaptable optimization solutions in dynamic and complex environments, which are critical for meeting the evolving demands of modern users and applications. This study presents an innovative multi-objective approach for scheduling scientific workflows in IaaS cloud environments. The proposed algorithm, MOS-MWMC, aims to minimize total execution time (makespan) and resource utilization costs by leveraging key features of virtual machine instances, such as a high number of cores and fast local SSD storage. By integrating realistic simulations based on the WRENCH framework, the method effectively dimensions the cloud infrastructure and optimizes resource usage. Experimental results highlight the superiority of MOS-MWMC compared to benchmark algorithms HEFT and Max-Min. The Pareto fronts obtained for the CyberShake, Epigenomics, and Montage workflows demonstrate closer proximity to the optimal front, confirming the algorithm’s ability to balance conflicting objectives. This study contributes to optimizing scientific workflows in complex environments by providing solutions tailored to specific user needs while minimizing costs and execution times.
   </abstract>
   <kwd-group> 
    <kwd>
     Cloud Infrastructure
    </kwd> 
    <kwd>
      Multi-Objective Scheduling
    </kwd> 
    <kwd>
      Resource Cost Optimization
    </kwd> 
    <kwd>
      Resource Utilization
    </kwd> 
    <kwd>
      Scientific Workflows
    </kwd>
   </kwd-group>
  </article-meta>
 </front>
 <body>
  <sec id="s1">
   <title>1. Introduction</title>
   <p>Scientific workflows offer a compelling way to represent the complex orchestration of interdependent computations and have become widely adopted across various scientific fields <xref ref-type="bibr" rid="scirp.140216-1">
     [1]
    </xref>. They enable users to define the different steps required to process the large volumes of data typically generated by scientific experiments and to produce original scientific outcomes. The execution of such data-intensive applications, which often involve hundreds of computational tasks on large-scale distributed infrastructures, is generally managed by a Workflow Management System (WMS) <xref ref-type="bibr" rid="scirp.140216-2">
     [2]
    </xref>. Tasks such as resource selection, data management, and computation scheduling are handled by the WMS, thus shielding the end user from the complexity of these operations.</p>
   <p>For a long time, commodity clusters and computing grids were the preferred infrastructures for running scientific workflows. Clusters, typically hosted and managed by the institution owning the workflow, facilitated resource access, while grids enabled scientists to scale their workflows by pooling resources from multiple institutions. However, with the rise of major providers like Amazon <xref ref-type="bibr" rid="scirp.140216-3">
     [3]
    </xref>, Google <xref ref-type="bibr" rid="scirp.140216-4">
     [4]
    </xref>, and Microsoft <xref ref-type="bibr" rid="scirp.140216-5">
     [5]
    </xref>, Infrastructure as a Service (IaaS) clouds have emerged as strong competitors to clusters and grids. IaaS clouds combine the benefits of both by offering easy access to a virtually unlimited pool of resources. By carefully planning the execution of a workflow, a WMS can dynamically build a compute and storage infrastructure tailored to the workflow’s specific needs, utilizing a customized set of virtual machine instances.</p>
   <p>The description of a scientific workflow is typically independent of the characteristics of the infrastructure on which it will be executed. This provides users with greater flexibility, allowing them to run the same workflow on different infrastructures via the WMS without needing to modify their application. A direct consequence of this flexibility is that dependencies between computational tasks (where data produced by one task is consumed by another) are generally managed through files. Intermediate data is written to disk, and the file may then be transferred over the network to another storage device, where the consuming task will eventually read it.</p>
   <p>In this paper, we propose to take advantage of two key features of a specific family of virtual machine instances provided by Amazon Web Services: a large number of cores and dedicated storage on high-speed SSD drives. By improving data locality, this approach aims to reduce the amount of data transferred over the network during workflow execution, which should have a direct and positive effect on the workflow’s execution time. Additionally, we propose using realistic simulations to design a cloud infrastructure that strikes a good balance between cost and performance. To achieve this, we developed a simulator built on the WRENCH framework <xref ref-type="bibr" rid="scirp.140216-6">
     [6]
    </xref>. WRENCH enables the construction of Workflow Management System (WMS) simulators that are accurate, fast, scalable on a single machine, and require minimal software development effort.</p>
   <p>The main contributions of this article are therefore:</p>
   <p>This paper is organized as follows. Section 2 reviews the related work on scheduling of scientific workflows on IaaS clouds. In Section 3, we describe the platform and application models used in this work. Then, in Section 4, we detail the proposed approach for Multi-Objective Scheduling while Section 5 explains results and discussion. Finally, we conclude this paper and present future work directions in Section 6.</p>
  </sec><sec id="s2">
   <title>2. Related Work</title>
   <p>The rise of cloud computing has transformed the management of scientific workflows, enabling the processing of large volumes of data with flexible and scalable resources. However, task scheduling in a cloud environment remains a major challenge, particularly due to multi-objective constraints such as minimizing makespan (total execution time) and resource usage costs. This review explores recent approaches proposed to address this problem, focusing on heuristic, meta-heuristic, and hybrid algorithms.</p>
   <p>IaaS cloud environments offer flexible and scalable infrastructure but pose significant challenges for the efficient deployment of workflows. Shahid et al. <xref ref-type="bibr" rid="scirp.140216-7">
     [7]
    </xref> developed a multi-objective allocation strategy aimed at balancing execution time (makespan) and resource usage costs. Their approach relies on heuristic algorithms, demonstrating a significant improvement in efficiency compared to classical methods. However, despite its performance, this method does not account for dynamic workload variations, limiting its adaptability. Zhang et al. <xref ref-type="bibr" rid="scirp.140216-8">
     [8]
    </xref> introduced EHEFT-R, an enhancement of the Heterogeneous Earliest Finish Time (HEFT) algorithm designed for multi-objective scheduling in heterogeneous cloud environments. The algorithm incorporates an exploration strategy based on evolutionary techniques, achieving a trade-off between minimizing makespan and optimizing resource utilization. This method stands out for its efficiency in dynamic and complex environments often observed in cloud computing <xref ref-type="bibr" rid="scirp.140216-8">
     [8]
    </xref>. Hussain et al. <xref ref-type="bibr" rid="scirp.140216-9">
     [9]
    </xref> introduce a cost-aware and deadline-constrained scheduling algorithm in a hybrid cloud environment. The focus is on meeting deadlines while minimizing expenses, which is particularly useful for workflows with strict temporal requirements. Simulations show that this approach outperforms traditional algorithms by balancing deadlines and costs. Mangalampalli et al. <xref ref-type="bibr" rid="scirp.140216-10">
     [10]
    </xref> introduced an innovative method leveraging deep reinforcement learning to prioritize and schedule workflows in cloud computing. Their approach combines dynamic modeling with task prioritization based on multi-objective goals. This method demonstrates significant improvements in scheduling accuracy and resource utilization, particularly in complex scenarios requiring rapid adaptability <xref ref-type="bibr" rid="scirp.140216-10">
     [10]
    </xref>.</p>
   <p>Hybrid algorithms combine multiple approaches to leverage their respective strengths. Malti et al. <xref ref-type="bibr" rid="scirp.140216-11">
     [11]
    </xref> proposed a hybrid optimization algorithm integrating evolutionary and metaheuristic techniques for task scheduling in cloud environments. Their solution demonstrated optimal task allocation while reducing operational costs. Similarly, Abualigah and Diabat <xref ref-type="bibr" rid="scirp.140216-12">
     [12]
    </xref> introduced a bio-inspired optimization algorithm based on ant-lion behavior, which excels in complex environments due to its efficient exploration of the search space. These approaches highlight the power of hybrid solutions for scheduling problems, though they often require manual parameter tuning, which may limit their generalizability. Kruekaew and Kimpan <xref ref-type="bibr" rid="scirp.140216-13">
     [13]
    </xref> propose a hybrid approach combining the Artificial Bee Colony (ABC) optimization algorithm and reinforcement learning. The objective is to address the load balancing problem in cloud environments while meeting the goals of minimizing costs and makespan. This hybrid method demonstrates increased efficiency by optimally distributing workloads. The study by Doostali et al. <xref ref-type="bibr" rid="scirp.140216-14">
     [14]
    </xref> presents the CP-PGWO algorithm, combining Critical Path concepts with the Grey Wolf Optimizer to address scheduling challenges. This approach underscores the ability of hybrid algorithms to exploit the structural features of workflows while adapting to workload variations in cloud environments <xref ref-type="bibr" rid="scirp.140216-14">
     [14]
    </xref>. The DE-GWO algorithm <xref ref-type="bibr" rid="scirp.140216-15">
     [15]
    </xref> combines Differential Evolution (DE) optimization and Grey Wolf Optimization (GWO) for scheduling in heterogeneous fog-cloud environments. It aims to simultaneously minimize makespan and cost while optimizing resource allocation between fog and cloud nodes. The results show significant improvements compared to existing algorithms, particularly in environments with limited resources. The Enhanced Artificial Bee Colony (ABC) algorithm, introduced by Zeedan et al. <xref ref-type="bibr" rid="scirp.140216-16">
     [16]
    </xref>, exemplifies the effectiveness of nature-inspired algorithms in workflow scheduling problems. This hybrid approach combines the advantages of bee colony behavior with local search mechanisms, improving convergence toward optimal solutions. ABC is particularly suited for cloud computing environments due to its ability to balance conflicting objectives while ensuring efficient resource utilization <xref ref-type="bibr" rid="scirp.140216-16">
     [16]
    </xref>. Mohammadzadeh and Masdari <xref ref-type="bibr" rid="scirp.140216-17">
     [17]
    </xref> proposed a hybrid approach that combines multi-objective algorithms to optimize scientific workflows in multi-cloud environments. Their model leverages the synergy between local and global search heuristics, yielding robust solutions despite the complexity of tasks distributed across multiple clouds. Calzarossa et al. <xref ref-type="bibr" rid="scirp.140216-18">
     [18]
    </xref> tackled workflow planning under uncertainty, integrating parameters such as deadlines and budgets into a multi-objective approach. Their algorithm showed substantial performance improvements in unpredictable resource conditions, emphasizing the importance of resilience in cloud computing environments. Konjaang and Xu proposed the MOWOS (Multi-Objective Workflow Optimization Strategy), which applies optimization based on probabilistic models <xref ref-type="bibr" rid="scirp.140216-19">
     [19]
    </xref>. Their study demonstrated that MOWOS effectively minimizes gaps between theoretical and practical workflow performance by better modeling task and resource uncertainties. Qin et al. <xref ref-type="bibr" rid="scirp.140216-20">
     [20]
    </xref> introduced a reliability-focused multi-objective memetic algorithm for multi-cloud systems. Their approach balances the trade-off between makespan minimization and reliability maximization by combining global exploration mechanisms with local adjustments to enhance solution quality. Belgacem and Beghdad-Bey <xref ref-type="bibr" rid="scirp.140216-21">
     [21]
    </xref> focused on the trade-off between makespan and execution costs of workflows in the cloud. Their model simultaneously optimizes these objectives using a heuristic method tailored for highly heterogeneous environments. Modified genetic algorithms integrate adaptive techniques to address uncertainties in cloud environments. Rizvi et al. <xref ref-type="bibr" rid="scirp.140216-22">
     [22]
    </xref> proposed an approach incorporating fuzzy logic to dynamically adjust the parameters of a genetic algorithm. This improves makespan and reduces costs under changing conditions. A key strength of this method lies in its ability to adapt to unforeseen workload variations, though its increased algorithmic complexity may pose challenges for implementation in large-scale systems.</p>
   <p>The integration of multiple metaheuristics into a single optimization method represents an emerging trend. Thekkepuryil et al. <xref ref-type="bibr" rid="scirp.140216-23">
     [23]
    </xref> developed an approach that combines Genetic Algorithms (GA) with Particle Swarm Optimization (PSO). This hybrid method enhances the exploration and exploitation of the search space, leading to more efficient resource utilization and reduced workflow execution times. Despite these advantages, implementing such algorithms can require significant effort in terms of design and computational complexity. Cai et al. <xref ref-type="bibr" rid="scirp.140216-24">
     [24]
    </xref> introduce a bi-level evolutionary algorithm for data-intensive scientific workflows. This multitasking algorithm allocates resources while considering task priorities and optimizing costs and deadlines. The results demonstrate increased efficiency for complex workflows requiring intensive data management.</p>
   <p>Workflow scheduling in cloud computing remains an active area of research, with diverse approaches ranging from heuristics to hybrid algorithms incorporating learning techniques. However, challenges related to the dynamic nature of cloud environments and multi-objective trade-offs demand new perspectives. The proposed work aims to address these gaps by leveraging innovative techniques and expanded criteria, thereby enhancing the capabilities of modern cloud systems.</p>
   <p>The works analyzed in the literature review show a diversity of approaches to solve the multi-objective optimization problem in workflow scheduling. Each study proposes specific algorithms adapted to particular contexts, such as cloud, multi-cloud, or fog-cloud environments, focusing on various objectives, such as minimizing makespan, costs, or load balancing. However, these contributions also present recurring limitations, particularly in terms of dynamic adaptability, scalability, or management of complex environments. To better understand the strengths and weaknesses of these methods, the following synthesis summarizes the main characteristics of the approaches studied in <xref ref-type="table" rid="table1">
     Table 1
    </xref>.</p>
   <p>
    <xref ref-type="bibr" rid="scirp.140216-"></xref>Table 1. Comparative multi-objective workflow scheduling in cloud environments.</p>
   <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">Reference</p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Algorithm</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Method</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Limitations</p></td> 
    </tr> 
    <tr> 
     <td class="custom-top-td acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-7">
        [7]
       </xref></p></td> 
     <td class="custom-top-td acenter" width="31.97%"><p style="text-align:center">Multi-Objective Workflow Allocation Strategy</p></td> 
     <td class="custom-top-td acenter" width="27.80%"><p style="text-align:center">Heuristic approach</p></td> 
     <td class="custom-top-td acenter" width="30.52%"><p style="text-align:center">Does not handle dynamic environments; lacks in-depth cost analysis</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-8">
        [8]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">EHEFT-R</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Extension of HEFT with multi-objective criteria</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Limited scalability in complex multi-cloud environments</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-9">
        [9]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Deadline-Constrained Cost-Aware Algorithm</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Hybrid optimization based on deadlines and cost constraints</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Limited optimization for data-intensive workflows</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-10">
        [10]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Multi-Objective Prioritized Scheduling (A3C-based)</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Deep reinforcement learning (A3C)</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Performance depends heavily on the quality of training data</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-11">
        [11]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Hybrid Multi-Objective Algorithm</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Hybrid metaheuristic</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">High algorithmic complexity; difficult to apply in real-time environments</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-12">
        [12]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Hybrid Antlion Optimization Algorithm</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Bio-inspired algorithms (Antlion + heuristic strategies)</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Lacks dynamic adaptation to resource changes</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-13">
        [13]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Hybrid ABC Algorithm with Reinforcement Learning</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Bio-inspired (Artificial Bee Colony, ABC) + reinforcement learning</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Limited efficiency for highly complex workflows</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-14">
        [14]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">CP-PGWO</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Critical path + Grey Wolf Optimization</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Requires frequent manual adjustments for non-standard workflows</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-15">
        [15]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">DE-GWO</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Differential Evolution + Grey Wolf Optimization</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Limited performance for unexpected workload surges</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-16">
        [16]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Enhanced Hybrid ABC Algorithm</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Artificial Bee Colony + multi-objective optimization</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Does not account for multi-cloud environments</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-17">
        [17]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Hybrid Multi-Objective Algorithm</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Hybrid methodology for multi-cloud environments</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Limited optimization for workflows with strict deadline constraints</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-18">
        [18]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Deadline-Budget Workflow Optimization</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Bi-objective optimization (deadline + budget)</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Highly sensitive to uncertainty in cloud resources</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-19">
        [19]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">MOWOS (Multi-Objective Workflow Optimization Strategy)</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Multi-objective approach for cloud environments</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Simplified approach, lacks adaptability for real-time workflows</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-20">
        [20]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Reliability-Aware Multi-Objective Memetic Algorithm</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Memetic metaheuristic</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Moderate performance for data-intensive workflows</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-21">
        [21]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Trade-off Between Makespan and Cost</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Multi-objective optimization</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Does not handle dynamic workloads</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-22">
        [22]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Fuzzy Adaptive Genetic Algorithm</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Genetic algorithm + fuzzy logic</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Increased complexity as the number of tasks grows</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-23">
        [23]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Meta-Heuristic Based Hybrid Optimization</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Hybrid metaheuristic</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Suboptimal results for evolving multi-cloud environments</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="9.70%"><p style="text-align:center">
       <xref ref-type="bibr" rid="scirp.140216-24">
        [24]
       </xref></p></td> 
     <td class="acenter" width="31.97%"><p style="text-align:center">Bi-Level Evolutionary Algorithm</p></td> 
     <td class="acenter" width="27.80%"><p style="text-align:center">Bi-level multitask evolutionary optimization</p></td> 
     <td class="acenter" width="30.52%"><p style="text-align:center">Requires high computational resources</p></td> 
    </tr> 
   </table>
  </sec><sec id="s3">
   <title>3. Platforms and Applications Models</title>
   <p>In this study, we design our platform model based on a standard IaaS cloud setup, deploying various virtual machine (VM) instances across physical servers within a single datacenter. Our focus is on VMs comparable to Amazon EC2 M5 instances, particularly the M5d series, which, unlike standard M5 instances relying on Amazon Elastic Block Storage (EBS), feature local NVMe SSD storage. <xref ref-type="table" rid="table2">
     Table 2
    </xref> provides the specifications of the M5d instances used.</p>
   <p>The M5d instance series offers virtual cores (vCPUs) ranging from 2 to 96, with a consistent memory allocation of 4 GiB per core. These instances are typically deployed on nodes equipped with Intel Xeon Platinum 8000 series processors. A unique feature of M5d instances is the inclusion of high-speed, block-level SSD storage directly linked to the instance’s lifecycle. Our study leverages this fast storage, shared among but exclusive to the instance’s vCPUs, to store intermediate files generated during workflow execution. This approach minimizes data transfers across the network for tasks assigned to the same VM, with only the workflow’s input and output files stored on an external storage node.</p>
   <p>Network bandwidth between instances and EBS varies by instance size. We assume that only the largest instances (48, 64, and 96 vCPUs), which can occupy a full node, are assured bandwidths of 10, 20, and 25 Gbps, respectively. For smaller instances (2 to 32 cores), the bandwidth is proportional to the number of cores, allocated at 208.33 Mbps per core. All VMs deployed for a specific workflow are interconnected through a single switch.</p>
   <p>For M5d instances, the VM-to-EBS connection is established via a dedicated network link, integrated into our simulation environment. We assume that the network bandwidth between a VM and EBS is proportional to the number of cores for VMs with up to 32 cores, estimated at 218.75 Mbps per core.</p>
   <p>The costs indicated, in dollars per hour, correspond to on-demand Linux instances in the US-East (Ohio) region as of the time of writing this article.</p>
   <p>
    <xref ref-type="bibr" rid="scirp.140216-"></xref>Table 2. Characteristics of the AWS M5d instances.</p>
   <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
     <td class="custom-bottom-td acenter" width="12.12%"><p style="text-align:center">Model</p></td> 
     <td class="custom-bottom-td acenter" width="8.22%"><p style="text-align:center">vCPU</p></td> 
     <td class="custom-bottom-td acenter" width="9.59%"><p style="text-align:center">Memory (GiB)</p></td> 
     <td class="custom-bottom-td acenter" width="21.21%"><p style="text-align:center">Instance Storage (GiB)</p></td> 
     <td class="custom-bottom-td acenter" width="16.29%"><p style="text-align:center">Network Bandwidth (Gbps)</p></td> 
     <td class="custom-bottom-td acenter" width="16.29%"><p style="text-align:center">EBS Bandwidth (Mbps)</p></td> 
     <td class="custom-bottom-td acenter" width="16.30%"><p style="text-align:center">Cost</p><p style="text-align:center">($ per Hour)</p></td> 
    </tr> 
    <tr> 
     <td class="custom-top-td acenter" width="12.12%"><p style="text-align:center">m5d.large</p></td> 
     <td class="custom-top-td acenter" width="8.22%"><p style="text-align:center">2</p></td> 
     <td class="custom-top-td acenter" width="9.59%"><p style="text-align:center">8</p></td> 
     <td class="custom-top-td acenter" width="21.21%"><p style="text-align:center">1 × 75 NVMe SSD</p></td> 
     <td class="custom-top-td acenter" width="16.29%"><p style="text-align:center">Up to 10</p></td> 
     <td class="custom-top-td acenter" width="16.29%"><p style="text-align:center">Up to 3,500</p></td> 
     <td class="custom-top-td acenter" width="16.30%"><p style="text-align:center">0.113</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="12.12%"><p style="text-align:center">m5d.xlarge</p></td> 
     <td class="acenter" width="8.22%"><p style="text-align:center">4</p></td> 
     <td class="acenter" width="9.59%"><p style="text-align:center">16</p></td> 
     <td class="acenter" width="21.21%"><p style="text-align:center">1 × 150 NVMe SSD</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">Up to 10</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">Up to 3,500</p></td> 
     <td class="acenter" width="16.30%"><p style="text-align:center">0.226</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="12.12%"><p style="text-align:center">m5d.2xlarge</p></td> 
     <td class="acenter" width="8.22%"><p style="text-align:center">8</p></td> 
     <td class="acenter" width="9.59%"><p style="text-align:center">32</p></td> 
     <td class="acenter" width="21.21%"><p style="text-align:center">1 × 300 NVMe SSD</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">Up to 10</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">Up to 3,500</p></td> 
     <td class="acenter" width="16.30%"><p style="text-align:center">0.452</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="12.12%"><p style="text-align:center">m5d.4xlarge</p></td> 
     <td class="acenter" width="8.22%"><p style="text-align:center">16</p></td> 
     <td class="acenter" width="9.59%"><p style="text-align:center">64</p></td> 
     <td class="acenter" width="21.21%"><p style="text-align:center">2 × 300 NVMe SSD</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">Up to 10</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">3,500</p></td> 
     <td class="acenter" width="16.30%"><p style="text-align:center">0.904</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="12.12%"><p style="text-align:center">m5d.8xlarge</p></td> 
     <td class="acenter" width="8.22%"><p style="text-align:center">32</p></td> 
     <td class="acenter" width="9.59%"><p style="text-align:center">128</p></td> 
     <td class="acenter" width="21.21%"><p style="text-align:center">2 × 600 NVMe SSD</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">10</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">5,000</p></td> 
     <td class="acenter" width="16.30%"><p style="text-align:center">1.808</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="12.12%"><p style="text-align:center">m5d.12xlarge</p></td> 
     <td class="acenter" width="8.22%"><p style="text-align:center">48</p></td> 
     <td class="acenter" width="9.59%"><p style="text-align:center">192</p></td> 
     <td class="acenter" width="21.21%"><p style="text-align:center">2 × 900 NVMe SSD</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">10</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">7,000</p></td> 
     <td class="acenter" width="16.30%"><p style="text-align:center">2.712</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="12.12%"><p style="text-align:center">m5d.16xlarge</p></td> 
     <td class="acenter" width="8.22%"><p style="text-align:center">64</p></td> 
     <td class="acenter" width="9.59%"><p style="text-align:center">256</p></td> 
     <td class="acenter" width="21.21%"><p style="text-align:center">4 × 600 NVMe SSD</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">20</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">10,000</p></td> 
     <td class="acenter" width="16.30%"><p style="text-align:center">3.616</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="12.12%"><p style="text-align:center">m5d.24xlarge</p></td> 
     <td class="acenter" width="8.22%"><p style="text-align:center">96</p></td> 
     <td class="acenter" width="9.59%"><p style="text-align:center">384</p></td> 
     <td class="acenter" width="21.21%"><p style="text-align:center">4 × 900 NVMe SSD</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">25</p></td> 
     <td class="acenter" width="16.29%"><p style="text-align:center">14,000</p></td> 
     <td class="acenter" width="16.30%"><p style="text-align:center">5.424</p></td> 
    </tr> 
   </table>
   <p>The scientific workflows we aim to schedule are modeled as Directed Acyclic Graphs (DAGs), denoted as 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mi>
        G 
      </mi> 
      <mo>
        = 
      </mo> 
      <mrow> 
       <mo>
         { 
       </mo> 
       <mrow> 
        <mi>
          T 
        </mi> 
        <mo>
          , 
        </mo> 
        <mi>
          ℰ 
        </mi> 
       </mrow> 
       <mo>
         } 
       </mo> 
      </mrow> 
     </mrow> 
    </math>, where 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mi>
        T 
      </mi> 
      <mo>
        = 
      </mo> 
      <mrow> 
       <mo>
         { 
       </mo> 
       <mrow> 
        <msup> 
         <mi>
           t 
         </mi> 
         <mi>
           i 
         </mi> 
        </msup> 
        <mo>
          | 
        </mo> 
        <mi>
          i 
        </mi> 
        <mo>
          = 
        </mo> 
        <mn>
          1 
        </mn> 
        <mo>
          , 
        </mo> 
        <mo>
          ⋯ 
        </mo> 
        <mo>
          , 
        </mo> 
        <mi>
          T 
        </mi> 
       </mrow> 
       <mo>
         } 
       </mo> 
      </mrow> 
     </mrow> 
    </math> represents the set of vertices corresponding to the computational tasks of the workflow, and 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mi>
        ℰ 
      </mi> 
      <mo>
        = 
      </mo> 
      <mrow> 
       <mo>
         { 
       </mo> 
       <mrow> 
        <msup> 
         <mi>
           e 
         </mi> 
         <mrow> 
          <mi>
            i 
          </mi> 
          <mo>
            , 
          </mo> 
          <mi>
            j 
          </mi> 
         </mrow> 
        </msup> 
        <mo>
          | 
        </mo> 
        <mrow> 
         <mo>
           ( 
         </mo> 
         <mrow> 
          <mi>
            i 
          </mi> 
          <mo>
            , 
          </mo> 
          <mi>
            j 
          </mi> 
         </mrow> 
         <mo>
           ) 
         </mo> 
        </mrow> 
        <mo>
          ∈ 
        </mo> 
        <mrow> 
         <mo>
           { 
         </mo> 
         <mrow> 
          <mn>
            1 
          </mn> 
          <mo>
            , 
          </mo> 
          <mo>
            ⋯ 
          </mo> 
          <mo>
            , 
          </mo> 
          <mi>
            T 
          </mi> 
         </mrow> 
         <mo>
           } 
         </mo> 
        </mrow> 
        <mo>
          × 
        </mo> 
        <mrow> 
         <mo>
           { 
         </mo> 
         <mrow> 
          <mn>
            1 
          </mn> 
          <mo>
            , 
          </mo> 
          <mo>
            ⋯ 
          </mo> 
          <mo>
            , 
          </mo> 
          <mi>
            T 
          </mi> 
         </mrow> 
         <mo>
           } 
         </mo> 
        </mrow> 
       </mrow> 
       <mo>
         } 
       </mo> 
      </mrow> 
     </mrow> 
    </math> is the set of edges between these vertices, indicating either data dependencies (i.e., file transfers) or control flows between tasks. We focus on workflows consisting of numerous sequential tasks that run on a single core, reflecting the structure of real-world scientific applications. Each task within the workflow has an estimated execution time, requires specific input files to start, and produces output files upon completion. To evaluate our contributions, we consider three workflow applications from the Pegasus Workflow Gallery <xref ref-type="bibr" rid="scirp.140216-25">
     [25]
    </xref>. Specifically, we use synthetic workflows generated by the Workflow Generator Toolkit <xref ref-type="bibr" rid="scirp.140216-26">
     [26]
    </xref>, which resemble those used in real-world scientific applications but with a higher task count. The primary characteristics of these applications are presented in <xref ref-type="table" rid="table3">
     Table 3
    </xref>, and their structures are illustrated in <xref ref-type="fig" rid="fig1">
     Figure 1
    </xref>.</p>
   <p>
    <xref ref-type="bibr" rid="scirp.140216-"></xref>Table 3. Some characteristics of used workflows.</p>
   <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
     <td class="custom-bottom-td acenter" width="24.99%"><p style="text-align:center">Workflow</p></td> 
     <td class="custom-bottom-td acenter" width="25.01%"><p style="text-align:center">Tasks</p></td> 
     <td class="custom-bottom-td acenter" width="24.99%"><p style="text-align:center">Input Files Size (GB)</p></td> 
     <td class="custom-bottom-td acenter" width="25.01%"><p style="text-align:center">Total Files Size (GB)</p></td> 
    </tr> 
    <tr> 
     <td class="custom-top-td acenter" width="24.99%"><p style="text-align:center">CyberShake</p></td> 
     <td class="custom-top-td acenter" width="25.01%"><p style="text-align:center">1000</p></td> 
     <td class="custom-top-td acenter" width="24.99%"><p style="text-align:center">150.76</p></td> 
     <td class="custom-top-td acenter" width="25.01%"><p style="text-align:center">400.39</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="24.99%"><p style="text-align:center">Epigenomics</p></td> 
     <td class="acenter" width="25.01%"><p style="text-align:center">997</p></td> 
     <td class="acenter" width="24.99%"><p style="text-align:center">1217.72</p></td> 
     <td class="acenter" width="25.01%"><p style="text-align:center">1230.93</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="24.99%"><p style="text-align:center">Montage</p></td> 
     <td class="acenter" width="25.01%"><p style="text-align:center">1000</p></td> 
     <td class="acenter" width="24.99%"><p style="text-align:center">0.65</p></td> 
     <td class="acenter" width="25.01%"><p style="text-align:center">17.32</p></td> 
    </tr> 
   </table>
   <fig id="fig1" position="float">
    <label>Figure 1</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.140216-"></xref>Figure 1. Structure of the used workflows (<xref ref-type="bibr" rid="scirp.140216-http://pegasus.is">
       http://pegasus.isi.edu).
      </xref></title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312900-rId20.jpeg?20250126025327" />
   </fig>
  </sec><sec id="s4">
   <title>4. Proposed Approach for Multi-Objective Scheduling</title>
   <p>To generate the different platforms and avoid wasting resources, i.e. avoid leasing resources that will not be used, the number of tasks that can be executed in parallel for each of the workflows is determined. To do this, the platform is oversized, i.e. this platform has as many cores as there are tasks in the workflow. In the case of the workflows used in this study, there are 1000 tasks, so the platform with 1000 cores is considered. This allowed to determine the total number of cores that could be used in parallel for each of the workflows. Thus, for CyberShake, 374 cores are used in parallel while for Epigenomics and Montage it is respectively 246 and 662 cores used in parallel. This preliminary study will be used in following section in order to determine the limit of platforms to be used for each workflow in experiments. For each workflow, we consider infrastructures where we vary (i.e. increase) the maximum number of cores per VM (from 2 cores to 96 cores maximum). For a total number of cores to be used, we generate platforms with 2 cores per VM, 4 cores per VM, ..., 96 cores per VM. The platforms composed of 2 cores per VM provide poor execution times compared to platforms of 32 cores per VM and they themselves provide poor execution times compared to platforms of 96 cores per VM. The increasing of the total number of cores per VM provides good execution times. It is for this reason that this study favor large VMs (i.e. VMs with several cores) because these VMs can execute several tasks in parallel and considerably reducing the makespan.</p>
   <sec id="s4_1">
    <title>4.1. Makespan Minimization Approach</title>
    <p>Our primary focus is on workflows consisting of a substantial number of sequential tasks, each running on a single core (a pattern frequently observed in real-world scientific applications). Each task in the workflow has a predefined or estimated duration, requires specific input files to start, and generates output files upon completion.</p>
    <p>To represent the input and output files for a given task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math>, we use the notation 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         I 
       </mi> 
       <mi>
         n 
       </mi> 
       <mi>
         p 
       </mi> 
       <mi>
         u 
       </mi> 
       <msubsup> 
        <mi>
          t 
        </mi> 
        <mi>
          k 
        </mi> 
        <mi>
          i 
        </mi> 
       </msubsup> 
      </mrow> 
     </math> for input files and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         O 
       </mi> 
       <mi>
         u 
       </mi> 
       <mi>
         t 
       </mi> 
       <mi>
         p 
       </mi> 
       <mi>
         u 
       </mi> 
       <msubsup> 
        <mi>
          t 
        </mi> 
        <mi>
          k 
        </mi> 
        <mi>
          i 
        </mi> 
       </msubsup> 
      </mrow> 
     </math> for output files, where 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        k 
      </mi> 
     </math> denotes the file index.</p>
    <p>When an output file generated by one task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> is needed as an input by another task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          j 
        </mi> 
       </msup> 
      </mrow> 
     </math>, this establishes a data dependency between 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          j 
        </mi> 
       </msup> 
      </mrow> 
     </math>, represented by the 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          e 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msup> 
      </mrow> 
     </math>. Furthermore, there are input files that are not produced by any tasks within the workflow; these are referred to as the workflow’s entry files and serve as the starting point for its execution.</p>
    <p>Conversely, the output files that are not required by any subsequent tasks in the workflow are referred to as the exit files. To aid in the scheduling process, two important quantities are defined for each task in the workflow. These metrics are essential for making effective scheduling decisions: the Local Input Volume (LIV) of task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> on machine 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <msub> 
        <mi>
          m 
        </mi> 
        <mi>
          k 
        </mi> 
       </msub> 
      </mrow> 
     </math>, denoted as 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         L 
       </mi> 
       <mi>
         I 
       </mi> 
       <msubsup> 
        <mi>
          V 
        </mi> 
        <mi>
          k 
        </mi> 
        <mi>
          i 
        </mi> 
       </msubsup> 
      </mrow> 
     </math>, represents the total size of the input files required by task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> that are locally available on 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <msub> 
        <mi>
          m 
        </mi> 
        <mi>
          k 
        </mi> 
       </msub> 
      </mrow> 
     </math>; similarly, the Local Output Volume (LOV) of 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> on machine 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <msub> 
        <mi>
          m 
        </mi> 
        <mi>
          k 
        </mi> 
       </msub> 
      </mrow> 
     </math>, denoted as 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         L 
       </mi> 
       <mi>
         O 
       </mi> 
       <msubsup> 
        <mi>
          V 
        </mi> 
        <mi>
          k 
        </mi> 
        <mi>
          i 
        </mi> 
       </msubsup> 
      </mrow> 
     </math>, represents the cumulative size of the output files generated by task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math>. These output files are needed by the successors of task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math>, and the successors are also scheduled on 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <msub> 
        <mi>
          m 
        </mi> 
        <mi>
          k 
        </mi> 
       </msub> 
      </mrow> 
     </math>. If a file is used by multiple successors, its size is counted as many times as there are successors. The LIV of an entry task and the LOV of an exit task are set to zero by definition.</p>
    <p>During workflow execution, all intermediate files (those generated by one task and consumed by another) are stored locally on the SSD storage of one or more machines. In contrast, the workflow’s entry and exit files are stored on the Elastic Block Store (EBS) service, accessible to all machines participating in the workflow. The time required to transfer a file between machines includes the time to read the file from the source machine’s disk, the network transfer duration, and the time to write the file to the destination machine’s disk.</p>
    <p>The goal of this algorithm is to minimize the total execution time (makespan) by considering both the parallel execution of tasks and the reduction of data transfers across the network. Although the study does not explicitly account for data transfer time, the algorithm is designed to minimize network transfers as much as possible. However, completely avoiding these transfers is often unfeasible due to the complexity of task dependencies.</p>
    <p>The algorithm starts by creating a sorted scheduling list that includes all tasks in the workflow (lines 1 - 2), ordered by their bottom-level values in descending order. The rank of a task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math>, denoted 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         R 
       </mi> 
       <mi>
         a 
       </mi> 
       <mi>
         n 
       </mi> 
       <msup> 
        <mi>
          k 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math>, is the length of the longest path from 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> to the end of the workflow. This rank includes the estimated duration of all tasks along this path, including 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math>. Following the approach in <xref ref-type="bibr" rid="scirp.140216-27">
      [27]
     </xref>, we also account for the estimated data transfer costs when computing the rank values of tasks. This prioritization ensures that the most critical tasks are given higher priority, while also respecting the dependencies between tasks. Next, the algorithm assigns an initial mapping for each task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> in the set 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
        T 
      </mi> 
     </math> (lines 3-7). The chosen virtual machine 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <mi>
         m 
       </mi> 
      </mrow> 
     </math> from the set 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         V 
       </mi> 
       <mi>
         M 
       </mi> 
      </mrow> 
     </math> is the one that: (i) minimizes the start time of 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> and (ii) maximizes the volume of input files already stored locally for 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math>. The reasoning behind this is that when multiple virtual machines can start 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> at the same time, the algorithm favors the machine that reduces data transfers over the network, thus improving overall efficiency. Since all the virtual machine instances in consideration are multi-core, scheduling a task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> on a machine 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <mi>
         m 
       </mi> 
      </mrow> 
     </math> requires maintaining a local schedule within the virtual machine. To optimize the use of the available cores, each virtual machine is managed similarly to how a job and resource manager would handle tasks. Keeping track of the number of processors available on each virtual machine is essential for determining the earliest possible start time for a new task on that machine (i.e., 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         s 
       </mi> 
       <msubsup> 
        <mi>
          t 
        </mi> 
        <mi>
          k 
        </mi> 
        <mi>
          i 
        </mi> 
       </msubsup> 
      </mrow> 
     </math>). Once 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <mi>
         m 
       </mi> 
      </mrow> 
     </math> is selected for the execution of 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math>, the number of processors available on 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <mi>
         m 
       </mi> 
      </mrow> 
     </math> is updated accordingly (line 6).</p>
    <p>The workflow is processed level by level, from the bottom to the top (lines 8–40). This approach is motivated by the fact that, during the initial top-to-bottom placement, only the data volume from a task’s direct predecessors can be considered. It is not feasible to account for the data locality required by a task’s direct descendants, as their placements have not yet been established. Consequently, this can result in avoidable data transfers.</p>
    <p>Level 0 is defined as the topmost level of the Directed Acyclic Graph (DAG), containing all entry tasks of the workflow. Each subsequent task’s level is recursively calculated as the maximum level of its predecessors plus one. The total number of levels in the workflow is denoted by L.</p>
    <p>We begin by saving the current start time 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mmultiscripts> 
        <mi>
          s 
        </mi> 
        <mprescripts /> 
        <mi>
          c 
        </mi> 
        <mrow></mrow> 
       </mmultiscripts> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> and the current mapping 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <msup> 
        <mi>
          m 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> for each task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> in 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          T 
        </mi> 
        <mi>
          l 
        </mi> 
       </msup> 
      </mrow> 
     </math> (lines 11-12). Next, we calculate the local volume 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         L 
       </mi> 
       <msubsup> 
        <mi>
          V 
        </mi> 
        <mi>
          k 
        </mi> 
        <mi>
          i 
        </mi> 
       </msubsup> 
      </mrow> 
     </math> for task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> on machine 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <msub> 
        <mi>
          m 
        </mi> 
        <mi>
          k 
        </mi> 
       </msub> 
      </mrow> 
     </math> (lines 13-15). Afterward, we store the local volume for the current mapping of 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> (line 16) before canceling the current mapping (line 17).</p>
    <p>Canceling the mapping of all the tasks at a given level creates idle processors of different machines. These processors can be leveraged to enhance data locality by “migrating” certain tasks from one machine to another. The conditions for migrating a task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> from its previous mapping to a new mapping on 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         v 
       </mi> 
       <msub> 
        <mi>
          m 
        </mi> 
        <mi>
          k 
        </mi> 
       </msub> 
      </mrow> 
     </math> are twofold: it must improve data locality, i.e., 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         L 
       </mi> 
       <msubsup> 
        <mi>
          V 
        </mi> 
        <mi>
          k 
        </mi> 
        <mi>
          i 
        </mi> 
       </msubsup> 
       <mo>
         ≥ 
       </mo> 
       <mmultiscripts> 
        <mi>
          L 
        </mi> 
        <mprescripts /> 
        <mi>
          c 
        </mi> 
        <mrow></mrow> 
       </mmultiscripts> 
       <msup> 
        <mi>
          V 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math>, and reduce the task’s start time, i.e., 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         s 
       </mi> 
       <msubsup> 
        <mi>
          t 
        </mi> 
        <mi>
          k 
        </mi> 
        <mi>
          i 
        </mi> 
       </msubsup> 
       <mo>
         ≤ 
       </mo> 
       <mmultiscripts> 
        <mi>
          s 
        </mi> 
        <mprescripts /> 
        <mi>
          c 
        </mi> 
        <mrow></mrow> 
       </mmultiscripts> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> (lines 21 - 27).</p>
    <p>At each step, the algorithm aims to find a better mapping for each task by prioritizing the machine that offers the largest increase in local data volume. If this machine also allows the task to start earlier, it is selected for a new tentative mapping. The first option (lines 28 - 31) is to execute the task and update the processor count, provided that its ready time aligns with its calculated start time (line 29), which does not include data transfer time.</p>
    <p>The second option (lines 32 - 37) applies if the ready time of a task is strictly earlier than its calculated start time (line 32). In this case, if all predecessor tasks 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          j 
        </mi> 
       </msup> 
      </mrow> 
     </math>, whose calculated finish time coincides with the calculated start time of the ready task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math>, have finished their execution (i.e., they have released at least one processor) (line 33), then 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> is executed, and the count of available processors is updated (lines 34–35). Note that the calculated finish and start times do not factor in data transfer time but rather consider the data transfer volumes.</p>
    <p>Equations (1) and (2) will be used subsequently to determine the non-dominated solutions that we will represent on the Pareto front. It should be noted that the proposed algorithm allows to minimize the makespan for a given total number of computing cores, i.e. for a given platform. Equation (2) allows to determine the cost corresponding to the use of this IaaS platform.</p>
    <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td class="aleft" width="100.00%" colspan="2"><p style="text-align:left">Algorithm: Minimizing makespan</p></td> 
     </tr> 
     <tr> 
      <td class="custom-top-td aleft" width="7.87%"><p style="text-align:left">1:</p></td> 
      <td class="custom-top-td aleft" width="92.13%"><p style="text-align:left">Compute 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            R 
          </mi> 
          <mi>
            a 
          </mi> 
          <mi>
            n 
          </mi> 
          <msup> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math> for each task 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">2:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left">Sort 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
           T 
         </mi> 
        </math> by decreasing 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            R 
          </mi> 
          <mi>
            a 
          </mi> 
          <mi>
            n 
          </mi> 
          <msup> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math> values</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">3:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left">for all 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
          <mo>
            ∈ 
          </mo> 
          <mi>
            T 
          </mi> 
         </mrow> 
        </math> do</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">4:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            v 
          </mi> 
          <mi>
            m 
          </mi> 
         </mrow> 
        </math> ← { 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            v 
          </mi> 
          <msub> 
           <mi>
             m 
           </mi> 
           <mi>
             k 
           </mi> 
          </msub> 
          <mo>
            ∈ 
          </mo> 
          <mi>
            V 
          </mi> 
          <mi>
            M 
          </mi> 
         </mrow> 
        </math> | 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            s 
          </mi> 
          <msubsup> 
           <mi>
             t 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
         </mrow> 
        </math> is minimal and 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            L 
          </mi> 
          <mi>
            I 
          </mi> 
          <msubsup> 
           <mi>
             V 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
         </mrow> 
        </math> is maximal}</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">5:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> Map 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math> on 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            v 
          </mi> 
          <mi>
            m 
          </mi> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">6:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> Update 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            p 
          </mi> 
          <mi>
            r 
          </mi> 
          <mi>
            o 
          </mi> 
          <msub> 
           <mi>
             c 
           </mi> 
           <mi>
             k 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">7:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left">endfor </p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">8:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left">for 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            l 
          </mi> 
          <mo>
            = 
          </mo> 
          <mi>
            L 
          </mi> 
         </mrow> 
        </math> to 0 do</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">9:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             T 
           </mi> 
           <mi>
             l 
           </mi> 
          </msup> 
         </mrow> 
        </math> ← tasks in level 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>
           l 
         </mi> 
        </math> sorted by decreasing 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            R 
          </mi> 
          <mi>
            a 
          </mi> 
          <mi>
            n 
          </mi> 
          <mi>
            k 
          </mi> 
         </mrow> 
        </math> values</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">10:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> for all 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
          <mo>
            ∈ 
          </mo> 
          <msup> 
           <mi>
             T 
           </mi> 
           <mi>
             l 
           </mi> 
          </msup> 
         </mrow> 
        </math> do</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">11:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mmultiscripts> 
           <mi>
             s 
           </mi> 
           <mprescripts /> 
           <mi>
             c 
           </mi> 
           <mrow></mrow> 
          </mmultiscripts> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math> ← current start time of 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">12:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            v 
          </mi> 
          <msup> 
           <mi>
             m 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math> ← current mapping of 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">13:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> for all 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            v 
          </mi> 
          <msub> 
           <mi>
             m 
           </mi> 
           <mi>
             k 
           </mi> 
          </msub> 
          <mo>
            ∈ 
          </mo> 
          <mi>
            V 
          </mi> 
          <mi>
            M 
          </mi> 
         </mrow> 
        </math> do</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">14:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            L 
          </mi> 
          <msubsup> 
           <mi>
             V 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
          <mo>
            ← 
          </mo> 
          <mi>
            L 
          </mi> 
          <mi>
            I 
          </mi> 
          <msubsup> 
           <mi>
             V 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
          <mo>
            + 
          </mo> 
          <mi>
            L 
          </mi> 
          <mi>
            O 
          </mi> 
          <msubsup> 
           <mi>
             V 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">15:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> endfor</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">16:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mmultiscripts> 
           <mi>
             L 
           </mi> 
           <mprescripts /> 
           <mi>
             c 
           </mi> 
           <mrow></mrow> 
          </mmultiscripts> 
          <msup> 
           <mi>
             V 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math> ← current local volume of 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">17:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> Cancel the current mapping of 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">18:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> endfor</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">19:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> for all 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
          <mo>
            ∈ 
          </mo> 
          <msup> 
           <mi>
             T 
           </mi> 
           <mi>
             l 
           </mi> 
          </msup> 
         </mrow> 
        </math> do</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">20:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> sort 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            V 
          </mi> 
          <mi>
            M 
          </mi> 
         </mrow> 
        </math> by decreasing 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            L 
          </mi> 
          <msubsup> 
           <mi>
             V 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
         </mrow> 
        </math> values</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">21:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> while 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            L 
          </mi> 
          <msubsup> 
           <mi>
             V 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
          <mo>
            ≥ 
          </mo> 
          <mmultiscripts> 
           <mi>
             L 
           </mi> 
           <mprescripts /> 
           <mi>
             c 
           </mi> 
           <mrow></mrow> 
          </mmultiscripts> 
          <msup> 
           <mi>
             V 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math> do</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">22:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> if 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            s 
          </mi> 
          <msubsup> 
           <mi>
             t 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
          <mo>
            ≤ 
          </mo> 
          <mmultiscripts> 
           <mi>
             s 
           </mi> 
           <mprescripts /> 
           <mi>
             c 
           </mi> 
           <mrow></mrow> 
          </mmultiscripts> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math> then</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">23:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> Map 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math> on 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            v 
          </mi> 
          <msub> 
           <mi>
             m 
           </mi> 
           <mi>
             k 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">24:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> Update 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            p 
          </mi> 
          <mi>
            r 
          </mi> 
          <mi>
            o 
          </mi> 
          <msub> 
           <mi>
             c 
           </mi> 
           <mi>
             k 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">25:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> break</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">26:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> endif</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">27:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> endwhile</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">28:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> if 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            p 
          </mi> 
          <mi>
            r 
          </mi> 
          <mi>
            o 
          </mi> 
          <msub> 
           <mi>
             c 
           </mi> 
           <mi>
             k 
           </mi> 
          </msub> 
          <mo>
            ≥ 
          </mo> 
          <mn>
            0 
          </mn> 
         </mrow> 
        </math> then</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">29:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> if 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            r 
          </mi> 
          <msubsup> 
           <mi>
             t 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
          <mo>
            = 
          </mo> 
          <mi>
            s 
          </mi> 
          <msubsup> 
           <mi>
             t 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
         </mrow> 
        </math> then</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">30:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> Execute 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math> on 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            v 
          </mi> 
          <msub> 
           <mi>
             m 
           </mi> 
           <mi>
             k 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">31</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> Update 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            p 
          </mi> 
          <mi>
            r 
          </mi> 
          <mi>
            o 
          </mi> 
          <msub> 
           <mi>
             c 
           </mi> 
           <mi>
             k 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">32:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> else if 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            r 
          </mi> 
          <msubsup> 
           <mi>
             t 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
          <mo>
            &lt; 
          </mo> 
          <mi>
            s 
          </mi> 
          <msubsup> 
           <mi>
             t 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             i 
           </mi> 
          </msubsup> 
         </mrow> 
        </math> then</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">33:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> if all tasks 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             j 
           </mi> 
          </msup> 
         </mrow> 
        </math> | 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            f 
          </mi> 
          <msubsup> 
           <mi>
             t 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             j 
           </mi> 
          </msubsup> 
          <mo>
            = 
          </mo> 
          <mi>
            s 
          </mi> 
          <msubsup> 
           <mi>
             t 
           </mi> 
           <mi>
             k 
           </mi> 
           <mi>
             j 
           </mi> 
          </msubsup> 
         </mrow> 
        </math> are computed then</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">34:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> Execute 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <msup> 
           <mi>
             t 
           </mi> 
           <mi>
             i 
           </mi> 
          </msup> 
         </mrow> 
        </math> on 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            v 
          </mi> 
          <msub> 
           <mi>
             m 
           </mi> 
           <mi>
             k 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">35:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> Update 
        <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
          <mi>
            p 
          </mi> 
          <mi>
            r 
          </mi> 
          <mi>
            o 
          </mi> 
          <msub> 
           <mi>
             c 
           </mi> 
           <mi>
             k 
           </mi> 
          </msub> 
         </mrow> 
        </math></p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">36:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> endif</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">37:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> endif </p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">38:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> endif</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">39:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left"> endfor</p></td> 
     </tr> 
     <tr> 
      <td class="aleft" width="7.87%"><p style="text-align:left">40:</p></td> 
      <td class="aleft" width="92.13%"><p style="text-align:left">endfor</p></td> 
     </tr> 
    </table>
    <p>The makespan of a workflow, also referred to as its execution time, is calculated as the difference between the real start time of the first task and the real finish time of the last task. The real start time of a task 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msup> 
        <mi>
          t 
        </mi> 
        <mi>
          i 
        </mi> 
       </msup> 
      </mrow> 
     </math> (denoted as 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         R 
       </mi> 
       <mi>
         S 
       </mi> 
       <mi>
         T 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msup> 
          <mi>
            t 
          </mi> 
          <mi>
            i 
          </mi> 
         </msup> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>) is when the task begins transferring its input files, while the real finish time ( 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         R 
       </mi> 
       <mi>
         F 
       </mi> 
       <mi>
         T 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <msup> 
          <mi>
            t 
          </mi> 
          <mi>
            i 
          </mi> 
         </msup> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>) is when the task completes transferring its output files. Therefore, the makespan of a workflow can be defined as:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         M 
       </mi> 
       <mi>
         a 
       </mi> 
       <mi>
         k 
       </mi> 
       <mi>
         e 
       </mi> 
       <mi>
         s 
       </mi> 
       <mi>
         p 
       </mi> 
       <mi>
         a 
       </mi> 
       <mi>
         n 
       </mi> 
       <mo>
         = 
       </mo> 
       <munder> 
        <mrow> 
         <mi>
           max 
         </mi> 
        </mrow> 
        <mrow> 
         <msup> 
          <mi>
            t 
          </mi> 
          <mi>
            i 
          </mi> 
         </msup> 
         <mo>
           ∈ 
         </mo> 
         <mi>
           T 
         </mi> 
         <mo> 
         </mo> 
        </mrow> 
       </munder> 
       <mrow> 
        <mo>
          { 
        </mo> 
        <mrow> 
         <mi>
           R 
         </mi> 
         <mi>
           F 
         </mi> 
         <mi>
           T 
         </mi> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <msup> 
            <mi>
              t 
            </mi> 
            <mi>
              i 
            </mi> 
           </msup> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
        </mrow> 
        <mo>
          } 
        </mo> 
       </mrow> 
       <mo>
         − 
       </mo> 
       <munder> 
        <mrow> 
         <mi>
           min 
         </mi> 
        </mrow> 
        <mrow> 
         <msup> 
          <mi>
            t 
          </mi> 
          <mi>
            i 
          </mi> 
         </msup> 
         <mo>
           ∈ 
         </mo> 
         <mi>
           T 
         </mi> 
         <mo> 
         </mo> 
        </mrow> 
       </munder> 
       <mrow> 
        <mo>
          { 
        </mo> 
        <mrow> 
         <mi>
           R 
         </mi> 
         <mi>
           S 
         </mi> 
         <mi>
           T 
         </mi> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <msup> 
            <mi>
              t 
            </mi> 
            <mi>
              i 
            </mi> 
           </msup> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
        </mrow> 
        <mo>
          } 
        </mo> 
       </mrow> 
      </mrow> 
     </math> (1)</p>
   </sec>
   <sec id="s4_2">
    <title>4.2. Cost Optimization Strategy for Cloud Resource Utilization</title>
    <p>We assume that each utilized virtual machine (VM) is billed on a per-second basis. Consequently, the cost associated with the execution of the workflow is defined as:</p>
    <p>
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         C 
       </mi> 
       <mi>
         o 
       </mi> 
       <mi>
         s 
       </mi> 
       <mi>
         t 
       </mi> 
       <mo>
         = 
       </mo> 
       <mi>
         c 
       </mi> 
       <mi>
         o 
       </mi> 
       <mi>
         s 
       </mi> 
       <mi>
         t 
       </mi> 
       <mtext>
         _ 
       </mtext> 
       <mi>
         p 
       </mi> 
       <mi>
         e 
       </mi> 
       <mi>
         r 
       </mi> 
       <mtext>
         _ 
       </mtext> 
       <mi>
         c 
       </mi> 
       <mi>
         o 
       </mi> 
       <mi>
         r 
       </mi> 
       <mi>
         e 
       </mi> 
       <mo>
         ∗ 
       </mo> 
       <mi>
         t 
       </mi> 
       <mi>
         o 
       </mi> 
       <mi>
         t 
       </mi> 
       <mi>
         a 
       </mi> 
       <mi>
         l 
       </mi> 
       <mtext>
         _ 
       </mtext> 
       <mi>
         c 
       </mi> 
       <mi>
         o 
       </mi> 
       <mi>
         r 
       </mi> 
       <mi>
         e 
       </mi> 
       <mi>
         s 
       </mi> 
       <mo>
         ∗ 
       </mo> 
       <mi>
         M 
       </mi> 
       <mi>
         a 
       </mi> 
       <mi>
         k 
       </mi> 
       <mi>
         e 
       </mi> 
       <mi>
         s 
       </mi> 
       <mi>
         p 
       </mi> 
       <mi>
         a 
       </mi> 
       <mi>
         n 
       </mi> 
      </mrow> 
     </math> (2)</p>
    <p>where 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         c 
       </mi> 
       <mi>
         o 
       </mi> 
       <mi>
         s 
       </mi> 
       <mi>
         t 
       </mi> 
       <mtext>
         _ 
       </mtext> 
       <mi>
         p 
       </mi> 
       <mi>
         e 
       </mi> 
       <mi>
         r 
       </mi> 
       <mtext>
         _ 
       </mtext> 
       <mi>
         c 
       </mi> 
       <mi>
         o 
       </mi> 
       <mi>
         r 
       </mi> 
       <mi>
         e 
       </mi> 
      </mrow> 
     </math> represents the unit cost per core per second, and 
     <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         t 
       </mi> 
       <mi>
         o 
       </mi> 
       <mi>
         t 
       </mi> 
       <mi>
         a 
       </mi> 
       <mi>
         l 
       </mi> 
       <mtext>
         _ 
       </mtext> 
       <mi>
         c 
       </mi> 
       <mi>
         o 
       </mi> 
       <mi>
         r 
       </mi> 
       <mi>
         e 
       </mi> 
       <mi>
         s 
       </mi> 
      </mrow> 
     </math> denotes the total number of core utilized during the execution of the workflow.</p>
   </sec>
  </sec><sec id="s5">
   <title>5. Results and Discussion</title>
   <p>
    <xref ref-type="fig" rid="fig2">
     Figure 2
    </xref> highlights the inverse relationship between the two objectives under study: makespan (total execution time) and cost, as a function of the number of allocated cores. Initially, as the number of cores increases, the makespan decreases significantly. This is due to the enhanced parallelism capability, allowing more tasks to be executed simultaneously. However, this reduction in execution time is accompanied by a progressive increase in cost, as resource usage prices in a cloud environment are directly tied to the number of cores utilized. This inverse relationship becomes even more pronounced beyond a certain threshold (approximately 50 - 100 cores), where adding additional resources results in only marginal reductions in makespan, while costs continue to rise almost linearly. In other words, beyond a certain point, each additional core contributes little to performance improvement but significantly inflates costs. This observation underscores the challenge of achieving a perfect balance between these two objectives, as further reducing makespan entails exponential cost increases.</p>
   <fig id="fig2" position="float">
    <label>Figure 2</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.140216-"></xref>Figure 2. Makespan and cost evolution for the CyberShake scientific workflow.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312900-rId230.jpeg?20250126025329" />
   </fig>
   <p>In the Epigenomics workflow (<xref ref-type="fig" rid="fig3">
     Figure 3
    </xref>), a trend similar to that observed in other workflows such as CyberShake (<xref ref-type="fig" rid="fig2">
     Figure 2
    </xref>) becomes evident: the two objectives (makespan and cloud resource usage cost) exhibit opposing behaviors as the number of available cores increases. When the number of cores increases, the makespan (depicted by the blue curve) initially decreases drastically. This improvement is due to the enhanced ability to parallelize more tasks within the workflow, thereby reducing the total execution time. Simultaneously, the red curve representing the cost shows a progressive and non-linear increase with the number of cores. This is because the cost calculation formula depends on both the makespan and the total number of cores. Although the makespan decreases, the addition of more resources drives up expenses, particularly in configurations with a large number of cores. An important observation in such graphs is the presence of a zone where a trade-off between minimal makespan and acceptable cost is achievable. In the case of the Epigenomics workflow, this zone appears to be in the range of 40 to 100 cores, where the makespan reduction is significant, yet the cost increase remains moderate. Beyond a certain threshold (approximately 200 cores), the cost becomes excessively high without yielding a substantial reduction in makespan. This underscores the importance of an appropriate resource-sizing strategy to avoid unnecessary costs.</p>
   <fig id="fig3" position="float">
    <label>Figure 3</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.140216-"></xref>Figure 3. Makespan and cost evolution for the Epigenomics scientific workflow.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312900-rId231.jpeg?20250126025329" />
   </fig>
   <p>
    <xref ref-type="fig" rid="fig4">
     Figure 4
    </xref> for the Montage workflow illustrates an inversely proportional relationship between the makespan and cost as a function of the total number of cores used. When the number of cores increases, the workflow execution time (makespan) decreases rapidly in the initial stages. This effect is particularly pronounced for smaller numbers of cores, where adding additional resources significantly enhances performance. However, as the number of cores continues to grow, the improvement becomes marginal, and the curve flattens, indicating a saturation effect where additional resources have a limited impact on the makespan. Conversely, the cost increases almost linearly with the total number of cores. This phenomenon is explained by the cost calculation formula, where increased resource usage directly translates into higher expenses, even as the makespan improvements diminish. This highlights the inherent trade-off in cloud resource allocation between minimizing execution time and managing costs effectively.</p>
   <fig id="fig4" position="float">
    <label>Figure 4</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.140216-"></xref>Figure 4. Makespan and cost evolution for the Montage scientific workflow.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312900-rId232.jpeg?20250126025329" />
   </fig>
   <p>The main purpose of such a study lies in identifying an optimal trade-off between the conflicting objectives of makespan and cost. This trade-off is represented by a Pareto front, which encompasses all non-dominated solutions, where an improvement in one objective can only be achieved at the expense of the other. Analyzing the behavior of these curves not only allows us to visualize the complex relationship between these two objectives but also to identify strategic solutions tailored to the specific needs of users or applications. Below, we present the Pareto fronts obtained for the different workflows studied, highlighting the optimal solutions in this multi-objective space.</p>
   <p>The main objective of our algorithm is to help IaaS cloud users find a good trade-off between the execution time and cost of their workflow by selecting sets of VM instances on a Pareto front. In this section, we evaluate the quality of the Pareto front solutions produced by our algorithm. In the previous sections, we have shown that to minimize the execution time for a fixed number of cores, priority should be given to large VM instances. To obtain the Pareto front given by our algorithm, it is therefore sufficient to perform a simulation for each total number of cores and discard all dominated solutions. Two solutions, S<sub>i</sub> and S<sub>j</sub>, are considered equivalent if the same tasks are assigned to different but equivalent VMs with identical start times. During each iteration, only one representative of such equivalent solutions is retained. Furthermore, in all iterations except the final one, only strictly dominated solutions are eliminated. A solution S<sub>i</sub> is strictly dominated by a solution S<sub>j</sub> if both the execution time and cost of S<sub>i</sub> are strictly higher than those of S<sub>j</sub>. This approach ensures that intermediate solutions, which could lead to better schedules, are not prematurely discarded. In the final iteration, however, all simply dominated solutions (i.e., solutions where one metric is worse) are removed. The three algorithms exhibit similar behaviors, with a rapid decrease in cost as makespan increases from the initial points, followed by stabilization. The MOS-MWMC algorithm (red points) demonstrates superior dominance over the entire set of solutions. Its curve is generally closer to the origin, indicating a better trade-off between makespan and cost. Compared to HEFT and MAX-MIN, MOS-MWMC is able to provide solutions with slightly lower costs while maintaining competitive makespans. The HEFT algorithm (dashed green line) follows a similar trajectory but is slightly less efficient than MOS-MWMC for most trade-offs. HEFT solutions tend to have slightly higher costs, especially in the low makespan region. However, for very high makespans, HEFT reaches the performance of MOS-MWMC, indicating convergence. The MAX-MIN algorithm (dashed blue line) is generally less effective. Its curve is often above those of MOS-MWMC and HEFT, indicating higher costs for similar makespans. This difference is more pronounced in the region where the makespan is low, suggesting that MAX-MIN is not optimal for minimizing both objectives simultaneously. The superiority of MOS-MWMC is evident in the critical areas where the trade-off between makespan and cost is most important (low makespans). This demonstrates the algorithm’s ability to effectively balance these two conflicting objectives for the scientific workflow CyberShake (<xref ref-type="fig" rid="fig5">
     Figure 5
    </xref>).</p>
   <fig id="fig5" position="float">
    <label>Figure 5</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.140216-"></xref>Figure 5. Pareto fronts for CyberShake.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312900-rId233.jpeg?20250126025329" />
   </fig>
   <p>The Epigenomics workflow (<xref ref-type="fig" rid="fig6">
     Figure 6
    </xref>) reveals a markedly superior performance of the MOS-MWMC algorithm compared to the HEFT and Max-Min methods. The points generated by MOS-MWMC stand out due to their proximity to the Pareto front, demonstrating an enhanced ability to provide optimal solutions by simultaneously minimizing both cost and makespan. This proximity reflects the effectiveness of MOS-MWMC in balancing the two objectives, a crucial aspect for complex workflows. In contrast, the HEFT and Max-Min algorithms, while following similar trends, struggle to achieve the same levels of performance. For equivalent makespan values, the costs associated with the solutions of HEFT and Max-Min are significantly higher, highlighting their relative inadequacy for this type of workflow. Furthermore, the solutions from these two algorithms exhibit greater dispersion, suggesting variability in their ability to effectively optimize the objectives.</p>
   <fig id="fig6" position="float">
    <label>Figure 6</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.140216-"></xref>Figure 6. Pareto fronts for Epigenomics.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312900-rId234.jpeg?20250126025329" />
   </fig>
   <p>In the case of the Montage workflow (<xref ref-type="fig" rid="fig7">
     Figure 7
    </xref>), MOS-MWMC confirms its superiority by generating solutions that also approach the Pareto front, even in scenarios with more pronounced trade-offs between cost and makespan. The robustness of this algorithm is particularly evident in its ability to maintain an optimal balance between the two objectives, even for extreme points where cost or execution time becomes the priority. In contrast, the HEFT and Max-Min algorithms, while displaying similar trajectories to those observed for Epigenomics, remain inferior in terms of the quality of the solutions produced. HEFT, while slightly more effective than Max-Min in this case, fails to reach the optimal trade-offs proposed by MOS-MWMC. The increased complexity of the Montage workflow is reflected in the variability of the solutions obtained, further highlighting the adaptive capacity of MOS-MWMC in the face of diverse workflow profiles.</p>
   <fig id="fig7" position="float">
    <label>Figure 7</label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.140216-"></xref>Figure 7. Pareto fronts for Montage.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312900-rId235.jpeg?20250126025329" />
   </fig>
   <p>The analysis of the results for the CyberShake, Epigenomics, and Montage workflows highlights the consistent superiority of the MOS-MWMC approach over the HEFT and Max-Min algorithms. MOS-MWMC excels in its ability to balance the conflicting objectives of cost and makespan, demonstrating remarkable robustness and adaptability in complex and varied workflow environments. The solutions generated by this algorithm are characterized by their proximity to the Pareto front, offering trade-offs that effectively meet the demands of cloud environments. In summary, MOS-MWMC emerges as the preferred solution for scheduling scientific workflows in cloud computing environments, especially in scenarios where multi-objective optimization is critical. Its consistent performance and flexibility make it an essential approach for addressing challenges related to resource efficiency and time constraints.</p>
   <p>
    <xref ref-type="table" rid="table4">
     Table 4
    </xref> represents a comparison of the performance parameters for the three algorithms MOS-MWMC, HEFT and Max-Min, based on typical results from our simulations. The MOS-MWMC algorithm dominates on most criteria, notably due to its ability to simultaneously optimize makespan and costs, while efficiently exploiting virtual machine (VM) resources. As for HEFT, this algorithm offers acceptable performances but remains inferior to MOS-MWMC on multi-objective trade-offs, particularly for complex workflows. On the other hand, the performances of the Max-Min algorithm are generally inferior, notably in terms of costs and makespan minimization, which makes it less suitable for demanding cloud environments.</p>
   <p>
    <xref ref-type="bibr" rid="scirp.140216-"></xref>Table 4. Performance criteria for MOS-MWMC, HEFT, and Max-Min.</p>
   <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
     <td class="custom-bottom-td acenter" width="25.00%"><p style="text-align:center">Performance Criteria</p></td> 
     <td class="custom-bottom-td acenter" width="30.88%"><p style="text-align:center">MOS-MWMC</p></td> 
     <td class="custom-bottom-td acenter" width="25.00%"><p style="text-align:center">HEFT</p></td> 
     <td class="custom-bottom-td acenter" width="24.93%"><p style="text-align:center">Max-Min</p></td> 
    </tr> 
    <tr> 
     <td class="custom-top-td acenter" width="25.00%"><p style="text-align:center">Proximity to Pareto Front</p></td> 
     <td class="custom-top-td acenter" width="30.88%"><p style="text-align:center">Very high (optimal solutions close to the front): 98%</p></td> 
     <td class="custom-top-td acenter" width="25.00%"><p style="text-align:center">Medium (solutions slightly farther from the front): 85%</p></td> 
     <td class="custom-top-td acenter" width="24.93%"><p style="text-align:center">Low (solutions far from the front): 70%</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Makespan Minimization</p></td> 
     <td class="acenter" width="30.88%"><p style="text-align:center">Very efficient (maximum reduction)</p></td> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Efficient but less than MOS-MWMC</p></td> 
     <td class="acenter" width="24.93%"><p style="text-align:center">Less efficient (high makespan)</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Cost Reduction</p></td> 
     <td class="acenter" width="30.88%"><p style="text-align:center">Excellent (optimized cost)</p></td> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Moderate (cost moderately optimized)</p></td> 
     <td class="acenter" width="24.93%"><p style="text-align:center">Low (high cost)</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Task Dependency Management</p></td> 
     <td class="acenter" width="30.88%"><p style="text-align:center">Very well managed</p></td> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Adequate but can beimproved</p></td> 
     <td class="acenter" width="24.93%"><p style="text-align:center">Less effective</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Adaptability to Dynamic Environments</p></td> 
     <td class="acenter" width="30.88%"><p style="text-align:center">Very high (flexibility and robustness)</p></td> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Medium (limited adaptability)</p></td> 
     <td class="acenter" width="24.93%"><p style="text-align:center">Low (not flexible)</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Algorithmic Complexity</p></td> 
     <td class="acenter" width="30.88%"><p style="text-align:center">Moderate (well-balanced)</p></td> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Medium (less complex than MOS-MWMC)</p></td> 
     <td class="acenter" width="24.93%"><p style="text-align:center">Low (simple algorithm)</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Data Transfer Reduction</p></td> 
     <td class="acenter" width="30.88%"><p style="text-align:center">Very effective: 60%</p></td> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Moderate: 40%</p></td> 
     <td class="acenter" width="24.93%"><p style="text-align:center">Less effective: 25%</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Resource Utilization</p></td> 
     <td class="acenter" width="30.88%"><p style="text-align:center">Optimized (better VM utilization): 85%</p></td> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Moderate: 75%</p></td> 
     <td class="acenter" width="24.93%"><p style="text-align:center">Suboptimal: 60%</p></td> 
    </tr> 
    <tr> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Convergence Time (ms)</p></td> 
     <td class="acenter" width="30.88%"><p style="text-align:center">Fast: 500</p></td> 
     <td class="acenter" width="25.00%"><p style="text-align:center">Average: 700</p></td> 
     <td class="acenter" width="24.93%"><p style="text-align:center">Slow: 1200</p></td> 
    </tr> 
   </table>
  </sec><sec id="s6">
   <title>6. Conclusions</title>
   <p>Infrastructure as a Service (IaaS) clouds now enable scientists to run data-intensive workflows on customized infrastructures designed to meet the specific computing and storage needs of these applications. Selecting the appropriate set of virtual machine instances to form these infrastructures is a challenging task, typically handled by Workflow Management Systems. Maximizing performance hinges on effectively utilizing the unique characteristics of these virtual machine instances.</p>
   <p>In this paper, we proposed an innovative multi-objective approach called MOS-MWMC. The MOS-MWMC algorithm establishes itself as a benchmark solution for multi-objective workflow scheduling in IaaS cloud environments. Unlike the HEFT and Max-Min algorithms, MOS-MWMC stands out for its ability to simultaneously optimize makespan and costs while maintaining robust and adaptable performance. This efficiency is attributed to several key strengths. Firstly, the algorithm generates solutions that are close to the Pareto front, ensuring an optimal trade-off between conflicting objectives. Secondly, it significantly reduces data transfers through a strategy of local storage for intermediate files, thereby minimizing network communication, a major advantage over HEFT and Max-Min.</p>
   <p>Moreover, MOS-MWMC makes optimal use of virtual machine resources by leveraging their features, such as a high number of cores and fast storage, resulting in better task distribution and more efficient utilization of cloud infrastructures. Additionally, its robustness in handling complex workflows, as demonstrated by its performance on CyberShake, Epigenomics, and Montage, makes it particularly suitable for diverse and demanding scenarios. Experimental results show that MOS-MWMC consistently outperforms HEFT and Max-Min in minimizing makespan and optimizing costs, further validating its relevance in addressing the challenges of modern cloud environments.</p>
   <p>Finally, this study opens up promising future prospects, including the evaluation of MOS-MWMC in real cloud environments and the integration of additional objectives, such as energy consumption reduction. These potential advancements would further enhance the relevance of this algorithm for industrial applications, where performance, flexibility, and cost control are critical.</p>
  </sec>
 </body><back>
  <ref-list>
   <title>References</title>
   <ref id="scirp.140216-ref1">
    <label>1</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Taylor, I.J. Deelman, E. Gannon, D.B. and Shields, M. (2007) Workflows for e-Science. Springer. 
     <u>&gt;https://doi.org/10.1007/978-1-84628-757-2</u> 
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref2">
    <label>2</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Deelman, E., Vahi, K., Juve, G., Rynge, M., Callaghan, S., Maechling, P.J., et al. (2015) Pegasus, a Workflow Management System for Science Automation. Future Generation Computer Systems, 46, 17-35. 
     <u>&gt;https://doi.org/10.1016/j.future.2014.10.008</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref3">
    <label>3</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Amazon EC2—Service d’hébergement cloud évolutif. 
     <u>&gt;https://aws.amazon.com/fr/ec2/</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref4">
    <label>4</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     des PVC de disque persistant. 
     <u>&gt;https://cloud.google.com/products/compute</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref5">
    <label>5</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     "Services de Cloud Computing. Microsoft Azure. 
     <u>&gt;https://azure.microsoft.com/fr-fr/</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref6">
    <label>6</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Casanova, H., Tanaka, R., Koch, W. and Ferreira da Silva, R. (2021) Teaching Parallel and Distributed Computing Concepts in Simulation with Wrench. Journal of Parallel and Distributed Computing, 156, 53-63. 
     <u>&gt;https://doi.org/10.1016/j.jpdc.2021.05.009</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref7">
    <label>7</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Shahid, M., Ashraf, Z., Alam, M., Ahmad, F. and Imran, M. (2021) A Multi-Objective Workflow Allocation Strategyin IaaS Cloud Environment. 2021 International Conference on Computing, Communication, and Intelligent Systems (ICCCIS), Greater Noida, 19-20 February 2021, 308-313. 
     <u>&gt;https://doi.org/10.1109/icccis51004.2021.9397081</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref8">
    <label>8</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Zhang, H., Wu, Y. and Sun, Z. (2021) EHEFT-R: Multi-Objective Task Scheduling Scheme in Cloud Computing. Complex&amp;Intelligent Systems, 8, 4475-4482. 
     <u>&gt;https://doi.org/10.1007/s40747-021-00479-7</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref9">
    <label>9</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Hussain, M., Luo, M., Hussain, A., Javed, M.H., Abbas, Z. and Wei, L. (2023) Deadline-Constrained Cost-Aware Workflow Scheduling in Hybrid Cloud. Simulation Modelling Practice and Theory, 129, Article 102819. 
     <u>&gt;https://doi.org/10.1016/j.simpat.2023.102819</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref10">
    <label>10</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Mangalampalli, S., Hashmi, S.S., Gupta, A., Karri, G.R., Rajkumar, K.V., Chakrabarti, T., et al. (2024) Multi Objective Prioritized Workflow Scheduling Using Deep Reinforcement Based Learning in Cloud Computing. IEEE Access, 12, 5373-5392. 
     <u>&gt;https://doi.org/10.1109/access.2024.3350741</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref11">
    <label>11</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Malti, A.N., Hakem, M. and Benmammar, B. (2023) A New Hybrid Multi-Objective Optimization Algorithm for Task Scheduling in Cloud Systems. Cluster Computing, 27, 2525-2548. 
     <u>&gt;https://doi.org/10.1007/s10586-023-04099-3</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref12">
    <label>12</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Abualigah, L. and Diabat, A. (2020) A Novel Hybrid Antlion Optimization Algorithm for Multi-Objective Task Scheduling Problems in Cloud Computing Environments. Cluster Computing, 24, 205-223. 
     <u>&gt;https://doi.org/10.1007/s10586-020-03075-5</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref13">
    <label>13</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Kruekaew, B. and Kimpan, W. (2022) Multi-Objective Task Scheduling Optimization for Load Balancing in Cloud Computing Environment Using Hybrid Artificial Bee Colony Algorithm with Reinforcement Learning. IEEE Access, 10, 17803-17818. 
     <u>&gt;https://doi.org/10.1109/access.2022.3149955</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref14">
    <label>14</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Doostali, S., Babamir, S.M. and Eini, M. (2021) CP-PGWO: Multi-Objective Workflow Scheduling for Cloud Computing Using Critical Path. Cluster Computing, 24, 3607-3627. 
     <u>&gt;https://doi.org/10.1007/s10586-021-03351-y</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref15">
    <label>15</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Shukla, P. and Pandey, S. (2023) DE-GWO: A Multi-Objective Workflow Scheduling Algorithm for Heterogeneous Fog-Cloud Environment. Arabian Journal for Science and Engineering, 49, 4419-4444. 
     <u>&gt;https://doi.org/10.1007/s13369-023-08425-0</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref16">
    <label>16</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Zeedan, M., Attiya, G. and El-Fishawy, N. (2022) Enhanced Hybrid Multi-Objective Workflow Scheduling Approach Based Artificial Bee Colony in Cloud Computing. Computing, 105, 217-247. 
     <u>&gt;https://doi.org/10.1007/s00607-022-01116-y</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref17">
    <label>17</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Mohammadzadeh, A. and Masdari, M. (2021) Scientific Workflow Scheduling in Multi-Cloud Computing Using a Hybrid Multi-Objective Optimization Algorithm. Journal of Ambient Intelligence and Humanized Computing, 14, 3509-3529. 
     <u>&gt;https://doi.org/10.1007/s12652-021-03482-5</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref18">
    <label>18</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Calzarossa, M.C., Vedova, M.L.D., Massari, L., Nebbione, G. and Tessera, D. (2021) Multi-Objective Optimization of Deadline and Budget-Aware Workflow Scheduling in Uncertain Clouds. IEEE Access, 9, 89891-89905. 
     <u>&gt;https://doi.org/10.1109/access.2021.3091310</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref19">
    <label>19</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Konjaang, J.K. and Xu, L. (2021) Multi-Objective Workflow Optimization Strategy (MOWOS) for Cloud Computing. Journal of Cloud Computing, 10, Article No. 11. 
     <u>&gt;https://doi.org/10.1186/s13677-020-00219-1</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref20">
    <label>20</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Qin, S., Pi, D., Shao, Z., Xu, Y. and Chen, Y. (2023) Reliability-Aware Multi-Objective Memetic Algorithm for Workflow Scheduling Problem in Multi-Cloud System. IEEE Transactions on Parallel and Distributed Systems, 34, 1343-1361. 
     <u>&gt;https://doi.org/10.1109/tpds.2023.3245089</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref21">
    <label>21</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Belgacem, A. and Beghdad-Bey, K. (2021) Multi-Objective Workflow Scheduling in Cloud Computing: Trade-off between Makespan and Cost. Cluster Computing, 25, 579-595. 
     <u>&gt;https://doi.org/10.1007/s10586-021-03432-y</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref22">
    <label>22</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Rizvi, N., Ramesh, D., Wang, L. and Basava, A. (2023) A Workflow Scheduling Approach with Modified Fuzzy Adaptive Genetic Algorithm in IaaS Clouds. IEEE Transactions on Services Computing, 16, 872-885. 
     <u>&gt;https://doi.org/10.1109/tsc.2022.3174112</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref23">
    <label>23</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Kakkottakath Valappil Thekkepuryil, J., Suseelan, D.P. and Keerikkattil, P.M. (2021) An Effective Meta-Heuristic Based Multi-Objective Hybrid Optimization Method for Workflow Scheduling in Cloud Computing Environment. Cluster Computing, 24, 2367-2384. 
     <u>&gt;https://doi.org/10.1007/s10586-021-03269-5</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref24">
    <label>24</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Cai, X., Li, M., Zhang, Y., Zhao, T., Zhang, W. and Chen, J. (2024) Multitasking Bi-Level Evolutionary Algorithm for Data-Intensive Scientific Workflows on Clouds. Expert Systems with Applications, 238, Article 121833. 
     <u>&gt;https://doi.org/10.1016/j.eswa.2023.121833</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref25">
    <label>25</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Automate, Recover, and Debug Scientific Computations. Pegasus WMS. 
     <u>&gt;https://pegasus.isi.edu/</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref26">
    <label>26</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Bharathi, S., Chervenak, A., Deelman, E., Mehta, G., Su, M. and Vahi, K. (2008) Characterization of Scientific Workflows. 2008 Third Workshop on Workflows in Support of Large-Scale Science, Austin, 17 November 2008, 1-10. 
     <u>&gt;https://doi.org/10.1109/works.2008.4723958</u>
    </mixed-citation>
   </ref>
   <ref id="scirp.140216-ref27">
    <label>27</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Gerasoulis, A. and Yang, T. (1992) A Comparison of Clustering Heuristics for Scheduling Directed Acyclic Graphs on Multiprocessors. Journal of Parallel and Distributed Computing, 16, 276-291. 
     <u>&gt;https://doi.org/10.1016/0743-7315(92)90012-c</u>
    </mixed-citation>
   </ref>
  </ref-list>
 </back>
</article>