You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ambari.apache.org by "Andrew Onischuk (JIRA)" <ji...@apache.org> on 2018/10/10 12:33:00 UTC
[jira] [Updated] (AMBARI-24758) Ambari-agent takes up too many cpu
on perf
[ https://issues.apache.org/jira/browse/AMBARI-24758?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrew Onischuk updated AMBARI-24758:
-------------------------------------
Summary: Ambari-agent takes up too many cpu on perf (was: Ambari-agent takes up too many cpu of perf)
> Ambari-agent takes up too many cpu on perf
> ------------------------------------------
>
> Key: AMBARI-24758
> URL: https://issues.apache.org/jira/browse/AMBARI-24758
> Project: Ambari
> Issue Type: Bug
> Reporter: Andrew Onischuk
> Assignee: Andrew Onischuk
> Priority: Major
> Labels: pull-request-available
> Fix For: 2.8.0
>
> Attachments: AMBARI-24758.patch
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> ncalls tottime percall cumtime percall filename:lineno(function)
> 14129 1426.122 0.101 1426.122 0.101 {time.sleep}
> 1 0.337 0.337 1426.769 1426.769 main.py:358(run_threads)
> 331 0.219 0.001 0.219 0.001 {method 'acquire' of 'thread.lock' objects}
> 11 0.181 0.016 0.181 0.016 {built-in method poll}
> 1 0.108 0.108 0.108 0.108 {method 'do_handshake' of '_ssl._SSLSocket' objects}
> 14151 0.042 0.000 0.042 0.000 threading.py:571(isSet)
> 125 0.028 0.000 0.028 0.000 {method 'flush' of 'file' objects}
> 5078 0.027 0.000 0.052 0.000 decoder.py:65(py_scanstring)
> 15 0.020 0.001 0.020 0.001 {posix.read}
> 5093 0.020 0.000 0.024 0.000 {method 'sub' of '_sre.SRE_Pattern' objects}
> 1 0.019 0.019 0.019 0.019 {method 'connect' of '_socket.socket' objects}
> 15365 0.018 0.000 0.018 0.000 {method 'match' of '_sre.SRE_Pattern' objects}
> 55424/13131 0.016 0.000 0.057 0.000 encoder.py:332(_iterencode_dict)
> 38241 0.014 0.000 0.014 0.000 {isinstance}
> 21 0.013 0.001 0.022 0.001 collections.py:282(namedtuple)
> 473/5 0.012 0.000 0.073 0.015 decoder.py:148(JSONObject)
> 5078 0.009 0.000 0.034 0.000 encoder.py:43(py_encode_basestring_ascii)
> 5 0.006 0.001 0.070 0.014 __init__.py:122(dump)
> 13251 0.005 0.000 0.005 0.000 {method 'write' of 'file' objects}
> 7 0.004 0.001 0.004 0.001 {ambari_commons.libs.x86_64._posixsubprocess.fork_exec}
> 5638 0.004 0.000 0.004 0.000 encoder.py:49(replace)
> 3167/5 0.003 0.000 0.073 0.015 scanner.py:27(_scan_once)
> 13353/9909 0.003 0.000 0.030 0.000 encoder.py:279(_iterencode_list)
> 75 0.003 0.000 0.003 0.000 {method 'read' of '_ssl._SSLSocket' objects}
> 3177/8 0.003 0.000 0.008 0.001 Utils.py:124(make_immutable)
> 13131 0.003 0.000 0.060 0.000 encoder.py:409(_iterencode)
> 11128 0.003 0.000 0.003 0.000 {method 'groups' of '_sre.SRE_Match' objects}
> 2202/45 0.003 0.000 0.004 0.000 Utils.py:135(get_mutable_copy)
> 474/10 0.002 0.000 0.008 0.001 Utils.py:170(__init__)
> 238 0.002 0.000 0.002 0.000 {time.localtime}
> 119 0.002 0.000 0.004 0.000 __init__.py:242(__init__)
> 3759 0.002 0.000 0.002 0.000 {method 'isalnum' of 'str' objects}
> 14752 0.002 0.000 0.002 0.000 {method 'end' of '_sre.SRE_Match' objects}
> 16854 0.002 0.000 0.002 0.000 {method 'append' of 'list' objects}
> 5098 0.002 0.000 0.002 0.000 {method 'join' of 'unicode' objects}
> 238 0.002 0.000 0.007 0.000 __init__.py:451(format)
> 13 0.002 0.000 0.004 0.000 metric_alert.py:286(__init__)
> 7 0.001 0.000 0.026 0.004 subprocess32.py:1153(_execute_child)
> 41 0.001 0.000 0.001 0.000 {open}
> 616 0.001 0.000 0.001 0.000 {method 'format' of 'str' objects}
> 238 0.001 0.000 0.004 0.000 __init__.py:404(formatTime)
> 18 0.001 0.000 0.001 0.000 {posix.listdir}
> 5 0.001 0.000 0.072 0.014 ClusterCache.py:131(persist_cache)
> 4032 0.001 0.000 0.003 0.000 collections.py:323(<genexpr>)
> 18 0.001 0.000 0.001 0.000 {method 'sort' of 'list' objects}
> 90 0.001 0.000 0.001 0.000 {built-in method now}
> 238 0.001 0.000 0.001 0.000 {time.strftime}
> 119 0.001 0.000 0.001 0.000 __init__.py:1215(findCaller)
> 5706 0.001 0.000 0.001 0.000 {method 'group' of '_sre.SRE_Match' objects}
> 281 0.001 0.000 0.001 0.000 threading.py:146(acquire)
> 281 0.001 0.000 0.001 0.000 threading.py:186(release)
> 119 0.001 0.000 0.001 0.000 {method 'seek' of 'file' objects}
> 1 0.001 0.001 0.001 0.001 ClusterTopologyCache.py:58(on_cache_update)
> 119 0.001 0.000 0.005 0.000 handlers.py:144(shouldRollover)
> 50/5 0.001 0.000 0.035 0.007 decoder.py:223(JSONArray)
> Major cpu cosumers:
> 1) Regexp operation:
> As we can see a lot of time is took for regexp operations. This happens because we use non-compiled regular expressions.
> 2) Json operations:
> Another major cpu consumer is json module, because _speedups.so is not compiled for python2.7 currently. We have this situation. This is tackled by other issue
> 3) Main thread waking up/sleeping too often.
> This seems to create quite a bit cpu usage.
> The approach was implemented so agent can check for SIGTERM (ambari-agent stop). A proper solution should be a usage signal.pause() instead of sleep/wakeup.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)