From: Marc Alff Date: November 9 2011 11:55pm Subject: bzr push into mysql-trunk-pfs-tuning branch (marc.alff:3439 to 3440) List-Archive: http://lists.mysql.com/commits/141815 Message-Id: <201111092355.pA9NtJ8o010567@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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).