You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by mz...@apache.org on 2019/09/03 17:28:45 UTC
[mesos] 01/05: Made `allocated` mean "allocated but not offered" in
`allocator::Slave`.
This is an automated email from the ASF dual-hosted git repository.
mzhu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit ebe4a4a4985ba2205bf9f242a57b56a72d0f013f
Author: Andrei Sekretenko <as...@mesosphere.io>
AuthorDate: Tue Sep 3 10:26:49 2019 -0700
Made `allocated` mean "allocated but not offered" in `allocator::Slave`.
This patch makes the `allocator::Slave` code more consistent
with naming of different subsets of resources in the master
(where "resource belongs to `offered`" is equivalent to "there is an
offer with this resource", "resource belongs to `allocated`"
is equivalent to "there is a task/executor with this resource" and
`offered` has no intersection with `allocated`).
Review: https://reviews.apache.org/r/71398/
---
src/master/allocator/mesos/hierarchical.cpp | 28 +++++++++++++++-------------
src/master/allocator/mesos/hierarchical.hpp | 27 ++++++++++++++-------------
2 files changed, 29 insertions(+), 26 deletions(-)
diff --git a/src/master/allocator/mesos/hierarchical.cpp b/src/master/allocator/mesos/hierarchical.cpp
index dd73d5b..ed965b1 100644
--- a/src/master/allocator/mesos/hierarchical.cpp
+++ b/src/master/allocator/mesos/hierarchical.cpp
@@ -851,9 +851,10 @@ void HierarchicalAllocatorProcess::addSlave(
resume();
}
- LOG(INFO) << "Added agent " << slaveId << " (" << slave.info.hostname() << ")"
- << " with " << slave.getTotal()
- << " (allocated: " << slave.getAllocated() << ")";
+ LOG(INFO)
+ << "Added agent " << slaveId << " (" << slave.info.hostname() << ")"
+ << " with " << slave.getTotal()
+ << " (offered or allocated: " << slave.getOfferedOrAllocated() << ")";
allocate(slaveId);
}
@@ -986,7 +987,7 @@ void HierarchicalAllocatorProcess::addResourceProvider(
Slave& slave = *CHECK_NOTNONE(getSlave(slaveId));
updateSlaveTotal(slaveId, slave.getTotal() + total);
- slave.allocate(Resources::sum(used));
+ slave.decreaseAvailable(Resources::sum(used));
VLOG(1)
<< "Grew agent " << slaveId << " by "
@@ -1113,8 +1114,8 @@ void HierarchicalAllocatorProcess::updateAllocation(
const Resources& updatedOfferedResources = _updatedOfferedResources.get();
// Update the per-slave allocation.
- slave.unallocate(offeredResources);
- slave.allocate(updatedOfferedResources);
+ slave.increaseAvailable(offeredResources);
+ slave.decreaseAvailable(updatedOfferedResources);
// Update the allocation in the framework sorter.
frameworkSorter->update(
@@ -1441,15 +1442,16 @@ void HierarchicalAllocatorProcess::recoverResources(
Option<Slave*> slave = getSlave(slaveId);
if (slave.isSome()) {
- CHECK((*slave)->getAllocated().contains(resources))
+ CHECK((*slave)->getOfferedOrAllocated().contains(resources))
<< "agent " << slaveId << " resources "
- << (*slave)->getAllocated() << " do not contain " << resources;
+ << (*slave)->getOfferedOrAllocated() << " do not contain " << resources;
- (*slave)->unallocate(resources);
+ (*slave)->increaseAvailable(resources);
VLOG(1) << "Recovered " << resources
<< " (total: " << (*slave)->getTotal()
- << ", allocated: " << (*slave)->getAllocated() << ")"
+ << ", offered or allocated: "
+ << (*slave)->getOfferedOrAllocated() << ")"
<< " on agent " << slaveId
<< " from framework " << frameworkId;
}
@@ -2166,7 +2168,7 @@ void HierarchicalAllocatorProcess::__allocate()
ResourceQuantities::fromScalarResources(guaranteesAllocation);
availableHeadroom -= increasedQuotaConsumption;
- slave.allocate(toAllocate);
+ slave.decreaseAvailable(toAllocate);
trackAllocatedResources(slaveId, frameworkId, toAllocate);
}
@@ -2313,7 +2315,7 @@ void HierarchicalAllocatorProcess::__allocate()
availableHeadroom -= increasedQuotaConsumption;
- slave.allocate(toAllocate);
+ slave.decreaseAvailable(toAllocate);
trackAllocatedResources(slaveId, frameworkId, toAllocate);
}
@@ -2652,7 +2654,7 @@ double HierarchicalAllocatorProcess::_resources_offered_or_allocated(
foreachvalue (const Slave& slave, slaves) {
Option<Value::Scalar> value =
- slave.getAllocated().get<Value::Scalar>(resource);
+ slave.getOfferedOrAllocated().get<Value::Scalar>(resource);
if (value.isSome()) {
offered_or_allocated += value->value();
diff --git a/src/master/allocator/mesos/hierarchical.hpp b/src/master/allocator/mesos/hierarchical.hpp
index 65d103e..d466cbf 100644
--- a/src/master/allocator/mesos/hierarchical.hpp
+++ b/src/master/allocator/mesos/hierarchical.hpp
@@ -253,12 +253,12 @@ public:
const protobuf::slave::Capabilities& _capabilities,
bool _activated,
const Resources& _total,
- const Resources& _allocated)
+ const Resources& _offeredOrAllocated)
: info(_info),
capabilities(_capabilities),
activated(_activated),
total(_total),
- allocated(_allocated),
+ offeredOrAllocated(_offeredOrAllocated),
shared(_total.shared()),
hasGpu_(_total.gpus().getOrElse(0) > 0)
{
@@ -267,7 +267,7 @@ public:
const Resources& getTotal() const { return total; }
- const Resources& getAllocated() const { return allocated; }
+ const Resources& getOfferedOrAllocated() const { return offeredOrAllocated; }
const Resources& getAvailable() const { return available; }
@@ -281,16 +281,16 @@ public:
updateAvailable();
}
- void allocate(const Resources& toAllocate)
+ void decreaseAvailable(const Resources& offeredOrAllocated_)
{
- allocated += toAllocate;
+ offeredOrAllocated += offeredOrAllocated_;
updateAvailable();
}
- void unallocate(const Resources& toUnallocate)
+ void increaseAvailable(const Resources& offeredOrAllocated_)
{
- allocated -= toUnallocate;
+ offeredOrAllocated -= offeredOrAllocated_;
updateAvailable();
}
@@ -345,8 +345,8 @@ private:
void updateAvailable() {
// In order to subtract from the total,
// we strip the allocation information.
- Resources allocated_ = allocated;
- allocated_.unallocate();
+ Resources offeredOrAllocated_ = offeredOrAllocated;
+ offeredOrAllocated_.unallocate();
// Calling `nonShared()` currently copies the underlying resources
// and is therefore rather expensive. We avoid it in the common
@@ -357,18 +357,19 @@ private:
// `nonShared()` performs no copying and instead points to a
// subset of the original `Resource` objects.
if (shared.empty()) {
- available = total - allocated_;
+ available = total - offeredOrAllocated_;
} else {
// Since shared resources are offerable even when they are in use, we
// always include them as part of available resources.
- available = (total.nonShared() - allocated_.nonShared()) + shared;
+ available =
+ (total.nonShared() - offeredOrAllocated_.nonShared()) + shared;
}
}
// Total amount of regular *and* oversubscribed resources.
Resources total;
- // Regular *and* oversubscribed resources that are allocated.
+ // Regular *and* oversubscribed resources that are offered or allocated.
//
// NOTE: We maintain multiple copies of each shared resource allocated
// to a slave, where the number of copies represents the number of times
@@ -379,7 +380,7 @@ private:
// having that information in sorters. This is because the
// information in sorters is not accurate if some framework
// hasn't reregistered. See MESOS-2919 for details.
- Resources allocated;
+ Resources offeredOrAllocated;
// We track the total and allocated resources on the slave to
// avoid calculating it in place every time.