Details
-
Task
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
None
-
None
Description
The scheduler performs multiple write operations for every resource offer, to save slave attributes:
public void resourceOffers(SchedulerDriver driver, List<Offer> offers) { Preconditions.checkState(registered, "Must be registered before receiving offers."); for (final Offer offer : offers) { log(Level.FINE, "Received offer: %s", offer); resourceOffers.incrementAndGet(); storage.write(new MutateWork.NoResult.Quiet() { @Override protected void execute(MutableStoreProvider storeProvider) { storeProvider.getAttributeStore().saveHostAttributes(Conversions.getAttributes(offer)); } });
This can unnecessarily block the singly-threaded message dispatch in the scheduler driver. An incremental improvement would be to aggregate all slave info and save it in one write operation. Better yet would be to perform writes asynchronously (taking care to not break task scheduling, since attributes are expected to be present). Even better yet, it would be great to determine if we can avoid storing host attributes.