Granulate / gprofiler

gProfiler is a system-wide profiler, combining multiple sampling profilers to produce unified visualization of what your CPU is spending time on.
https://profiler.granulate.io
Apache License 2.0
755 stars 55 forks source link

aarch64 python tests #709

Closed pfilipko1 closed 1 year ago

pfilipko1 commented 1 year ago

Description

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots

Checklist:

Jongy commented 1 year ago

@pfilipko1 in the current status, they all pass on Aarch64 machine?

pfilipko1 commented 1 year ago

@pfilipko1 in the current status, they all pass on Aarch64 machine?

Affirmative, hopefully on all setups, not only mine (a1.4xlarge aarch64 ubuntu 22.04 aws vm) :)

Jongy commented 1 year ago

merge master :)

Jongy commented 1 year ago

I ran the current version - got only one failure, which is the same metadata issue as we had in Java:

E       AssertionError: assert {'exe': '/usr...40ed3db', ...} == {'exe': '/usr...01ee898', ...}                                                                                               E         Omitting 4 identical items, use -vv to show                                                                                                                                         E         Differing items:                                                                                                                                                                    E         {'exe_elfid': 'buildid:d627b889c0ac0642ea715651ebb7436ce1ee7444'} != {'exe_elfid': 'buildid:a04b9016e15a247fbc21c91260c13e17a458ed33'}                                              E         {'libpython_elfid': 'buildid:64b7f8a37ff81f574936de12c263aade340ed3db'} != {'libpython_elfid': 'buildid:0ef3fce0ef90d8f40ad9236793d30081001ee898'}                                  E         Full diff:                                                                                                                                                                          E           {                                                                                                                                                                                 E            'exe': '/usr/local/bin/python3.6',...                                                                                                                                            E                                                                                                                                                                                             E         ...Full output truncated (9 lines hidden), use '-vv' to show               

In python you'll need to refrain from comparing the elfid (exe_elfid and libpython_elfid)

Jongy commented 1 year ago
>       assert metadata["application_metadata"][idx] == expected_metadata                                                                                                           [197/1906]
E       AssertionError: assert {'exe': '/usr...40ed3db', ...} == {'exe': '/usr...01ee898', ...}                                                                                               
E         Omitting 4 identical items, use -vv to show                                                                                                                                         
E         Differing items:                                                                                                                                                                    
E         {'libpython_elfid': 'buildid:64b7f8a37ff81f574936de12c263aade340ed3db'} != {'libpython_elfid': 'buildid:0ef3fce0ef90d8f40ad9236793d30081001ee898'}                                  
E         {'exe_elfid': 'buildid:d627b889c0ac0642ea715651ebb7436ce1ee7444'} != {'exe_elfid': 'buildid:a04b9016e15a247fbc21c91260c13e17a458ed33'}                                              
E         Full diff:                                                                                                                                                                          
E           {                                                                                                                                                                                 
E            'exe': '/usr/local/bin/python3.6',...                                                                                                                                            
E                                                                                                                                                                                             
E         ...Full output truncated (9 lines hidden), use '-vv' to show                                                                                                                        

tests/test_app_metadata.py:210: AssertionError 

This is the only failure I'm getting now - need to skip comparing those elfids in Aarch64 because they are accustomed for x86_64. Or, you know what would be better? (also in the Java tests that we merge?) if we define it as

            {
                "exe": "/usr/local/bin/python3.6",
                "execfn": "/usr/local/bin/python",
                "libpython_elfid": "buildid:xxxx" if is_aarch64() else  "buildid:0ef3fce0ef90d8f40ad9236793d30081001ee898",
                "exe_elfid": "buildid:xxxx" if is_aarch64() else "buildid:a04b9016e15a247fbc21c91260c13e17a458ed33",
                "python_version": "Python 3.6.15",
                "sys_maxunicode": None,
            },

then it would pass in both cases and we still do this comparison and test that we're able to extract buildid in aarch64.

Jongy commented 1 year ago

Running it one more time and I will merge.

Jongy commented 1 year ago
tests/test_sanity.py::test_from_container[True-python-pyperf] PASSED                                                                                                                   [  6%]

This passes on aarch64 becase gprofiler implicitly falls back to pyspy. Not a major problem but I'll want it fixed at some point, we can merge despite it.

Jongy commented 1 year ago

This is the result on my Aarch64 server:

==================================================== 24 passed, 22 skipped, 162 deselected, 12 xfailed, 236 warnings in 333.04s (0:05:33) ====================================================