[ https://issues.apache.org/jira/browse/MESOS-3765?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14969382#comment-14969382 ]
Klaus Ma commented on MESOS-3765: --------------------------------- [~alexr], I think we can use {{requestResources()}} to send granularity; so allocator send offer based on granularity in each framework (the granularity maybe different within one framework). Here's a workflow in allocator: 1. if there's no available resources to allocate, return 2. for each framework, allocate "granularity" resources in each loop, the "granularity" will be a.) "total/framework #" for each resource type (cput/mem), if no "granularity" from framework; b.) the "granularity" from framework sent by {{requestResources()}} 3. keep running #2 until no available resources. The frame work will fair-share the resource in the cluster, although greedy framework may send several "granularity" to allocator; because allocator will give only one "granularity" to framework in each loop. There is still a case that framework overcommit by "granularity" (granularity > required resources ) which we can not guarantee, because allocator did not know framework's task size. *Demonstration:* Two framework(f1 and f2), each of them will acquire 1 CPU; one slave with only 1 CPU; so the workflow will be: - each framework will receive 0.5 CPU because no "granularity" from framework, the default "granularity" is 1 CPU /2 framework. - each framework will send "granularity" by {{requestResources}} for 1 CPU, because the offer can not meet the requirement (1 vs. 0.5) - allocator will send the 1 CPU to f1 (or f2) based on its "granularity" One concern is performance downgrade, we need a perf test for it; and maybe a flag to control this behaviour. If any comments, please let me know. > Make offer size adjustable (granularity) > ---------------------------------------- > > Key: MESOS-3765 > URL: https://issues.apache.org/jira/browse/MESOS-3765 > Project: Mesos > Issue Type: Improvement > Components: allocation > Reporter: Alexander Rukletsov > > The built-in allocator performs "coarse-grained" allocation, meaning that it > always allocates the entire remaining agent resources to a single framework. > This may heavily impact allocation fairness in some cases, for example in > presence of numerous greedy frameworks and a small number of powerful agents. > A possible solution would be to allow operators explicitly specify > granularity via allocator flags. While this can be tricky for non-standard > resources, it's pretty straightforward for {{cpus}} and {{mem}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)