Skip to content
Snippets Groups Projects
tstore.lifecycle 45.93 KiB
<?xml version="1.0" encoding="UTF-8"?>
<librede-lifecycle:LifeCycleConfiguration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:librede="http://www.descartes-research.net/librede/configuration/1.0" xmlns:librede-lifecycle="http://tools/descartes/librede/rrde/lifecycle" xmlns:librede-optimization="http://tools/descartes/librede/rrde/optimization" xmlns:librede-recommendation="http://tools/descartes/librede/rrde/recommendation" recommendationLoopTime="-1" optimizationLoopTime="20" selectionLoopTime="-1" estimationLoopTime="5">
  <recommendationConfiguration>
    <validator validateEstimates="true">
      <validators type="tools.descartes.librede.validation.ResponseTimeValidator"/>
      <validators type="tools.descartes.librede.validation.UtilizationValidator"/>
    </validator>
    <trainingData rootFolder="C:\Users\Johannes\Desktop\librede\short traces\">
      <input>
        <dataSources name="NS CSV" type="tools.descartes.librede.datasource.csv.CsvDataSource">
          <parameters name="TimestampFormat" value="[ns]"/>
        </dataSources>
        <dataSources name="MS CSV" type="tools.descartes.librede.datasource.csv.CsvDataSource">
          <parameters name="TimestampFormat" value="[ms]"/>
        </dataSources>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.CategoryEndpoint.findEntityById.csv">
          <metric href="librede:metrics#RESIDENCE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.8"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.CategoryEndpoint.listAllEntities.csv">
          <metric href="librede:metrics#RESIDENCE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.7"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.OrderEndpoint.createEntity.csv">
          <metric href="librede:metrics#RESIDENCE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.1"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.OrderEndpoint.listAllForUser.csv">
          <metric href="librede:metrics#RESIDENCE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.0"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.OrderItemEndpoint.createEntity.csv">
          <metric href="librede:metrics#RESIDENCE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.2"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.countForCategory.csv">
          <metric href="librede:metrics#RESIDENCE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.3"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.findEntityById.csv">
          <metric href="librede:metrics#RESIDENCE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.5"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.listAllForCategory.csv">
          <metric href="librede:metrics#RESIDENCE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.4"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.UserEndpoint.findEntityById.csv">
          <metric href="librede:metrics#RESIDENCE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.6"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" aggregation="AVERAGE" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.1" file="10.1.3.32.csv">
          <metric href="librede:metrics#UTILIZATION"/>
          <unit href="librede:units#NONE"/>
          <interval value="1.0">
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.0"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" aggregation="AVERAGE" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.1" file="10.1.3.37.csv">
          <metric href="librede:metrics#UTILIZATION"/>
          <unit href="librede:units#NONE"/>
          <interval value="1.0">
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.1"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" aggregation="AVERAGE" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.1" file="10.1.3.42.csv">
          <metric href="librede:metrics#UTILIZATION"/>
          <unit href="librede:units#NONE"/>
          <interval value="1.0">
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.2"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.CategoryEndpoint.findEntityById.csv">
          <metric href="librede:metrics#RESPONSE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.8"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.CategoryEndpoint.listAllEntities.csv">
          <metric href="librede:metrics#RESPONSE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.7"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.OrderEndpoint.createEntity.csv">
          <metric href="librede:metrics#RESPONSE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.1"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.OrderEndpoint.listAllForUser.csv">
          <metric href="librede:metrics#RESPONSE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.0"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.OrderItemEndpoint.createEntity.csv">
          <metric href="librede:metrics#RESPONSE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.2"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.countForCategory.csv">
          <metric href="librede:metrics#RESPONSE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.3"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.findEntityById.csv">
          <metric href="librede:metrics#RESPONSE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.5"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.listAllForCategory.csv">
          <metric href="librede:metrics#RESPONSE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.4"/>
        </observations>
        <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@recommendationConfiguration/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.UserEndpoint.findEntityById.csv">
          <metric href="librede:metrics#RESPONSE_TIME"/>
          <unit href="librede:units#NANOSECONDS"/>
          <interval>
            <unit href="librede:units#SECONDS"/>
          </interval>
          <mappings entity="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.6"/>
        </observations>
      </input>
      <workloadDescription>
        <resources name="C32" numberOfServers="12" demands="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.0/@tasks.0 //@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.1/@tasks.0 //@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.2/@tasks.0 //@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.3/@tasks.0 //@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.4/@tasks.0 //@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.5/@tasks.0 //@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.6/@tasks.0 //@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.7/@tasks.0 //@recommendationConfiguration/@trainingData.0/@workloadDescription/@services.8/@tasks.0"/>
        <resources name="C37" numberOfServers="4"/>
        <resources name="C42" numberOfServers="12"/>
        <services name="tools.descartes.teastore.persistence.rest.OrderEndpoint.listAllForUser">
          <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.OrderEndpoint.listAllForUser" resource="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.0"/>
        </services>
        <services name="tools.descartes.teastore.persistence.rest.OrderEndpoint.createEntity">
          <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.OrderEndpoint.createEntity" resource="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.0"/>
        </services>
        <services name="tools.descartes.teastore.persistence.rest.OrderItemEndpoint.createEntity">
          <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.OrderItemEndpoint.createEntity" resource="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.0"/>
        </services>
        <services name="tools.descartes.teastore.persistence.rest.ProductEndpoint.countForCategory">
          <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.ProductEndpoint.countForCategory" resource="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.0"/>
        </services>
        <services name="tools.descartes.teastore.persistence.rest.ProductEndpoint.listAllForCategory">
          <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.ProductEndpoint.listAllForCategory" resource="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.0"/>
        </services>
        <services name="tools.descartes.teastore.persistence.rest.ProductEndpoint.findEntityById">
          <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.ProductEndpoint.findEntityById" resource="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.0"/>
        </services>
        <services name="tools.descartes.teastore.persistence.rest.UserEndpoint.findEntityById">
          <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.UserEndpoint.findEntityById" resource="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.0"/>
        </services>
        <services name="tools.descartes.teastore.persistence.rest.CategoryEndpoint.listAllEntities">
          <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.CategoryEndpoint.listAllEntities" resource="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.0"/>
        </services>
        <services name="tools.descartes.teastore.persistence.rest.CategoryEndpoint.findEntityById">
          <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.CategoryEndpoint.findEntityById" resource="//@recommendationConfiguration/@trainingData.0/@workloadDescription/@resources.0"/>
        </services>
      </workloadDescription>
    </trainingData>
    <featureAlgorithm featureExtractor="tools.descartes.librede.rrde.util.extract.ReducedFeatureExtractor">
      <rateUnit href="librede:units#REQUESTS_PER_MINUTE"/>
      <aggregation value="60.0">
        <unit href="librede:units#SECONDS"/>
      </aggregation>
    </featureAlgorithm>
    <learningAlgorithm xsi:type="librede-recommendation:NeuralNetworkAlgorithmSpecifier" algorithmName="tools.descartes.librede.rrde.recommendation.algorithm.impl.SmileNN"/>
    <estimators window="60">
      <approaches type="tools.descartes.librede.approach.ServiceDemandLawApproach"/>
      <algorithms type="tools.descartes.librede.bayesplusplus.ExtendedKalmanFilter"/>
      <algorithms type="tools.descartes.librede.nnls.LeastSquaresRegression"/>
      <algorithms type="tools.descartes.librede.ipopt.java.RecursiveOptimization"/>
      <algorithms type="tools.descartes.librede.algorithm.SimpleApproximation"/>
      <stepSize value="60.0">
        <unit href="librede:units#SECONDS"/>
      </stepSize>
      <startTimestamp value="1.370087520861E9">
        <unit href="librede:units#SECONDS"/>
      </startTimestamp>
      <endTimestamp value="1.370090939129E9">
        <unit href="librede:units#SECONDS"/>
      </endTimestamp>
    </estimators>
    <estimators window="60">
      <approaches type="tools.descartes.librede.approach.ResponseTimeApproximationApproach"/>
      <algorithms type="tools.descartes.librede.bayesplusplus.ExtendedKalmanFilter"/>
      <algorithms type="tools.descartes.librede.nnls.LeastSquaresRegression"/>
      <algorithms type="tools.descartes.librede.ipopt.java.RecursiveOptimization"/>
      <algorithms type="tools.descartes.librede.algorithm.SimpleApproximation"/>
      <stepSize value="60.0">
        <unit href="librede:units#SECONDS"/>
      </stepSize>
      <startTimestamp value="1.370087520861E9">
        <unit href="librede:units#SECONDS"/>
      </startTimestamp>
      <endTimestamp value="1.370090939129E9">
        <unit href="librede:units#SECONDS"/>
      </endTimestamp>
    </estimators>
    <estimators window="60">
      <approaches type="tools.descartes.librede.approach.WangKalmanFilterApproach"/>
      <algorithms type="tools.descartes.librede.bayesplusplus.ExtendedKalmanFilter"/>
      <algorithms type="tools.descartes.librede.nnls.LeastSquaresRegression"/>
      <algorithms type="tools.descartes.librede.ipopt.java.RecursiveOptimization"/>
      <algorithms type="tools.descartes.librede.algorithm.SimpleApproximation"/>
      <stepSize value="60.0">
        <unit href="librede:units#SECONDS"/>
      </stepSize>
      <startTimestamp value="1.370087520861E9">
        <unit href="librede:units#SECONDS"/>
      </startTimestamp>
      <endTimestamp value="1.370090939129E9">
        <unit href="librede:units#SECONDS"/>
      </endTimestamp>
    </estimators>
    <estimators window="60">
      <approaches type="tools.descartes.librede.approach.UtilizationRegressionApproach"/>
      <algorithms type="tools.descartes.librede.bayesplusplus.ExtendedKalmanFilter"/>
      <algorithms type="tools.descartes.librede.nnls.LeastSquaresRegression"/>
      <algorithms type="tools.descartes.librede.ipopt.java.RecursiveOptimization"/>
      <algorithms type="tools.descartes.librede.algorithm.SimpleApproximation"/>
      <stepSize value="60.0">
        <unit href="librede:units#SECONDS"/>
      </stepSize>
      <startTimestamp value="1.370087520861E9">
        <unit href="librede:units#SECONDS"/>
      </startTimestamp>
      <endTimestamp value="1.370090939129E9">
        <unit href="librede:units#SECONDS"/>
      </endTimestamp>
    </estimators>
    <estimators window="60">
      <approaches type="tools.descartes.librede.approach.KumarKalmanFilterApproach"/>
      <algorithms type="tools.descartes.librede.bayesplusplus.ExtendedKalmanFilter"/>
      <algorithms type="tools.descartes.librede.nnls.LeastSquaresRegression"/>
      <algorithms type="tools.descartes.librede.ipopt.java.RecursiveOptimization"/>
      <algorithms type="tools.descartes.librede.algorithm.SimpleApproximation"/>
      <stepSize value="60.0">
        <unit href="librede:units#SECONDS"/>
      </stepSize>
      <startTimestamp value="1.370087520861E9">
        <unit href="librede:units#SECONDS"/>
      </startTimestamp>
      <endTimestamp value="1.370090939129E9">
        <unit href="librede:units#SECONDS"/>
      </endTimestamp>
    </estimators>
    <estimators window="60">
      <approaches type="tools.descartes.librede.approach.MenasceOptimizationApproach"/>
      <algorithms type="tools.descartes.librede.bayesplusplus.ExtendedKalmanFilter"/>
      <algorithms type="tools.descartes.librede.nnls.LeastSquaresRegression"/>
      <algorithms type="tools.descartes.librede.ipopt.java.RecursiveOptimization">
        <parameters name="PrintLevel" value="0"/>
      </algorithms>
      <algorithms type="tools.descartes.librede.algorithm.SimpleApproximation"/>
      <stepSize value="60.0">
        <unit href="librede:units#SECONDS"/>
      </stepSize>
      <startTimestamp value="1.370087520861E9">
        <unit href="librede:units#SECONDS"/>
      </startTimestamp>
      <endTimestamp value="1.370090939129E9">
        <unit href="librede:units#SECONDS"/>
      </endTimestamp>
    </estimators>
    <estimators window="60">
      <approaches type="tools.descartes.librede.approach.LiuOptimizationApproach"/>
      <algorithms type="tools.descartes.librede.bayesplusplus.ExtendedKalmanFilter"/>
      <algorithms type="tools.descartes.librede.nnls.LeastSquaresRegression"/>
      <algorithms type="tools.descartes.librede.ipopt.java.RecursiveOptimization">
        <parameters name="PrintLevel" value="0"/>
      </algorithms>
      <algorithms type="tools.descartes.librede.algorithm.SimpleApproximation"/>
      <stepSize value="60.0">
        <unit href="librede:units#SECONDS"/>
      </stepSize>
      <startTimestamp value="1.370087520861E9">
        <unit href="librede:units#SECONDS"/>
      </startTimestamp>
      <endTimestamp value="1.370090939129E9">
        <unit href="librede:units#SECONDS"/>
      </endTimestamp>
    </estimators>
    <estimators window="60">
      <approaches type="tools.descartes.librede.approach.ResponseTimeRegressionApproach"/>
      <algorithms type="tools.descartes.librede.bayesplusplus.ExtendedKalmanFilter"/>
      <algorithms type="tools.descartes.librede.nnls.LeastSquaresRegression"/>
      <algorithms type="tools.descartes.librede.ipopt.java.RecursiveOptimization">
        <parameters name="PrintLevel" value="0"/>
      </algorithms>
      <algorithms type="tools.descartes.librede.algorithm.SimpleApproximation"/>
      <stepSize value="60.0">
        <unit href="librede:units#SECONDS"/>
      </stepSize>
      <startTimestamp value="1.370087520861E9">
        <unit href="librede:units#SECONDS"/>
      </startTimestamp>
      <endTimestamp value="1.370090939129E9">
        <unit href="librede:units#SECONDS"/>
      </endTimestamp>
    </estimators>
  </recommendationConfiguration>
  <optimizationConfiguration>
    <containsOf>
      <algorithm xsi:type="librede-optimization:IterativeParameterOptimizerSpecifier" algorithmName="tools.descartes.librede.rrde.optimization.algorithm.impl.IterativeParameterOptimizationAlgorithm" numberOfSplits="10" numberOfExplorations="5" numberOfIterations="3"/>
      <!--<algorithm xsi:type="librede-optimization:LocalSearchSpecifier" algorithmName="tools.descartes.librede.rrde.optimization.algorithm.impl.HillClimbingAlgorithm"/>-->
      <trainingData rootFolder="C:\Users\Johannes\Desktop\librede\long traces\">
        <input>
          <dataSources name="NS CSV" type="tools.descartes.librede.datasource.csv.CsvDataSource">
            <parameters name="TimestampFormat" value="[ns]"/>
          </dataSources>
          <dataSources name="MS CSV" type="tools.descartes.librede.datasource.csv.CsvDataSource">
            <parameters name="TimestampFormat" value="[ms]"/>
          </dataSources>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.CategoryEndpoint.findEntityById.csv">
            <metric href="librede:metrics#RESIDENCE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.8"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.CategoryEndpoint.listAllEntities.csv">
            <metric href="librede:metrics#RESIDENCE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.7"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.OrderEndpoint.createEntity.csv">
            <metric href="librede:metrics#RESIDENCE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.1"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.OrderEndpoint.listAllForUser.csv">
            <metric href="librede:metrics#RESIDENCE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.0"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.OrderItemEndpoint.createEntity.csv">
            <metric href="librede:metrics#RESIDENCE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.2"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.countForCategory.csv">
            <metric href="librede:metrics#RESIDENCE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.3"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.findEntityById.csv">
            <metric href="librede:metrics#RESIDENCE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.5"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.listAllForCategory.csv">
            <metric href="librede:metrics#RESIDENCE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.4"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="residencetime-tools.descartes.teastore.persistence.rest.UserEndpoint.findEntityById.csv">
            <metric href="librede:metrics#RESIDENCE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.6"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" aggregation="AVERAGE" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.1" file="10.1.3.32.csv">
            <metric href="librede:metrics#UTILIZATION"/>
            <unit href="librede:units#NONE"/>
            <interval value="1.0">
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.0"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" aggregation="AVERAGE" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.1" file="10.1.3.37.csv">
            <metric href="librede:metrics#UTILIZATION"/>
            <unit href="librede:units#NONE"/>
            <interval value="1.0">
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.1"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" aggregation="AVERAGE" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.1" file="10.1.3.42.csv">
            <metric href="librede:metrics#UTILIZATION"/>
            <unit href="librede:units#NONE"/>
            <interval value="1.0">
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.2"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.CategoryEndpoint.findEntityById.csv">
            <metric href="librede:metrics#RESPONSE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.8"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.CategoryEndpoint.listAllEntities.csv">
            <metric href="librede:metrics#RESPONSE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.7"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.OrderEndpoint.createEntity.csv">
            <metric href="librede:metrics#RESPONSE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.1"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.OrderEndpoint.listAllForUser.csv">
            <metric href="librede:metrics#RESPONSE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.0"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.OrderItemEndpoint.createEntity.csv">
            <metric href="librede:metrics#RESPONSE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.2"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.countForCategory.csv">
            <metric href="librede:metrics#RESPONSE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.3"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.findEntityById.csv">
            <metric href="librede:metrics#RESPONSE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.5"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.ProductEndpoint.listAllForCategory.csv">
            <metric href="librede:metrics#RESPONSE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.4"/>
          </observations>
          <observations xsi:type="librede:FileTraceConfiguration" dataSource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@input/@dataSources.0" file="responsetime-tools.descartes.teastore.persistence.rest.UserEndpoint.findEntityById.csv">
            <metric href="librede:metrics#RESPONSE_TIME"/>
            <unit href="librede:units#NANOSECONDS"/>
            <interval>
              <unit href="librede:units#SECONDS"/>
            </interval>
            <mappings entity="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.6"/>
          </observations>
        </input>
        <workloadDescription>
          <resources name="C32" numberOfServers="12" demands="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.0/@tasks.0 //@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.1/@tasks.0 //@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.2/@tasks.0 //@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.3/@tasks.0 //@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.4/@tasks.0 //@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.5/@tasks.0 //@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.6/@tasks.0 //@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.7/@tasks.0 //@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@services.8/@tasks.0"/>
          <resources name="C37" numberOfServers="4"/>
          <resources name="C42" numberOfServers="12"/>
          <services name="tools.descartes.teastore.persistence.rest.OrderEndpoint.listAllForUser">
            <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.OrderEndpoint.listAllForUser" resource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.0"/>
          </services>
          <services name="tools.descartes.teastore.persistence.rest.OrderEndpoint.createEntity">
            <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.OrderEndpoint.createEntity" resource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.0"/>
          </services>
          <services name="tools.descartes.teastore.persistence.rest.OrderItemEndpoint.createEntity">
            <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.OrderItemEndpoint.createEntity" resource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.0"/>
          </services>
          <services name="tools.descartes.teastore.persistence.rest.ProductEndpoint.countForCategory">
            <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.ProductEndpoint.countForCategory" resource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.0"/>
          </services>
          <services name="tools.descartes.teastore.persistence.rest.ProductEndpoint.listAllForCategory">
            <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.ProductEndpoint.listAllForCategory" resource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.0"/>
          </services>
          <services name="tools.descartes.teastore.persistence.rest.ProductEndpoint.findEntityById">
            <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.ProductEndpoint.findEntityById" resource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.0"/>
          </services>
          <services name="tools.descartes.teastore.persistence.rest.UserEndpoint.findEntityById">
            <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.UserEndpoint.findEntityById" resource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.0"/>
          </services>
          <services name="tools.descartes.teastore.persistence.rest.CategoryEndpoint.listAllEntities">
            <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.CategoryEndpoint.listAllEntities" resource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.0"/>
          </services>
          <services name="tools.descartes.teastore.persistence.rest.CategoryEndpoint.findEntityById">
            <tasks xsi:type="librede:ResourceDemand" name="tools.descartes.teastore.persistence.rest.CategoryEndpoint.findEntityById" resource="//@optimizationConfiguration/@containsOf.0/@trainingData.0/@workloadDescription/@resources.0"/>
          </services>
        </workloadDescription>
      </trainingData>
      <settings>
        <validator validateEstimates="true">
          <validators type="tools.descartes.librede.validation.ResponseTimeValidator"/>
        </validator>
        <!--<parametersToOptimize xsi:type="librede-optimization:GenericParameter" startValue="0.01" parameter="//@optimizationConfiguration/@containsOf.0/@estimation/@algorithms.0/@parameters.1"/>-->
        <!--<parametersToOptimize xsi:type="librede-optimization:GenericParameter" upperBound="0.1" startValue="0.01" parameter="//@optimizationConfiguration/@containsOf.0/@estimation/@algorithms.0/@parameters.4"/>-->
        <!--<parametersToOptimize xsi:type="librede-optimization:GenericParameter" upperBound="0.1" startValue="0.01" parameter="//@optimizationConfiguration/@containsOf.0/@estimation/@algorithms.0/@parameters.0"/>-->
        <!--<parametersToOptimize xsi:type="librede-optimization:GenericParameter" upperBound="2.0" startValue="0.01" parameter="//@optimizationConfiguration/@containsOf.0/@estimation/@algorithms.0/@parameters.3"/>-->
        <!--<parametersToOptimize xsi:type="librede-optimization:GenericParameter" upperBound="2.0" startValue="0.01" parameter="//@optimizationConfiguration/@containsOf.0/@estimation/@algorithms.0/@parameters.2"/>-->
        <!--<parametersToOptimize xsi:type="librede-optimization:StepSizeRelWindow" lowerBound="20.0" upperBound="360.0" startValue="60.0" productMaxValue="7200.0"/>-->
        <parametersToOptimize xsi:type="librede-optimization:StepSize" lowerBound="10.0" upperBound="360.0" startValue="60.0"/>
        <parametersToOptimize xsi:type="librede-optimization:WindowSize" lowerBound="1.0" upperBound="60" startValue="5"/>
      </settings>
      <estimation window="60">
        <approaches type="tools.descartes.librede.approach.ResponseTimeRegressionApproach"/>
        <approaches type="tools.descartes.librede.approach.KumarKalmanFilterApproach"/>
        <approaches type="tools.descartes.librede.approach.UtilizationRegressionApproach"/>
        <approaches type="tools.descartes.librede.approach.ServiceDemandLawApproach"/>
        <approaches type="tools.descartes.librede.approach.ResponseTimeApproximationApproach"/>
        <approaches type="tools.descartes.librede.approach.WangKalmanFilterApproach"/>
        <approaches type="tools.descartes.librede.approach.LiuOptimizationApproach"/>
        <approaches type="tools.descartes.librede.approach.MenasceOptimizationApproach"/>
        <algorithms type="tools.descartes.librede.bayesplusplus.ExtendedKalmanFilter">
          <parameters name="ObserveNoiseCovariance" value="0.0001"/>
          <parameters name="BoundsFactor" value="0.9"/>
          <parameters name="StateNoiseCovariance" value="1.0"/>
          <parameters name="StateNoiseCoupling" value="1.0"/>
          <parameters name="InitialBoundsDistance" value="0.0001"/>
        </algorithms>
        <algorithms type="tools.descartes.librede.nnls.LeastSquaresRegression"/>
        <algorithms type="tools.descartes.librede.ipopt.java.RecursiveOptimization">
          <parameters name="PrintLevel" value="0"/>
        </algorithms>
        <algorithms type="tools.descartes.librede.algorithm.SimpleApproximation"/>
        <stepSize value="60.0">
          <unit href="librede:units#SECONDS"/>
        </stepSize>
        <startTimestamp value="1.370160271015E12">
          <unit href="librede:units#MILLISECONDS"/>
        </startTimestamp>
        <endTimestamp value="1.370163842435E12">
          <unit href="librede:units#MILLISECONDS"/>
        </endTimestamp>
      </estimation>
    </containsOf>
  </optimizationConfiguration>
</librede-lifecycle:LifeCycleConfiguration>