----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/71269/ -----------------------------------------------------------
(Updated Aug. 15, 2019, 8:36 p.m.) Review request for mesos, Andrei Sekretenko and Benjamin Mahler. Changes ------- Used map to manage the lifecycle of the role tree node. Bugs: MESOS-9917 https://issues.apache.org/jira/browse/MESOS-9917 Repository: mesos Description ------- The role concept in Mesos fits into a tree structure naturally. However, the role state in the allocator are currenstored in a hashmap. This is less efficient and harder to use and reason. This patch introduced a `RoleTree` structure in the allocator and organizes all the roles in to a tree. This should simplify the code logic and opens further refactor and optimization opportunities. In addition, the master code also lacks a proper tree structure for tracking roles. We should leverage the same role tree code here to simplify that as well. Diffs (updated) ----- src/master/allocator/mesos/hierarchical.hpp 8be8dcee04e8fc5b97f730b2f058d14c81678788 src/master/allocator/mesos/hierarchical.cpp 580d35a3b71c1f7e851fa0504c6b9f037c05c378 Diff: https://reviews.apache.org/r/71269/diff/4/ Changes: https://reviews.apache.org/r/71269/diff/3-4/ Testing ------- make check Benchmaring using optimized build shows no noticable performance change. Benchmark: `BENCHMARK_HierarchicalAllocator_WithQuotaParam.LargeAndSmallQuota` ## Before: Added 30 agents in 1.252621ms Added 30 frameworks in 7.747202ms Benchmark setup: 30 agents, 30 roles, 30 frameworks, with drf sorter Made 36 allocations in 12.791427ms Added 300 agents in 9.765295ms Added 300 frameworks in 273.978325ms Benchmark setup: 300 agents, 300 roles, 300 frameworks, with drf sorter Made 350 allocations in 424.603736ms Added 3000 agents in 79.646516ms Added 3000 frameworks in 19.17449514secs Benchmark setup: 3000 agents, 3000 roles, 3000 frameworks, with drf sorter Made 3500 allocations in 31.687207066secs ## After: Added 30 agents in 1.376619ms Added 30 frameworks in 7.647487ms Benchmark setup: 30 agents, 30 roles, 30 frameworks, with drf sorter Made 36 allocations in 11.638116ms Added 300 agents in 9.506101ms Added 300 frameworks in 263.008198ms Benchmark setup: 300 agents, 300 roles, 300 frameworks, with drf sorter Made 350 allocations in 418.962396ms Added 3000 agents in 81.553527ms Added 3000 frameworks in 19.201708305secs Benchmark setup: 3000 agents, 3000 roles, 3000 frameworks, with drf sorter Made 3500 allocations in 31.583417136secs Thanks, Meng Zhu