Closed
Description
For now, if we want to use the perf
or any performance analysis tool to analysis the performance of the opendal process. We will be in trouble because of the symbol issue
For example, I try to use perf to analysis the following code
import opendal
import uuid
op = opendal.Operator("fs", root="/tmp")
uuid_str=str(uuid.uuid4)
for _ in range(10000000):
op.write(f"/{uuid_str}", [0]*64*1024*1024)
op.read(f"/{uuid_str}")
op.delete(f"/{uuid_str}")
The perf record is here
+ 63.46% 0.00% python [unknown] [.] 0x8b48fb894828ec83
+ 43.07% 13.11% python _opendal.cpython-312-x86_64-linux-gnu.so [.] <&pyo3::types::iterator::PyIterator a
+ 14.66% 6.43% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::conversions::std::num::<impl py
+ 13.72% 13.72% python libpython3.12.so.1.0 [.] listiter_next
+ 12.49% 0.00% python [unknown] [.] 0000000000000000
+ 11.24% 0.00% python [kernel.kallsyms] [k] asm_exc_page_fault
+ 11.23% 0.00% python [kernel.kallsyms] [k] exc_page_fault
+ 11.22% 4.01% python [kernel.kallsyms] [k] do_user_addr_fault
+ 11.06% 11.06% python ld-linux-x86-64.so.2 [.] _dl_update_slotinfo
+ 10.81% 0.00% python libc.so.6 [.] __libc_start_call_main
+ 10.81% 0.00% python libpython3.12.so.1.0 [.] Py_BytesMain
+ 10.81% 0.00% python libpython3.12.so.1.0 [.] Py_RunMain
+ 10.79% 0.00% python libpython3.12.so.1.0 [.] pymain_run_python.constprop.0
+ 10.79% 0.00% python libpython3.12.so.1.0 [.] _PyRun_AnyFileObject
+ 10.79% 0.00% python libpython3.12.so.1.0 [.] _PyRun_SimpleFileObject
+ 10.79% 0.00% python libpython3.12.so.1.0 [.] run_mod
+ 10.79% 0.00% python libpython3.12.so.1.0 [.] run_eval_code_obj
+ 10.79% 0.00% python libpython3.12.so.1.0 [.] PyEval_EvalCode
+ 10.79% 0.00% python [JIT] tid 210049 [.] py::<module>:/root/opendal-demo/demo.
+ 10.79% 0.00% python libpython3.12.so.1.0 [.] _PyEval_EvalFrameDefault
+ 8.14% 8.14% python ld-linux-x86-64.so.2 [.] __tls_get_addr
+ 6.88% 1.97% python libc.so.6 [.] __memmove_avx_unaligned_erms
+ 6.81% 0.11% python [kernel.kallsyms] [k] handle_mm_fault
+ 6.64% 6.64% python ld-linux-x86-64.so.2 [.] update_get_addr
+ 6.53% 0.23% python [kernel.kallsyms] [k] __handle_mm_fault
+ 6.27% 0.03% python [kernel.kallsyms] [k] handle_pte_fault
+ 5.17% 0.00% python [unknown] [.] 0x0000000000000098
We can find that we can not trace the rust code.
Since I enable the rustflag, here's new perf result
+ 92.23% 0.00% python libc.so.6 [.] __libc_start_call_main ◆
+ 92.23% 0.00% python libpython3.12.so.1.0 [.] Py_BytesMain ▒
+ 92.23% 0.00% python libpython3.12.so.1.0 [.] Py_RunMain ▒
+ 92.22% 0.00% python libpython3.12.so.1.0 [.] pymain_run_python.constprop.0 ▒
+ 92.22% 0.00% python libpython3.12.so.1.0 [.] _PyRun_AnyFileObject ▒
+ 92.22% 0.00% python libpython3.12.so.1.0 [.] _PyRun_SimpleFileObject ▒
+ 92.22% 0.00% python libpython3.12.so.1.0 [.] run_mod ▒
+ 92.22% 0.00% python libpython3.12.so.1.0 [.] run_eval_code_obj ▒
+ 92.22% 0.00% python libpython3.12.so.1.0 [.] PyEval_EvalCode ▒
+ 92.22% 0.00% python [JIT] tid 211989 [.] py::<module>:/root/opendal-demo/demo▒
+ 92.22% 0.00% python libpython3.12.so.1.0 [.] _PyEval_EvalFrameDefault ▒
+ 88.98% 0.00% python libpython3.12.so.1.0 [.] PyObject_Vectorcall ▒
+ 88.98% 0.00% python libpython3.12.so.1.0 [.] method_vectorcall_VARARGS_KEYWORDS ▒
+ 88.98% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal_python::operator::_::<impl p▒
+ 88.98% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::impl_::trampoline::cfunction_w▒
+ 88.98% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::impl_::trampoline::trampoline ▒
+ 83.73% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] std::panic::catch_unwind ▒
+ 83.73% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] std::panicking::try ▒
+ 83.73% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] __rust_try ▒
+ 83.73% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] std::panicking::try::do_call ▒
+ 83.73% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::impl_::trampoline::trampoline:▒
+ 83.73% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::impl_::trampoline::cfunction_w▒
+ 83.73% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal_python::operator::_::<impl o▒
+ 83.22% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::impl_::extract_argument::extra▒
+ 83.22% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] <T as pyo3::impl_::extract_argument:▒
+ 83.22% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::types::any::PyAny::extract ▒
+ 83.22% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::types::sequence::<impl pyo3::c▒
+ 81.47% 7.67% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::types::sequence::extract_seque▒
+ 50.67% 2.93% python _opendal.cpython-312-x86_64-linux-gnu.so [.] <&pyo3::types::iterator::PyIterator ▒
+ 41.45% 0.43% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::marker::Python::from_owned_ptr▒
+ 40.37% 2.06% python _opendal.cpython-312-x86_64-linux-gnu.so [.] <T as pyo3::conversion::FromPyPointe▒
+ 36.33% 1.75% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::gil::register_owned ▒
+ 24.69% 3.91% python _opendal.cpython-312-x86_64-linux-gnu.so [.] std::thread::local::LocalKey<T>::try▒
+ 16.31% 0.34% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::types::any::PyAny::extract ▒
+ 13.54% 3.58% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::conversions::std::num::<impl p▒
+ 10.77% 1.33% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::gil::register_owned::{{closure▒
+ 8.00% 4.11% python _opendal.cpython-312-x86_64-linux-gnu.so [.] pyo3::gil::OWNED_OBJECTS::__getit ▒
+ 7.77% 3.46% python _opendal.cpython-312-x86_64-linux-gnu.so [.] std::thread::local::LocalKey<T>::try▒
+ 5.24% 0.00% python _opendal.cpython-312-x86_64-linux-gnu.so [.] core::ptr::drop_in_place<pyo3::gil::▒
+ 4.94% 4.94% python ld-linux-x86-64.so.2 [.] _dl_update_slotinfo
....
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal_python::operator::_::<impl opendal_python::operator::Operator>::__pymethod_delete__
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal_python::operator::Operator::delete
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal::types::operator::blocking_operator::BlockingOperator::delete
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal::types::operator::operator_functions::FunctionDelete::call
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal::types::operator::operator_functions::OperatorFunction<T,R>::call
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] core::ops::function::FnOnce::call_once
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal::types::operator::blocking_operator::BlockingOperator::delete_with::{{closure}}
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] <alloc::sync::Arc<T> as opendal::raw::accessor::Accessor>::blocking_delete
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal::raw::layer::<impl opendal::raw::accessor::Accessor for L>::blocking_delete
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal::raw::layer::LayeredAccessor::blocking_delete
0.05% 0.00% 6 python [kernel.kallsyms] [k] ext4_block_write_begin
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal::raw::layer::<impl opendal::raw::accessor::Accessor for L>::blocking_delete
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] <opendal::layers::complete::CompleteAccessor<A> as opendal::raw::layer::LayeredAccessor>::blocking_delete
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] opendal::raw::layer::<impl opendal::raw::accessor::Accessor for L>::blocking_delete
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] <opendal::layers::error_context::ErrorContextAccessor<A> as opendal::raw::layer::LayeredAccessor>::blocking_delete
0.05% 0.00% 0 python _opendal.cpython-312-x86_64-linux-gnu.so [.] <opendal::services::fs::backend::FsBackend as opendal::raw::accessor::Accessor>::blocking_delete
And
Metadata
Metadata
Assignees
Labels
No labels