Search in sources :

Example 51 with Node

use of org.btrplace.model.Node in project scheduler by btrplace.

the class RelocatableVMTest method testReinstantiationWithPreserve.

@Test
public void testReinstantiationWithPreserve() throws SchedulerException {
    Model mo = new DefaultModel();
    Mapping map = mo.getMapping();
    VM vm5 = mo.newVM();
    VM vm6 = mo.newVM();
    VM vm7 = mo.newVM();
    Node n1 = mo.newNode();
    Node n2 = mo.newNode();
    map.addOnlineNode(n1);
    map.addOnlineNode(n2);
    map.addRunningVM(vm5, n1);
    map.addRunningVM(vm6, n1);
    map.addRunningVM(vm7, n2);
    ShareableResource rc = new ShareableResource("cpu", 10, 10);
    rc.setCapacity(n1, 7);
    rc.setConsumption(vm5, 3);
    rc.setConsumption(vm6, 3);
    rc.setConsumption(vm7, 5);
    for (VM vm : map.getAllVMs()) {
        mo.getAttributes().put(vm, "template", "small");
        mo.getAttributes().put(vm, "clone", true);
    }
    Preserve pr = new Preserve(vm5, "cpu", 5);
    ChocoScheduler cra = new DefaultChocoScheduler();
    cra.getDurationEvaluators().register(MigrateVM.class, new ConstantActionDuration<>(20));
    mo.attach(rc);
    List<SatConstraint> cstrs = new ArrayList<>();
    cstrs.addAll(Online.newOnline(map.getAllNodes()));
    cstrs.add(pr);
    cra.doOptimize(true);
    try {
        ReconfigurationPlan p = cra.solve(mo, cstrs);
        Assert.assertNotNull(p);
    } catch (SchedulerException e) {
        Assert.fail(e.getMessage(), e);
    }
}
Also used : DefaultModel(org.btrplace.model.DefaultModel) SchedulerException(org.btrplace.scheduler.SchedulerException) Node(org.btrplace.model.Node) SatConstraint(org.btrplace.model.constraint.SatConstraint) ReconfigurationPlan(org.btrplace.plan.ReconfigurationPlan) ArrayList(java.util.ArrayList) Mapping(org.btrplace.model.Mapping) ShareableResource(org.btrplace.model.view.ShareableResource) Preserve(org.btrplace.model.constraint.Preserve) DefaultChocoScheduler(org.btrplace.scheduler.choco.DefaultChocoScheduler) ChocoScheduler(org.btrplace.scheduler.choco.ChocoScheduler) DefaultChocoScheduler(org.btrplace.scheduler.choco.DefaultChocoScheduler) MigrateVM(org.btrplace.plan.event.MigrateVM) VM(org.btrplace.model.VM) Model(org.btrplace.model.Model) DefaultModel(org.btrplace.model.DefaultModel) Test(org.testng.annotations.Test)

Example 52 with Node

use of org.btrplace.model.Node in project scheduler by btrplace.

the class CShareableResourceTest method testDefaultOverbookRatio.

/**
 * The default overbooking ratio of 1 will make this problem having no solution.
 */
@Test
public void testDefaultOverbookRatio() throws SchedulerException {
    Model mo = new DefaultModel();
    VM vm1 = mo.newVM();
    VM vm2 = mo.newVM();
    Node n1 = mo.newNode();
    mo.getMapping().on(n1).run(n1, vm1, vm2);
    ShareableResource rc = new ShareableResource("foo", 0, 0);
    rc.setConsumption(vm1, 2);
    rc.setConsumption(vm2, 3);
    rc.setCapacity(n1, 5);
    mo.attach(rc);
    ChocoScheduler s = new DefaultChocoScheduler();
    List<SatConstraint> cstrs = new ArrayList<>();
    cstrs.add(new Fence(vm1, n1));
    cstrs.add(new Preserve(vm2, "foo", 4));
    // rp.solve(0, false);
    ReconfigurationPlan p = s.solve(mo, cstrs);
    Assert.assertNull(p);
}
Also used : DefaultModel(org.btrplace.model.DefaultModel) Node(org.btrplace.model.Node) SatConstraint(org.btrplace.model.constraint.SatConstraint) ReconfigurationPlan(org.btrplace.plan.ReconfigurationPlan) ArrayList(java.util.ArrayList) ShareableResource(org.btrplace.model.view.ShareableResource) Preserve(org.btrplace.model.constraint.Preserve) DefaultChocoScheduler(org.btrplace.scheduler.choco.DefaultChocoScheduler) ChocoScheduler(org.btrplace.scheduler.choco.ChocoScheduler) DefaultChocoScheduler(org.btrplace.scheduler.choco.DefaultChocoScheduler) VM(org.btrplace.model.VM) Model(org.btrplace.model.Model) DefaultModel(org.btrplace.model.DefaultModel) Fence(org.btrplace.model.constraint.Fence) Test(org.testng.annotations.Test)

Example 53 with Node

use of org.btrplace.model.Node in project scheduler by btrplace.

the class CShareableResourceTest method testInsertAction.

/**
 * Reproduce issue#145.
 */
/*@Test*/
public void testInsertAction() {
    Model mo = new DefaultModel();
    ShareableResource cpu = new ShareableResource("cpu");
    ShareableResource mem = new ShareableResource("mem");
    mo.attach(cpu);
    mo.attach(mem);
    Node node = mo.newNode();
    Node node2 = mo.newNode();
    mo.getMapping().on(node, node2);
    cpu.setCapacity(node, 100000);
    mem.setCapacity(node, 100000);
    cpu.setCapacity(node2, 100000);
    mem.setCapacity(node2, 100000);
    for (int i = 0; i < 10000; i++) {
        VM vm = mo.newVM();
        mo.getMapping().run(node, vm);
        cpu.setConsumption(vm, 1);
        mem.setConsumption(vm, 1);
    }
    ChocoScheduler sched = new DefaultChocoScheduler();
    List<SatConstraint> cstrs = new ArrayList<>();
    cstrs.addAll(Running.newRunning(mo.getMapping().getAllVMs()));
    cstrs.addAll(NoDelay.newNoDelay(mo.getMapping().getAllVMs()));
    cstrs.addAll(Fence.newFence(mo.getMapping().getAllVMs(), Arrays.asList(node2)));
    cstrs.addAll(Preserve.newPreserve(mo.getMapping().getAllVMs(), "cpu", 2));
    cstrs.addAll(Preserve.newPreserve(mo.getMapping().getAllVMs(), "mem", 2));
    ReconfigurationPlan plan = sched.solve(mo, cstrs);
    System.out.println(plan);
    System.out.println(sched.getStatistics());
}
Also used : DefaultModel(org.btrplace.model.DefaultModel) DefaultChocoScheduler(org.btrplace.scheduler.choco.DefaultChocoScheduler) ChocoScheduler(org.btrplace.scheduler.choco.ChocoScheduler) DefaultChocoScheduler(org.btrplace.scheduler.choco.DefaultChocoScheduler) Node(org.btrplace.model.Node) VM(org.btrplace.model.VM) SatConstraint(org.btrplace.model.constraint.SatConstraint) ReconfigurationPlan(org.btrplace.plan.ReconfigurationPlan) Model(org.btrplace.model.Model) DefaultModel(org.btrplace.model.DefaultModel) ArrayList(java.util.ArrayList) ShareableResource(org.btrplace.model.view.ShareableResource) SatConstraint(org.btrplace.model.constraint.SatConstraint)

Example 54 with Node

use of org.btrplace.model.Node in project scheduler by btrplace.

the class CShareableResourceTest method testWithFloat.

@Test
public void testWithFloat() throws SchedulerException {
    Model mo = new DefaultModel();
    VM vm1 = mo.newVM();
    VM vm2 = mo.newVM();
    Node n1 = mo.newNode();
    Node n2 = mo.newNode();
    Mapping map = mo.getMapping().on(n1, n2).run(n1, vm1, vm2);
    org.btrplace.model.view.ShareableResource rc = new ShareableResource("foo");
    rc.setCapacity(n1, 32);
    rc.setConsumption(vm1, 3);
    rc.setConsumption(vm2, 2);
    mo.attach(rc);
    ChocoScheduler cra = new DefaultChocoScheduler();
    List<SatConstraint> cstrs = new ArrayList<>();
    cstrs.addAll(Online.newOnline(map.getAllNodes()));
    Overbook o = new Overbook(n1, "foo", 1.5, false);
    cstrs.add(o);
    Overbook o2 = new Overbook(n2, "foo", 1.5, false);
    cstrs.add(o2);
    cstrs.add(new Preserve(vm1, "foo", 5));
    ReconfigurationPlan p = cra.solve(mo, cstrs);
    Assert.assertNotNull(p);
}
Also used : DefaultModel(org.btrplace.model.DefaultModel) Node(org.btrplace.model.Node) SatConstraint(org.btrplace.model.constraint.SatConstraint) ReconfigurationPlan(org.btrplace.plan.ReconfigurationPlan) ArrayList(java.util.ArrayList) Mapping(org.btrplace.model.Mapping) ShareableResource(org.btrplace.model.view.ShareableResource) Preserve(org.btrplace.model.constraint.Preserve) DefaultChocoScheduler(org.btrplace.scheduler.choco.DefaultChocoScheduler) ChocoScheduler(org.btrplace.scheduler.choco.ChocoScheduler) DefaultChocoScheduler(org.btrplace.scheduler.choco.DefaultChocoScheduler) VM(org.btrplace.model.VM) Overbook(org.btrplace.model.constraint.Overbook) Model(org.btrplace.model.Model) DefaultModel(org.btrplace.model.DefaultModel) ShareableResource(org.btrplace.model.view.ShareableResource) Test(org.testng.annotations.Test)

Example 55 with Node

use of org.btrplace.model.Node in project scheduler by btrplace.

the class CShareableResourceTest method testSimple.

/**
 * Test the instantiation and the creation of the variables.
 *
 * @throws org.btrplace.scheduler.SchedulerException should not occur
 */
@Test
public void testSimple() throws SchedulerException {
    Model mo = new DefaultModel();
    Mapping ma = mo.getMapping();
    VM vm1 = mo.newVM();
    VM vm2 = mo.newVM();
    VM vm3 = mo.newVM();
    Node n1 = mo.newNode();
    Node n2 = mo.newNode();
    ma.addOnlineNode(n1);
    ma.addOfflineNode(n2);
    ma.addRunningVM(vm1, n1);
    ma.addRunningVM(vm2, n1);
    ma.addReadyVM(vm3);
    ShareableResource rc = new ShareableResource("foo", 0, 0);
    rc.setConsumption(vm2, 3);
    rc.setCapacity(n1, 4);
    ReconfigurationProblem rp = new DefaultReconfigurationProblemBuilder(mo).build();
    CShareableResource rcm = new CShareableResource(rc);
    rcm.inject(new DefaultParameters(), rp);
    Assert.assertEquals(rc.getIdentifier(), rcm.getIdentifier());
    // Assert.assertEquals(-1, rcm.getVMsAllocation(rp.getVM(vm1)).getLB());
    Assert.assertEquals(-1, rcm.getVMAllocation(rp.getVM(vm1)));
    // Assert.assertEquals(-1, rcm.getVMsAllocation(rp.getVM(vm2)).getLB());
    Assert.assertEquals(-1, rcm.getVMAllocation(rp.getVM(vm2)));
    // Assert.assertEquals(0, rcm.getVMsAllocation(rp.getVM(vm3)).getUB()); //Will not be running so 0
    // Will not be running so 0
    Assert.assertEquals(0, rcm.getVMAllocation(rp.getVM(vm3)));
    IntVar pn1 = rcm.getPhysicalUsage().get(rp.getNode(n1));
    IntVar pn2 = rcm.getPhysicalUsage().get(rp.getNode(n2));
    Assert.assertTrue(pn1.getLB() == 0 && pn1.getUB() == 4);
    Assert.assertTrue(pn2.getLB() == 0 && pn2.getUB() == 0);
    pn1 = rcm.getPhysicalUsage(rp.getNode(n1));
    Assert.assertTrue(pn1.getLB() == 0 && pn1.getUB() == 4);
    IntVar vn1 = rcm.getVirtualUsage().get(rp.getNode(n1));
    IntVar vn2 = rcm.getVirtualUsage().get(rp.getNode(n2));
    Assert.assertEquals(vn1.getLB(), 0);
    Assert.assertEquals(vn2.getLB(), 0);
    Assert.assertEquals(rc, rcm.getSourceResource());
}
Also used : DefaultModel(org.btrplace.model.DefaultModel) DefaultParameters(org.btrplace.scheduler.choco.DefaultParameters) VM(org.btrplace.model.VM) Node(org.btrplace.model.Node) Model(org.btrplace.model.Model) DefaultModel(org.btrplace.model.DefaultModel) DefaultReconfigurationProblemBuilder(org.btrplace.scheduler.choco.DefaultReconfigurationProblemBuilder) Mapping(org.btrplace.model.Mapping) ReconfigurationProblem(org.btrplace.scheduler.choco.ReconfigurationProblem) ShareableResource(org.btrplace.model.view.ShareableResource) IntVar(org.chocosolver.solver.variables.IntVar) Test(org.testng.annotations.Test)

Aggregations

Node (org.btrplace.model.Node)188 VM (org.btrplace.model.VM)110 Model (org.btrplace.model.Model)92 DefaultModel (org.btrplace.model.DefaultModel)91 Test (org.testng.annotations.Test)85 Mapping (org.btrplace.model.Mapping)68 HashSet (java.util.HashSet)48 ReconfigurationPlan (org.btrplace.plan.ReconfigurationPlan)43 SatConstraint (org.btrplace.model.constraint.SatConstraint)35 ArrayList (java.util.ArrayList)34 IntVar (org.chocosolver.solver.variables.IntVar)29 ShareableResource (org.btrplace.model.view.ShareableResource)28 VMTransition (org.btrplace.scheduler.choco.transition.VMTransition)23 MigrateVM (org.btrplace.plan.event.MigrateVM)22 BootableNode (org.btrplace.scheduler.choco.transition.BootableNode)19 RelocatableVM (org.btrplace.scheduler.choco.transition.RelocatableVM)19 ShutdownableNode (org.btrplace.scheduler.choco.transition.ShutdownableNode)19 DefaultChocoScheduler (org.btrplace.scheduler.choco.DefaultChocoScheduler)18 ChocoScheduler (org.btrplace.scheduler.choco.ChocoScheduler)16 BootVM (org.btrplace.scheduler.choco.transition.BootVM)16