[
https://issues.apache.org/jira/browse/MESOS-9948?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16933393#comment-16933393
]
Benjamin Bannier edited comment on MESOS-9948 at 9/19/19 1:44 PM:
------------------------------------------------------------------
Looking at the trace more carefully the issue here _is not_ with inefficient
lookups, but due to the creation of temporaries. The user likely has frameworks
with lots of executors and by accessing the framework's executors with
{{Option::get}} we force creation of a temporary copying the whole executor
map, even though a reference would work just fine.
{code}
return executors.contains(frameworkId) &&
executors.get(frameworkId)->contains(executorId);
{code}
This seems not seem to be an isolated instance of this misuse, but only one
with particularly inefficient behavior. We should consider whether providing
{{hashmap::get}} at all is useful given its potential for misuse.
Reviews:
https://reviews.apache.org/r/71519/
https://reviews.apache.org/r/71520/
was (Author: bbannier):
Looking at the trace more carefully the issue here _is not_ with inefficient
lookups, but due to the creation of temporaries. The user likely has frameworks
with lots of executors and by accessing the framework's executors with
{{Option::get}} we force creation of a temporary copying the whole executor
map, even though a reference would work just fine.
{code}
return executors.contains(frameworkId) &&
executors.get(frameworkId)->contains(executorId);
{code}
This seems not seem to be an isolated instance of this misuse, but only one
with particularly inefficient case. We should consider whether providing
{{hashmap::get}} at all is useful given its potential for misuse.
Reviews:
https://reviews.apache.org/r/71519/
https://reviews.apache.org/r/71520/
> master::Slave::hasExecutor occupies 37% of a 150 second perf sample from a
> user.
> --------------------------------------------------------------------------------
>
> Key: MESOS-9948
> URL: https://issues.apache.org/jira/browse/MESOS-9948
> Project: Mesos
> Issue Type: Improvement
> Components: master
> Reporter: Benjamin Mahler
> Assignee: Benjamin Bannier
> Priority: Major
> Labels: foundations, performance
> Attachments: long-fei-enable-debug-slow-master.gz
>
>
> If you drop the attached perf stacks into flamescope, you can see that
> mesos::internal::master::Slave::hasExecutor occupies 37% of the overall
> samples!
> This function does 3 hashmap lookups, 1 can be eliminated for a quick win.
> However, the larger improvement here will come from eliminating many of the
> calls to this function.
> This was reported by [~carlone].
--
This message was sent by Atlassian Jira
(v8.3.4#803005)