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)