3440 Marc Alff 2011-11-09
Performance optimization
modified:
include/mysql/psi/mysql_socket.h
3439 Marc Alff 2011-11-09
Fixed build break w/o pfs
modified:
sql/sql_class.h
=== modified file 'include/mysql/psi/mysql_socket.h'
--- a/include/mysql/psi/mysql_socket.h 2011-11-08 23:28:12 +0000
+++ b/include/mysql/psi/mysql_socket.h 2011-11-09 23:54:36 +0000
@@ -120,7 +120,8 @@ mysql_socket_set_address(
)
{
#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(set_socket_info)(socket.m_psi, NULL, addr, addr_len);
+ if (socket.m_psi != NULL)
+ PSI_CALL(set_socket_info)(socket.m_psi, NULL, addr, addr_len);
#endif
}
@@ -139,7 +140,8 @@ MYSQL_SOCKET socket __attribute__ ((unus
)
{
#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(set_socket_thread_owner)(socket.m_psi);
+ if (socket.m_psi != NULL)
+ PSI_CALL(set_socket_thread_owner)(socket.m_psi);
#endif
}
@@ -243,8 +245,13 @@ inline_mysql_start_socket_wait(PSI_socke
const char *src_file, int src_line)
{
struct PSI_socket_locker *locker;
- locker= PSI_CALL(start_socket_wait)(state, mysql_socket.m_psi, op,
- byte_count, src_file, src_line);
+ if (mysql_socket.m_psi != NULL)
+ {
+ locker= PSI_CALL(start_socket_wait)(state, mysql_socket.m_psi, op,
+ byte_count, src_file, src_line);
+ }
+ else
+ locker= NULL;
return locker;
}
@@ -255,7 +262,8 @@ inline_mysql_start_socket_wait(PSI_socke
static inline void
inline_mysql_end_socket_wait(struct PSI_socket_locker *locker, size_t byte_count)
{
- PSI_CALL(end_socket_wait)(locker, byte_count);
+ if (locker != NULL)
+ PSI_CALL(end_socket_wait)(locker, byte_count);
}
/**
@@ -267,7 +275,8 @@ inline_mysql_end_socket_wait(struct PSI_
static inline void
inline_mysql_socket_set_state(MYSQL_SOCKET socket, enum PSI_socket_state state)
{
- PSI_CALL(set_socket_state)(socket.m_psi, state);
+ if (socket.m_psi != NULL)
+ PSI_CALL(set_socket_state)(socket.m_psi, state);
}
#endif /* HAVE_PSI_SOCKET_INTERFACE */
@@ -568,23 +577,28 @@ inline_mysql_socket_bind
{
int result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_socket_locker_state state;
- struct PSI_socket_locker *locker;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_BIND, (size_t)0, src_file, src_line);
-#endif
+ if (mysql_socket.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker_state state;
+ PSI_socket_locker *locker;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_BIND, (size_t)0, src_file, src_line);
+
+ /* Instrumented code */
+ result= bind(mysql_socket.fd, addr, len);
+
+ /* Instrumentation end */
+ PSI_CALL(set_socket_info)(mysql_socket.m_psi, NULL, addr, len);
+ PSI_CALL(end_socket_wait)(locker, (size_t)0);
- /* Instrumented code */
- result= bind(mysql_socket.fd, addr, len);
-
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(set_socket_info)(mysql_socket.m_psi, NULL, addr, len);
- PSI_CALL(end_socket_wait)(locker, (size_t)0);
+ return result;
+ }
#endif
+ /* Non instrumented code */
+ result= bind(mysql_socket.fd, addr, len);
return result;
}
@@ -600,22 +614,28 @@ inline_mysql_socket_getsockname
{
int result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_BIND, (size_t)0, src_file, src_line);
-#endif
+ if (mysql_socket.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_BIND, (size_t)0, src_file, src_line);
- /* Instrumented code */
- result= getsockname(mysql_socket.fd, addr, len);
+ /* Instrumented code */
+ result= getsockname(mysql_socket.fd, addr, len);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(end_socket_wait)(locker, (size_t)0);
+ /* Instrumentation end */
+ PSI_CALL(end_socket_wait)(locker, (size_t)0);
+
+ return result;
+ }
#endif
+ /* Non instrumented code */
+ result= getsockname(mysql_socket.fd, addr, len);
+
return result;
}
@@ -631,22 +651,28 @@ inline_mysql_socket_connect
{
int result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_CONNECT, (size_t)0, src_file, src_line);
-#endif
+ if (mysql_socket.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_CONNECT, (size_t)0, src_file, src_line);
- /* Instrumented code */
- result= connect(mysql_socket.fd, addr, len);
+ /* Instrumented code */
+ result= connect(mysql_socket.fd, addr, len);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(end_socket_wait)(locker, (size_t)0);
+ /* Instrumentation end */
+ PSI_CALL(end_socket_wait)(locker, (size_t)0);
+
+ return result;
+ }
#endif
+ /* Non instrumented code */
+ result= connect(mysql_socket.fd, addr, len);
+
return result;
}
@@ -662,22 +688,28 @@ inline_mysql_socket_getpeername
{
int result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_BIND, (size_t)0, src_file, src_line);
-#endif
+ if (mysql_socket.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_BIND, (size_t)0, src_file, src_line);
- /* Instrumented code */
- result= getpeername(mysql_socket.fd, addr, len);
+ /* Instrumented code */
+ result= getpeername(mysql_socket.fd, addr, len);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(end_socket_wait)(locker, (size_t)0);
+ /* Instrumentation end */
+ PSI_CALL(end_socket_wait)(locker, (size_t)0);
+
+ return result;
+ }
#endif
+ /* Non instrumented code */
+ result= getpeername(mysql_socket.fd, addr, len);
+
return result;
}
@@ -693,24 +725,30 @@ inline_mysql_socket_send
{
ssize_t result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- size_t bytes_written;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_SEND, n, src_file, src_line);
+ if (mysql_socket.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ size_t bytes_written;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_SEND, n, src_file, src_line);
+
+ /* Instrumented code */
+ result= send(mysql_socket.fd, buf, n, flags);
+
+ /* Instrumentation end */
+ bytes_written= (result > -1) ? result : 0;
+ PSI_CALL(end_socket_wait)(locker, bytes_written);
+
+ return result;
+ }
#endif
- /* Instrumented code */
+ /* Non instrumented code */
result= send(mysql_socket.fd, buf, n, flags);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- bytes_written= (result > -1) ? result : 0;
- PSI_CALL(end_socket_wait)(locker, bytes_written);
-#endif
-
return result;
}
@@ -726,24 +764,30 @@ inline_mysql_socket_recv
{
ssize_t result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- size_t bytes_read;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_RECV, (size_t)0, src_file, src_line);
+ if (mysql_socket.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ size_t bytes_read;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_RECV, (size_t)0, src_file, src_line);
+
+ /* Instrumented code */
+ result= recv(mysql_socket.fd, buf, n, flags);
+
+ /* Instrumentation end */
+ bytes_read= (result > -1) ? result : 0;
+ PSI_CALL(end_socket_wait)(locker, bytes_read);
+
+ return result;
+ }
#endif
- /* Instrumented code */
+ /* Non instrumented code */
result= recv(mysql_socket.fd, buf, n, flags);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- bytes_read= (result > -1) ? result : 0;
- PSI_CALL(end_socket_wait)(locker, bytes_read);
-#endif
-
return result;
}
@@ -759,24 +803,30 @@ inline_mysql_socket_sendto
{
ssize_t result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- size_t bytes_written;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_SEND, n, src_file, src_line);
+ if (mysql_socket.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ size_t bytes_written;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_SEND, n, src_file, src_line);
+
+ /* Instrumented code */
+ result= sendto(mysql_socket.fd, buf, n, flags, addr, addr_len);
+
+ /* Instrumentation end */
+ bytes_written = (result > -1) ? result : 0;
+ PSI_CALL(end_socket_wait)(locker, bytes_written);
+
+ return result;
+ }
#endif
- /* Instrumented code */
+ /* Non instrumented code */
result= sendto(mysql_socket.fd, buf, n, flags, addr, addr_len);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- bytes_written = (result > -1) ? result : 0;
- PSI_CALL(end_socket_wait)(locker, bytes_written);
-#endif
-
return result;
}
@@ -793,24 +843,30 @@ inline_mysql_socket_recvfrom
{
ssize_t result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- size_t bytes_read;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_RECV, (size_t)0, src_file, src_line);
+ if (mysql_socket.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ size_t bytes_read;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_RECV, (size_t)0, src_file, src_line);
+
+ /* Instrumented code */
+ result= recvfrom(mysql_socket.fd, buf, n, flags, addr, addr_len);
+
+ /* Instrumentation end */
+ bytes_read = (result > -1) ? result : 0;
+ PSI_CALL(end_socket_wait)(locker, bytes_read);
+
+ return result;
+ }
#endif
- /* Instrumented code */
+ /* Non instrumented code */
result= recvfrom(mysql_socket.fd, buf, n, flags, addr, addr_len);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- bytes_read = (result > -1) ? result : 0;
- PSI_CALL(end_socket_wait)(locker, bytes_read);
-#endif
-
return result;
}
@@ -826,22 +882,28 @@ inline_mysql_socket_getsockopt
{
int result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_OPT, (size_t)0, src_file, src_line);
-#endif
+ if (mysql_socket.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_OPT, (size_t)0, src_file, src_line);
- /* Instrumented code */
- result= getsockopt(mysql_socket.fd, level, optname, optval, optlen);
+ /* Instrumented code */
+ result= getsockopt(mysql_socket.fd, level, optname, optval, optlen);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(end_socket_wait)(locker, (size_t)0);
+ /* Instrumentation end */
+ PSI_CALL(end_socket_wait)(locker, (size_t)0);
+
+ return result;
+ }
#endif
+ /* Non instrumented code */
+ result= getsockopt(mysql_socket.fd, level, optname, optval, optlen);
+
return result;
}
@@ -858,22 +920,28 @@ inline_mysql_socket_setsockopt
{
int result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_OPT, (size_t)0, src_file, src_line);
-#endif
+ if (mysql_socket.m_psi)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_OPT, (size_t)0, src_file, src_line);
- /* Instrumented code */
- result= setsockopt(mysql_socket.fd, level, optname, optval, optlen);
+ /* Instrumented code */
+ result= setsockopt(mysql_socket.fd, level, optname, optval, optlen);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(end_socket_wait)(locker, (size_t)0);
+ /* Instrumentation end */
+ PSI_CALL(end_socket_wait)(locker, (size_t)0);
+
+ return result;
+ }
#endif
+ /* Non instrumented code */
+ result= setsockopt(mysql_socket.fd, level, optname, optval, optlen);
+
return result;
}
@@ -889,22 +957,28 @@ inline_mysql_socket_listen
{
int result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_CONNECT, (size_t)0, src_file, src_line);
-#endif
+ if (mysql_socket.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_CONNECT, (size_t)0, src_file, src_line);
- /* Instrumented code */
- result= listen(mysql_socket.fd, backlog);
+ /* Instrumented code */
+ result= listen(mysql_socket.fd, backlog);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(end_socket_wait)(locker, (size_t)0);
+ /* Instrumentation end */
+ PSI_CALL(end_socket_wait)(locker, (size_t)0);
+
+ return result;
+ }
#endif
+ /* Non instrumented code */
+ result= listen(mysql_socket.fd, backlog);
+
return result;
}
@@ -921,27 +995,37 @@ inline_mysql_socket_accept
MYSQL_SOCKET socket_accept= MYSQL_INVALID_SOCKET;
socklen_t addr_length= (addr_len != NULL) ? *addr_len : 0;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- locker= PSI_CALL(start_socket_wait)(&state, socket_listen.m_psi,
- PSI_SOCKET_CONNECT, (size_t)0, src_file, src_line);
-#endif
+ if (socket_listen.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ locker= PSI_CALL(start_socket_wait)(&state, socket_listen.m_psi,
+ PSI_SOCKET_CONNECT, (size_t)0, src_file, src_line);
+
+ /* Instrumented code */
+ socket_accept.fd= accept(socket_listen.fd, addr, &addr_length);
+
+ /* Instrumentation end */
+ PSI_CALL(end_socket_wait)(locker, (size_t)0);
+ }
+ else
+#endif
+ {
+ /* Non instrumented code */
+ socket_accept.fd= accept(socket_listen.fd, addr, &addr_length);
+ }
- /* Instrumented code */
- socket_accept.fd= accept(socket_listen.fd, addr, &addr_length);
-
- /* Instrumentation end */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(end_socket_wait)(locker, (size_t)0);
-
/* Initialize the instrument with the new socket descriptor and address */
socket_accept.m_psi=
PSI_CALL(init_socket)(key, (const my_socket*)&socket_accept.fd);
- PSI_CALL(set_socket_info)(socket_accept.m_psi, &socket_accept.fd, addr,
- addr_length);
+ /* FIXME: simplify this with just 1 call to init_socket(). */
+ if (socket_accept.m_psi != NULL)
+ PSI_CALL(set_socket_info)(socket_accept.m_psi, &socket_accept.fd, addr,
+ addr_length);
#endif
return socket_accept;
@@ -959,24 +1043,30 @@ inline_mysql_socket_close
{
int result;
- /* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_CLOSE, (size_t)0, src_file, src_line);
+ if (mysql_socket.m_psi != NULL)
+ {
+ /* Instrumentation start */
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_CLOSE, (size_t)0, src_file, src_line);
+
+ /* Instrumented code */
+ result= closesocket(mysql_socket.fd);
+
+ /* Instrumentation end */
+ PSI_CALL(end_socket_wait)(locker, (size_t)0);
+ /* Remove the instrumentation for this socket. */
+ PSI_CALL(destroy_socket)(mysql_socket.m_psi);
+
+ return result;
+ }
#endif
- /* Instrumented code */
+ /* Non instrumented code */
result= closesocket(mysql_socket.fd);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(end_socket_wait)(locker, (size_t)0);
- /* Remove the instrumentation for this socket. */
- PSI_CALL(destroy_socket)(mysql_socket.m_psi);
-#endif
-
return result;
}
@@ -994,20 +1084,26 @@ inline_mysql_socket_shutdown
/* Instrumentation start */
#ifdef HAVE_PSI_SOCKET_INTERFACE
- struct PSI_socket_locker *locker;
- PSI_socket_locker_state state;
- locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
- PSI_SOCKET_SHUTDOWN, (size_t)0, src_file, src_line);
-#endif
+ if (mysql_socket.m_psi != NULL)
+ {
+ PSI_socket_locker *locker;
+ PSI_socket_locker_state state;
+ locker= PSI_CALL(start_socket_wait)(&state, mysql_socket.m_psi,
+ PSI_SOCKET_SHUTDOWN, (size_t)0, src_file, src_line);
- /* Instrumented code */
- result= shutdown(mysql_socket.fd, how);
+ /* Instrumented code */
+ result= shutdown(mysql_socket.fd, how);
- /* Instrumentation end */
-#ifdef HAVE_PSI_SOCKET_INTERFACE
- PSI_CALL(end_socket_wait)(locker, (size_t)0);
+ /* Instrumentation end */
+ PSI_CALL(end_socket_wait)(locker, (size_t)0);
+
+ return result;
+ }
#endif
+ /* Non instrumented code */
+ result= shutdown(mysql_socket.fd, how);
+
return result;
}
No bundle (reason: useless for push emails).
| Thread |
|---|
| • bzr push into mysql-trunk-pfs-tuning branch (marc.alff:3439 to 3440) | Marc Alff | 11 Nov |