srv_pass_corrupt_table can share the cache line with row counters

Bug #1125259 reported by Alexey Kopytov
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Percona Server moved to https://jira.percona.com/projects/PS
Fix Released
Medium
Alexey Kopytov
5.1
Won't Fix
Undecided
Unassigned
5.5
Fix Released
Medium
Alexey Kopytov
5.6
Invalid
Undecided
Unassigned

Bug Description

The way srv_pass_corrupt_table (and a few other options) is declared in srv0srv.c may become an infinite source of false sharing due to their proximity to row counters.

UNIV_INTERN ulint srv_expand_import = 0; /* 0:disable 1:enable */
UNIV_INTERN ulint srv_pass_corrupt_table = 0; /* 0:disable 1:enable */

UNIV_INTERN ulint srv_dict_size_limit = 0;

UNIV_INTERN ulint srv_lazy_drop_table = 0;

...

UNIV_INTERN ulint srv_n_rows_inserted = 0;
UNIV_INTERN ulint srv_n_rows_updated = 0;
UNIV_INTERN ulint srv_n_rows_deleted = 0;
UNIV_INTERN ulint srv_n_rows_read = 0;

Whether it shares the cache line with some or all of those counters depends on their addresses in the data segment. Which explain varied regressions we have observed in sysbench across revisions that do not touch anything relevant.

Related branches

Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

Since srv_pass_corrupt_table is already merged to 5.6, opening this bug there in order not to lose it.

Revision history for this message
Alexey Kopytov (akopytov) wrote :

Row counters are implemented in a completely different way in 5.6, so the problem does not exist there.

Revision history for this message
Shahriyar Rzayev (rzayev-sehriyar) wrote :

Percona now uses JIRA for bug reports so this bug report is migrated to: https://jira.percona.com/browse/PS-1317

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.