Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-7944

alloc_root() takes 0.51% in OLTP RO

Details

    • Bug
    • Status: Open (View Workflow)
    • Major
    • Resolution: Unresolved
    • 10.1(EOL)
    • 10.2(EOL)
    • OTHER
    • None

    Description

      Data comes from Sandy Bridge system running sysbench OLTP RO in 1 thread against 1 table.

      Call graphs:

      -   0.51%  mysqld  mysqld
         - alloc_root
            + 5.11% String_list::append_str(st_mem_root*, char const*)
            + 5.07% JOIN::save_explain_data_intern(Explain_query*, bool, bool, bool, char const*)
            + 4.92% MYSQLparse(THD*)
            + 4.91% get_best_combination(JOIN*)
            + 4.70% strmake_root
            + 3.33% create_ref_for_key(JOIN*, st_join_table*, keyuse_t*, bool, unsigned long long)
            + 3.18% execute_sqlcom_select(THD*, TABLE_LIST*)
            + 3.15% make_join_statistics(JOIN*, List<TABLE_LIST>&, st_dynamic_array*)
            + 2.86% alloc_query(THD*, char const*, unsigned int)
            + 2.41% Explain_query::Explain_query(THD*, st_mem_root*)
            + 2.38% create_explain_query(LEX*, st_mem_root*)
            + 2.36% memdup_root
            + 2.26% SQL_SELECT::test_quick_select(THD*, Bitmap<64u>, unsigned long long, unsigned long long, bool, bool, bool)
            + 2.25% parse_sql(THD*, Parser_state*, Object_creation_ctx*, bool)
            + 2.09% get_lock_data(THD*, TABLE**, unsigned int, unsigned int)
            + 1.94% JOIN::optimize()
            + 1.91% dispatch_command(enum_server_command, THD*, char*, unsigned int)
            + 1.74% Item_equal::add_const(Item*, Item*)
            + 1.73% JOIN::alloc_func_list()
            + 1.60% make_select(TABLE*, unsigned long long, unsigned long long, Item*, bool, int*)
            + 1.60% open_and_lock_tables(THD*, DDL_options_st const&, TABLE_LIST*, bool, unsigned int, Prelocking_strategy*)
            + 1.55% get_key_scans_params(PARAM*, SEL_TREE*, bool, bool, double)
            + 1.52% update_ref_and_keys(THD*, st_dynamic_array*, st_join_table*, unsigned int, Item*, unsigned long long, st_select_lex*, st_sargable_param**) [clone .isra.253]
            + 1.40% Explain_basic_join::add_table(Explain_table_access*, Explain_query*)
            + 1.40% st_select_lex::add_joined_table(TABLE_LIST*)
            + 1.39% mysql_select(THD*, Item***, TABLE_LIST*, unsigned int, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_
            + 1.37% Item_equal::Item_equal(Item*, Item*, bool)
            + 1.30% lex_one_token(YYSTYPE*, THD*)
            + 1.29% build_equal_items(JOIN*, Item*, COND_EQUAL*, List<TABLE_LIST>*, bool, COND_EQUAL**, bool) [clone .constprop.262]
            + 1.26% JOIN::prepare(Item***, TABLE_LIST*, unsigned int, Item*, unsigned int, st_order*, bool, st_order*, Item*, st_order*, st_select_lex*, st_select_lex_unit*)
            + 1.21% get_mm_leaf(RANGE_OPT_PARAM*, Item*, Field*, st_key_part*, Item_func::Functype, Item*)
            + 1.21% check_simple_equality(Item*, Item*, Item*, COND_EQUAL*)
            + 1.20% lock_tables(THD*, TABLE_LIST*, unsigned int, unsigned int)
            + 1.16% Lex_input_stream::init(THD*, char*, unsigned int)
            + 1.16% st_select_lex::add_table_to_list(THD*, Table_ident*, st_mysql_lex_string*, unsigned long, thr_lock_type, enum_mdl_type, List<Index_hint>*, List<String>*, st_mysql_lex_string*)
            + 1.11% Explain_index_use::set_pseudo_key(st_mem_root*, char const*)
            + 1.07% st_select_lex::save_leaf_tables(THD*)
            + 1.06% st_select_lex::setup_ref_array(THD*, unsigned int)
            + 1.05% multi_alloc_root
            + 0.97% cmp_item::get_comparator(Item_result, Item*, charset_info_st const*)
            + 0.96% QUICK_RANGE_SELECT::QUICK_RANGE_SELECT(THD*, TABLE*, unsigned int, bool, st_mem_root*, bool*)
            + 0.92% Eq_creator::create(Item*, Item*) const
            + 0.87% append_possible_keys(st_mem_root*, String_list&, TABLE*, Bitmap<64u>)
            + 0.78% make_leaves_list(List<TABLE_LIST>&, TABLE_LIST*, bool, TABLE_LIST*)
            + 0.77% create_sort_index(THD*, JOIN*, st_order*, unsigned long long, unsigned long long, bool)
            + 0.76% st_select_lex::add_item_to_list(THD*, Item*)
            + 0.68% st_select_lex::init_query()

      It spends ~30% of time for function call convention:

             │     void *alloc_root(MEM_ROOT *mem_root, size_t length)
             │     {
        5.94 │       push   %rbp
       12.94 │       mov    %rsp,%rbp
        2.61 │       push   %r14
       11.93 │       push   %r13
        2.17 │       mov    %rdi,%r13
        0.82 │       push   %r12

      Check if it can be inlined.

      Attachments

        Activity

          There are no comments yet on this issue.

          People

            Unassigned Unassigned
            svoj Sergey Vojtovich
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.