SiCoGrid: A Complete Grid Simulator for Scheduling and Algorithmical Research, with Emergent Artificial Intelligence data algorithms. Technical Report RR-06-11. DIIS. UNIZAR. Vı́ctor Méndez Computer Science Departament, Computer Architecture area. Universidad de Zaragoza. Centro Politécnico Superior, Edificio Ada Byron, Marı́a de Luna, 1. 50018 Zaragoza, Spain. E-mail: vmendez@unizar.es, eureka@nodo50.org Felix Garcı́a Computer Science Departament, ARCOS group. Universidad Carlos III de Madrid. Escuela Politécnica Superior. Av. Universidad 30 - 28911 Leganes (Madrid) Spain. E-mail: fgcarbal@inf.uc3m.es Abstract Grids are become popular paradigms for parallel and distributed computing. Dynamically aggregation of resources on heterogeneous infrastructures allow to solve large scale problems in science, engineering, and ecommerce. The numerous parameters that have to be taken in account, becomes difficult to use analytical models. In this paper we propose a completed Grid simulator, called SiCoGrid (from the Spanish Simulator Completo Grid), where every Grid entity is modelled. We focus on event driven low level Grid simulation, regard the less of the Grid application running on the top level, and the upper architecture abstractions. The aim is to provide an easy scaling tool for Grid researches, where implementing different core algorithms and policies, integrating new approaches on the existing SiCoGrid code, and thus analyse performances in terms of response rate and resources use. Actually SiCoGrid have implemented canonical data algorithms and job schedulers, and also an economic data algorithm, and two Emergent Artificial Intelligence algorithms proposed by authors on previous works: the Grid flavours of Particle Swarm Optimization(PSO) and Ant Colony Optimization(ACO). 1 Introduction It has been achieved improvements on the interconnection technologies, first within single system, second among nodes on a cluster or over multiple cluster, and more recently over Grids that enhance the paradigms for heterogeneous platforms with a common Grid interface. GT[1], Condor branch for Grid called Condor-G[2], and other specific implementations like EGEE[3], have contributed to core Grid middleware services that are available as the basis for further application development. However, less effort has been made to optimise the use of Grid resources. One of the reasons of this drawback for theoretical work on Grid scheduling algorithms and data Grid management algorithms, is the difficult of the evaluation methodology. It is almost impossible to obtain any analytical result, due to the heterogeneous, complex and dynamic parameters of the Grid infrastructures. The most simple is to compare the efficacy of algorithms on real applications with real resources. But real applications run for to long time to get enough reliable statistical repetitions, on all factors and levels. Furthermore, variations in resource load over time, make it difficult to obtain repeat results, so it is very difficult to validate the experiments. Simulation is then the most viable approach to effectively evaluate Grid algorithms. It is not possible to Grid simulate with general purpose simulation tools[4][5][6], because they does not fit with Grid paradigm, that is a much more complex issue. Thus there is necessary to use specific Grid simulators as the better way to evaluate the different approaches. On previous works we identified the drawback of a toolkit for a rouge evaluation methodology. SiCoGrid was create to fill this requirements and may be used on reliable experiment evaluations. On the next section we summarise some Grid simulation background, to face our simulation aproach, and to fill some researches and computing engineers requirements. Third section describe SiCoGrid design, and some implementation details. We have develop SiCoGrid with the meaningful Grid entities involved on the paradigm, mainly computing, storage and network. This split on parts may be taken as a hold, where the interrelations and dependencies are on a very complex level. So it is not possible to have reliable simulations if we do not shape all of them in our design. SiCoGrid is focus on the Grid core components simulation level, those where are develop all the theoretical algorithms for data management and scheduling policies for Computing and Data Grid. All Grid clients performs jobs. Every job is composed of many sequential requests of block files or data objects. When the request is runing on the local Grid site, then we are in a pure Data Grid. If the computing task can be executed on remote Grid resources, then it is Computing Grid, that is also combined with Data Grid. Data Grid performances depends on the replica location, selection, optimisation and deletion algorithms. Computing Grid performances also depends on scheduling algorithms. On SiCoGrid both of them are easy to implement on modular code, in a very similar way as computer engineers may do on a real Grid packet. SiCoGrid gives to the researches the possibilities to obtain information about job response time, disk, network an computation usage; for evaluating different approaches, from different points of view. At the end of the third section some simulation performances are given. The fourth section is a brief summary of our EAI algorithm implementation for data replication services. We finish with some conclusions and future work of SiCoGrid project. 2 Grid simulation background Hight performance computing environments, are to complex for any simulation tools. The implementations cannot address all the Grid features of the executions like network errors, batch resources behaviour, complex network topologies, virtual organisations interactions, etc. There are few Grid simulators, and every one is focus on different aspects of studies, and varying degrees of Grid components modelled. Bricks Grid[7] is focus on simulating scheduling policies over the Computational Grid. It is a multiple clients and multiple servers scenarios simulator that returns aver- age overall service rates. The network is shaped as stand alone simulating entity between a Grid Computing Client and a Grid Server, without complex topology implementation. There is also an enhanced Bricks Grid simulator[8], for Data Grid purpose, with local disks I/O overheads and a disk management mechanism, but the mayor lack of the network an other Grid components simplifications still the same as the original simulator. Microgrid [9] is a virtualization layer that intercepts calls from the Globus application to emulate them on real resources of an homogeneous cluster. The code is executed on the virtual Grid over the local cluster, so it is not possible to run large number of experiments and repetitions, because on the most of the cases Microgrid spend much more time than the equivalent real execution on the Grid infrastructure. On the other hand the results of the emulations are more precise than the obtained with simulations, due to much more aspects of the Grid that are modelled, like authentication cost or software overhead. GridSim [10] is a toolkit for analyse and compare the performance of resource scheduling algorithms of the grid. There is not Data Grid simulation, only processing is implemented on variants of the Nimrod-G[11] resource broker based on the market based economic model. GridSim is shape of heterogeneous, multi-tasking Grid resources, calendar based on deadline and budget based constraints. It also allow to evaluate various scheduling policies in a single simulation. The implementation of each grid task as a separate thread in the Java Virtual Machine, limits the scalability of the simulation on tackling enterprise level requirements. SimGrid [12] is focus on scheduling to model the grid network topology, and simulate the data flow over the available network bandwidth. The mayor drawback of this tool is that is not modelling job decomposition and task parallelisation characteristics, or resource availability is also not modelled. Katitha and Foster propose ChiSim[13], a tool for job scheduling and data replication algorithms simulations. The main contrib is the holistic point of view of both computing and data grid, more than a splited analysis of them. This fit well on Grid paradigm as a hold of a wide range of parameters. The major drawback of this simulator is not considerer the network topology, assumes that sites are connected to the Grid via a limited bandwidth network. The bandwidth between any two sites is constant without real simulation of remote connections between sites. OptorSim [14] has explicitly accounts for both dynamic provisioning and resource scheduling policies, obtaining resulting performance. Dynamic provisioning is performed in the context of replication in data Grid. Various economic market model replication strategies can be evaluated with the canonical reference. The storage simulation is only taken in an implicit way, through the storage cost estima- tions, but not any IO simulation is done. GangSim [15] have been developed to support studies of scheduling strategies in Grid environments, with a particular focus on interactions of local and global resource allocation policies. It is derived as part of the Ganglia monitoring framework, an implementation that mix simulated and real Grid components. It is evaluated the impact of different Virtual Organizations(VO)-level task assignment strategies and site usage policies on achieved performance. It is the first simulator that model not only sites but also VO users and planners, and its ability to model usage policies at both the site an VO levels. There are algorithms for job selection, job assignment, and data file replication. There are algorithms for considering costs associated with various operations. All the algorithms are grouped in a single module, and invoked every time a decision is going to be taken. Sugato Bagchi simulator [16] is focus in analysing the performance of Grid computing workloads. It is a toolkit for IT consultants to design schedulers workloads for optimal resource capacity, and to estimate the adecuation of the Grid infrastructures design. Resource scheduling has few typical policies such as load levelling, greedy(the task is sent to the resource that can complete it the faster), round robin scheduling, or threshold-based (tasks are sent to a preferred resource until a certain performance parameter level is breached). Other interesting feature is that it has a nonprogrammer user interface, it is a graphical modelling environment easy to use for designers and consultants. We have seen a state of the art on Grid scheduling and replication evaluation methods using both simulating and emulating. We stand out the extremely complexity of the issue, that makes the existing tools only valid for specific studies, and exposes the uncovered necessity of a completed simulation tool for generic Grid evaluation methodology. • Latency. Figure 1 presents the SiCoGrid UML design, with all the modelled components and some of the main attributes. Figure 1. SiCoGrid UML design The complete toolkit includes a workload generating program, represented on the figure 1 as the Access Pattern. The workload application create the log for the given input arguments: access pattern, random seed, number of Grid clients by node or site, number of jobs by Grid client. The access pattern may choose full file, sequential block access, random, unitary random walk, or gaussian random walk. The random seed is for statistical experiment repetitions. Number of Grid Clients in a node or site, is measurement of the workload weigh. The number of jobs by grid client is a component for lenght of the experiment. 3 SiCoGrid Design and Implementation The meaningful components of the Grid simulator are • Computing resources. • Storage resources. • Networking resources. Our goal is to provide an evaluation tool of the scheduling and replication approaches, that correspon with low level layer of Grid infrastructure. On this context, we realize on the significance of the attributes allocation. Asociated to the main Grid components are the following attributes: • Computing power. • IO throughput. • Bandwidth. Figure 2. SiCoGrid node scheme Each job will request many file blocks. The workload application return for each file request an Active Time and a Passive Time. Those times are empirical model of Web document arrivals at access link[17]. After a job get a file block response, it spend an Active Time for process the block part of the job, this time is calculated based on Computer Elements featured specifications on network configuration file. Passive Time is the time that the user hold between one job and another. For this parameter we use a Pareto distribution with k=1 and alpha = 0.9 with infinite mean and variance, that is a characteristic Web Service users distribution[18]. The Grid Site may inherit in a Router, and Grid Node with assigned Computing and Storage Elements. The Grid node specification shown on Figure 2 is used on GT scheme, and therefore in many others Grid middleware like EGEE. All Grid site components are connected to a Local Network, usually token media access with a hight bandwidth if we compare with Remote Networks. The node and RB are services runing on the same machine, and the rest of the local networks conections are show on the figure 2. Following with the Figure 1, we conect sites and routers each others with remote networks. Each Remote Network has aggregate various Socket instantiations that implements partial bandwidth of the total assigned for the Remote Network. SiCoGrid response as real systems: when the available bandwith is close to the top, more bandwith is asigned for a network transaction, when is close zero, then less bandwidth is asigned. Figure 3. Computing on the node comunication protocol Figure 3 is a very representative issue. We can see a communications protocol between Grid site components, with computing on the node scheduling policy and pure Data Grid. (a): The client read the request from the log file. (b): The client launch a request on the site or node, through the Local Network to the Resource Broker, that will manage the request in order to return to the client the appropriate data and computing results. (c): If the requested file is not on the site, then the RB pass the request to the node that depending on the replication and scheduling algorithms, it route to the appropriate Remote Network instantiation. (d): Asynchronous data replies from remote sites are received on the node, that send it to the apropiate SE. (e): If the requested file is on the site, the block file is send to CE. (e)ACK: Partial computing results are send to Node. (b)ACK: Partial computing results are send to Client. This is the case that the client has to know the results of the job request, to obtain the next block file object to request. The process is the same for N request of a job, and after the last job request, the Grid client user will spend a Pasive Time. When the Grid Client receives results, from local or remote sites, then submit a new request, if the request was the last one of the job, the Grid Client holds a Passive Time before a new job starts. The drawback of the presented SiCoGrid is that suppose unlimited buffering resources for scheduling and replica algorithms. This is a small lack comparing with the much more significant assumptions of others Grid simulators, anyway it will fix on future releases. We have implemented SiCoGrid, developed in Parsec[19] that is a combination of C and an event driven simulator definition for ANSI C automatic code generation. We also use DiskSim[5] for the storage disks simulation subsystem. The Parsec specification is an enhancement C language for a general purpose simulation language, that is design as data abstract types, moreover than a object oriented language. A class definition is implemented as an entity, and there also is an entity communication using message passing scheme. One of the Parsec meaningful features is that it launch a thread for any entity instantiation, that in our environment makes SiCoGrid to be scalable, taking advance over other simulators toolkits, that uses one thread for each task(task as a part of a job) in a way that avoid uses for large scale simulations. Nowadays we have a beta release that implements on the Node layer some replica algorithms functions, that are invoked both on Grid Node and RB. Thus the Grid researches can define the algorithms on the Grid Node class, make some code update on the Resource Broker, and evaluate them comparing with the implemented canonical algorithms and with others algorithms of our beta release. The SiCoGrid scheduling policies are canonical FIFO algorithms with three variants: • Computing on the Grid client, that is equivalent of pure Data Grid. The specific data are reply to the client that holds the computing resources for an Active Time. 4 Emergent Artificial Intelligence algorithms on SiCoGrid • Computing on the node: The Active Time is spend on the Computing Elements of the site, like on Figure 3. EAI is an Artificial Intelligence branch that inspired in the natural social behaviour is used for optimization. Bees swarm, birds flocks searching food[24], or ant colony[25] Traditional PSO algorithm was created by Dr. Eberhart. The PSO-Grid algorithm was proposed on our previous work[21]. On Grid environments we introduce some tactic modifications, based on the strategy ”follow the closer bird from the food chunk” as social PSO flavour. A bird flock is in a random search for food in an area. For each bird there is only one valid kind of food. The bird does not known where is the food chunk, but its known how long is from the d ifferent areas and it know how many birds are finding they food chunk on this areas, this i s called food chirp. This is the social component of our approach, thus the distance to the food chunk is calculated for each bird flock, not for individual birds. The strategy is to follow the closer bird flock with best success food search. The PSO-Grid uses a performance metric for a file replication between two nodes i, j , defined in equation 1. • Computing on the Grid: Agents are launch to the appropriate remote Grid site with the required data. On the GT middleware and family, data services or components can be classified as replica selection, location, optimisation and deletion. SiCoGrid file deletion mechanism could be Least Frecuent Used(LFU) and Least Recent Used(LRU), but the most of the times LRU will performs better. It also is implemented deletion based on market model. For replica selection, location and optimisation the required functionalities are within each of the four implemented approaches for beta release: • Unconditional replication: This is the canonical that always take the replica source from the Grid site file producer. • Market Model: This is the OptorSim scheme[14][20] that uses the economic market model for replica optimisation. • Particle Swarm Optimisation approach, as we propose on a previous paper[21] • Ant Colony Optimisation[22]. SiCoGrid also offers additional functionalities in alpha development stage: IO Kind with two options, the beta tested local IO, and the advanced remote IO, allowing to read a block of a remote file without replication on local node. Routing scheme option parameter is available, also with two options, one in beta released that is the traditional static routing, and the second in alpha release that is a pseudo-adaptive routing, based on Duato approach[23]. SiCoGrid may implements different simulation Grid infrastructures, using a header file where is defined a specific Grid topology and others simulation parameters, for compiling a specific simulation program to the specific parametrised environment. We are using our beta SiCoGrid for some Grid research works. The simulations on Intel Copermine 1600MHz single processor and 512Mb memory size machine, performs same magnitude simulation time than real Grid time, for a small Grid infrastructure of 8 Grid sites. Actually this model does not fit with our experimentation design requirements, that include many factors, levels and repetitions. A compromise solution is scale Grid resources, and scale file size, obtaining scaled job response times. This is not as reliable as the original dimension of the environments, but allow us to complete our proposed algorithm evaluations. pi,j = (ej ∗ ci,j ) + ((1 − eb ) ∗ ci,b ) (1) The external hit ration, e is calculated based on N lasts external success request ratio on node j. We use b as the identifier of the node with the best performance metric asociated to i, from the evaluated j nodes. Initially b is the producer node of the replica, and in the pseudo-code below is the get producer function. Considering network access cost, c, we propose the following equeation 2: c(i, j) = lti,j ∗ c1 + (M AXBW − bwi,j ) ∗ c2 (2) For our case c1 = 1 and c2 = 0.2. On the equation 2 c1 and c2 are coefficients that balance the relative relevance between latency and bandwidth, they also should fit with the bandwidth and latency values of the specific Grid infrastructure, and also fit with their measure relationship (ms. and MB/s.). At the end of the day latency is more important than bandwidth, because latency is always constant, and bandwidth has a variable behaviour depending on sockets allocations and number of network request in a specific moment. M AXBW is the highest bandwidth of all the Grid infrastructure. The performance function is balancing the probability of find a replica in a node j w ith the probability of not finding on j, where we have to reply from the node with be st metricb, initially the producer. The core pseudo-code is the function getPSOBest that return the best performance node from node-Id to file referenced on f. The get PSO metric function calculate the performance PSO metric described in the equation above 1. The 2 equation is implemented on the get network cost function. NodeIdType getPSOBest(NodeIdType i, FileIdType f) bestIdNode = getproducer(f) bestPSOmetric = getnetworkcost(i,bestIdNode) τ (r, s) = (1 − α)τ (r, s) + Σ∆τk (r, s) • Every Grid request is an ant, when it find its file object, the ant died. • The Grid replies routing is done with traditional methods. The ACO-Grid algorithm was proposed on our previous work[22]. For computational purposes is relevant the way of finding paths between food sources and anthill. While walking ants places on the ground some amount of pheromone. Ants smell pheromone and when choosing their way, they tend in probability to the paths marked with stronger pheromone concentrations. When the time pass the pheromone concentration decrease. Repeating same behaviour they compose optimised trails that are dynamically defining, and they use to find food sources and the nests. The historic algorithm was enunciate by Dr.Dorigo for salesman traveller[26]. This environment is very similar to the Grid, and can be used in a very direct way following the algorithm: Initialise Loop /* An iteration */ Each ant is positioned on a starting node. Loop /* A step */ Each ant applies a state transition rule to incrementally build a solution and a local pheromone updating rule Until all ants have built a complete solution A global pheromone updating rule is applied Until End condition. • ACO-Grid does not use global updating. Every time a request is processed on a Grid site, tau is update for all the site conections . • The Grid distance or cost is defined on equation 5 as a function of netwo rk latency lt and bandwidth bw. δ(r, s) = ltr,s ∗ c1 + (M AXBW − bwr,s ) ∗ c2 (5) On the equation 5 is calculated the same as 2, explanined on PSO above. Advancing routing features may change network cost used for file reply routing, but Delta is constant for every for file request routing. 5 Conclusions and Future Work Each edge between node (r, s) has a distance or cost associate δ(r, s) and a pheromone concentration τ (r, s). The equation 3 is the state transition rule, that is a probabilistic function for each node u, that has not been visited by each ant on node r. [τ (r, s)][η(r, s)]β Σ[τ (r, u)][η(r, u)]β (4) Where α is the pheromone evaporation factor between 0 and 1. And ∆τk (r, s) is the reverse of the distance or cost done by ant k, if (r,s) is its path and is 0 if it is not in the path. The ACO-Grid flavour modified from the original ACO is as follow: For each j from the Grid node set repeat if ( i != j ) if ( get-PSO-metric(i,j) less bestPSOmetric ) bestPSOmetric = getPSOmetric(i,j) bestIdNode = j End if End if Do Repeat return(bestIdNode) Pk (r, s) = The parameter β determine the relevance of the pheromone concentration compared with the distance. The pheromone concentration on equation 4 is applied in each edge of the systems, for a global pheromone updating rule. (3) We also have there the η(r, s) that is the reverse tau function. We have investigated the problem of an universal Grid evaluation method. This issue is not resolved with analytical studies or real experiments, and simulation is the usual approach. But no generic simulation tool was available for researchers and computing engineers for both replication and scheduling. We have presented SiCoGrid, a Grid simulation toolkit, that enhance features over existing Grid simulators, and present a more complete Grid components shaping that presents a more reliable results. We have identify the components of disk, network, and computing resources and some attributes that should be shaped in a grid simulator. A wide variety of that replication algorithms can be compared with SiCoGrid, and some canonical scheduling policies. We also offer an extensible open source in a modular way, that allow easy integration of others algorithms. Advanced Grid functionalities are in alpha development stage, including remote IO and adaptive routing that are considerer in our approach to the evaluation method. In future work we will present a gparsec, a GNU-GPL version of the parsec, that will achieve our goal of a production release for SiCoGrid, that will be published for the research community as the best guarantee for collective contribution scheme. We also plan to introduce parallelisation features to the gparser in order to run real scale simulations, using a cluster or Grid environment with some of the more used techniques like OpenMP or MPI. We also like to validate our simulation results on real Grids, such as EGEE. Another interesting aspect is to introduce real state of the art scheduling policies, furthermore than presented canonicals, and also Emergent Artificial Intelligent algorithms following our Data Grid studies. For this purpose we are looking partners from the Grid scheduling community. Our ultimate goal is make SiCoGrid an universal toolkit for evaluating Grid scheduling and replication algorithms, with GNU-GPL license for all the toolkit code, including gparsec, that will allow full control and scalable development paradigm, and a parallelised simulations of realistic Grid scenarios and high intensive experimentations designs. 6 Acknowledgments This work has been supported by the Spanish Ministry of Education and Science under the TIN 2004-02156 contract. [7] Takefusa, Matsuoka, Nakada, Aida, and Nagashima, “Overview of a performance evaluation system for global computing scheduling algorithms,” in In Proceedings of the 8th IEEE International Symposium on High Performance Distributed Computing (HPDC8), 1999, pp. 97–104. [8] A. Takefusa, O. Tatebe, S. Matsuoka, and Y. Morita, “Performance analysis of scheduling and replication algorithms on grid datafarm architecture for highenergy physics applications,” in Proceedings of the 12th IEEE international Symposium on High Performance Distributed Computing(HPDC12). 2003, IEEE CS Press. [9] Song, Liu, Jakobsen, Bhagwan, Zhang, Taura, and Chien, “The microgrid a scientific tool for modeling computational grids,” in In Proceedings of SuperComputing 2000 (SC’00), 2000. [10] Rajkumar Buyyya and Manzur Murshed, “Gridsim: a toolkit for the modeling and simulation of distributed resource management and scheduling for grid computing,” Concurrency and Computation: Practice and Experience, vol. 14, pp. 1175–1220, 2002. [1] I. Foster and C. Kesselman, “Globus: A metacomputing infrastructure toolkit,” IJSA, vol. 11, no. 2, pp. 115–128, 1997. [11] Buyya, Abramson, and Giddy, “Nimrod/g: An architecture for a resource management and scheduling system in a global computational grid,” in Proceedings 4th International Conference and Exhibition on High Performance Computing in Asia Pacific Region (HPC ASIA 2000). 2000, pp. 14–17, IEEE Computer Society Press. [2] J. Frey, T. Tannenbaum, I. Foster, M. Livny, and S. Tuecke, “Condor-g: A computation management agent for multi-institutional grids,” in In 10th IEEE Symposium on High Performance Distributed Computing (HPDC10). 2001, IEEE-P. [12] Legrand, Marchal, and Casanova, “Scheduling distributed applicaitons: The simgrid simulation framework,” in Proceedings of the 3rd IEEE/ACM International Symposium on Cluster Computing and the Grid (CCGRID.03), 2003. References [3] Kurt Stockinger and WP2 Team, “Data management services in the european datagrid project,” in eScience All Hands Meeting, September 2004. [4] http://www mash.cs.berkeley.edu/ns, simulator,” 1989. “Ns network [5] Gregory R.Granger, Bruce L.Worthington, and Yale N.Patt, Eds., The DiskSim Simulation Environment. Version 2.0 Reference Manual, University of Michigan, 1999. [6] Terzis, Nikoloudakis, Wang, and Zhang, “Irl-sim: A general purpose packet level network simulator,” in In Proceedings of the 33rc Annual Simulation Simposium, 2000. [13] Kavitha Ranganathan and Ian Foster, “Simulation studies of computation and data scheduling algorithms for data grids,” Journal of Grid Computing, vol. 1, no. 1, 2003. [14] William H. Bell, David G. Cameron, Luigi Capozza, A. Paul Millar, Kurt Stockinger, and Floriano Zini, “Optorsim - a grid simulator for studying dynamic data replication strategies,” International Journal of High Performance Computing Applications, vol. 17, no. 4, 2003. [15] Catalin L. Dumitrescu and Ian Foster, “Gangsim: A simulator for grid scheduling studies,” in In Cluster Computing and Grid, 2005. [16] Sugato Bagchi, “Simulation of grid computing infrastructure: challenges and solutions,” in Proceedings of the 2005 Winter Simulation Conference, 2005. [17] Shuang Deng, “Empirical model of www document arrivals at access link,” in Proceedings of the 1996 IEEE International Conference on Communication. 1996, IEEE-P. [18] Paul Barford and Mark Crovella, “Generating representative web workloads,” in Network and Server Performance Evaluation In Proceedings of the 1998 ACM SIGMETRICS International Conference on Measurement and Modeling of Computer Systems. 1998, pp. 151–160, ACM SIGMETRICS. [19] Daan Leijen, “Parsec, a fast combinator parser,” Tech. Rep., Computer Science Department, University of Utrecht, 2002. [20] William H. Bell, David G. Cameron, Luigi Capozza, A. Paul Millar, Kurt Stockinger, and Floriano Zini, “Simulation of dynamic grid replication strategies in optorsim,” in Proc. of the ACM/IEEE Workshop on Grid Computing (Grid 2002). November 2002, Springer-Verlag. [21] Vı́ctor Méndez and Felix Garcı́a, “Pso-lru algorithm for datagrid replication service,” in Proceedings of 2006 International Workshop on HighPerformance Data Management in Grid Environments. 2006, Springer-Verlag. [22] Vı́ctor Méndez and Felix Garcı́a, “Ant colony optimization for datagrid replication services,” Tech. Rep., RR-06-08. Computer Science Departament, Universidad de Zaragoza., 2006. [23] Jose Duato, “New theory of deadlock-free adaptive routing in wormhole networks,” IEEE Transactions on Parallel and Distributed Systems, vol. 4, no. 12, pp. 1320–1331, 1993. [24] R.C. Shi, Y. ;Eberhart, “A modified particle swarm optimizer,” in Proceedings of the IEEE International Conference on Evolutionary Computation. 1998, pp. 69–73, IEEE Press. Piscataway, NY. [25] Dorigo M., V. Maniezzo, and A. Colorni, “The ant system: An autocatalytic optimizing process. technical report no. 91-016 revised,” Tech. Rep., Politecnico di Milano, 1991. [26] M. Dorigo, Optimization, learning and natural algorithms, Ph.D. thesis, Politecnico di Milano, Italy., 1992.