summaryrefslogtreecommitdiff
path: root/mysys
diff options
context:
space:
mode:
authorMichael Widenius <monty@mariadb.org>2018-04-17 00:08:03 +0300
committerMonty <monty@mariadb.org>2018-05-07 00:07:33 +0300
commit70c1110a29a430b26990861cb753843bb00198dc (patch)
treed50bf894a520c2086ddd8bd2713432622000f247 /mysys
parent9d6dc39ad9a6c1b0a9dd373607fa1a2f9a24c335 (diff)
downloadmariadb-git-70c1110a29a430b26990861cb753843bb00198dc.tar.gz
Optimize performance schema likely/unlikely
Performance schema likely/unlikely assume that performance schema is enabled by default, which causes a performance degradation for default installations that doesn't have performance schema enabled. Fixed by changing the likely/unlikely in PS to assume it's not enabled. This can be changed by compiling with -DPSI_ON_BY_DEFAULT Other changes: - Added psi_likely/psi_unlikely that is depending on PSI_ON_BY_DEFAULT. psi_likely() is assumed to be true if PS is enabled. - Added likely/unlikely to some PS interface code. - Moved pfs_enabled to mysys (was initialized but not used before) - Added "if (pfs_likely(pfs_enabled))" around calls to PS to avoid an extra call if PS is not enabled. - Moved checking flag_global_instrumention before other flags to speed up the case when PS is not enabled.
Diffstat (limited to 'mysys')
-rw-r--r--mysys/file_logger.c2
-rw-r--r--mysys/my_likely.c4
-rw-r--r--mysys/psi_noop.c7
3 files changed, 10 insertions, 3 deletions
diff --git a/mysys/file_logger.c b/mysys/file_logger.c
index 35a077c4391..3565397c79a 100644
--- a/mysys/file_logger.c
+++ b/mysys/file_logger.c
@@ -227,7 +227,7 @@ int logger_printf(LOGGER_HANDLE *log, const char *fmt, ...)
void logger_init_mutexes()
{
#ifdef HAVE_PSI_INTERFACE
- if (PSI_server)
+ if (unlikely(PSI_server))
PSI_server->register_mutex("sql_logger", mutex_list, 1);
#endif
}
diff --git a/mysys/my_likely.c b/mysys/my_likely.c
index 9b32c65d6a0..c6fca5b7146 100644
--- a/mysys/my_likely.c
+++ b/mysys/my_likely.c
@@ -121,14 +121,14 @@ static LIKELY_ENTRY *my_likely_find(const char *file_name, uint line)
{
char key[80], *pos;
LIKELY_ENTRY *entry;
- uint length;
+ size_t length;
if (!likely_inited)
return 0;
pos= strnmov(key, file_name, sizeof(key)-4);
int3store(pos+1, line);
- length= (pos-key)+4;
+ length= (size_t) (pos-key)+4;
pthread_mutex_lock(&likely_mutex);
if (!(entry= (LIKELY_ENTRY*) my_hash_search(&likely_hash, (uchar*) key,
diff --git a/mysys/psi_noop.c b/mysys/psi_noop.c
index 6eecf56f797..f8fa2c92f63 100644
--- a/mysys/psi_noop.c
+++ b/mysys/psi_noop.c
@@ -763,6 +763,13 @@ struct PSI_bootstrap *PSI_hook= NULL;
PSI *PSI_server= & PSI_noop;
+/**
+ Global performance schema flag.
+ Indicate if the performance schema is enabled.
+ This flag is set at startup, and never changes.
+*/
+my_bool pfs_enabled= FALSE;
+
void set_psi_server(PSI *psi)
{
PSI_server= psi;