From: Marc Alff Date: May 11 2010 2:19pm Subject: bzr commit into mysql-next-mr-bugfixing branch (marc.alff:3175) Bug#53566 List-Archive: http://lists.mysql.com/commits/107974 X-Bug: 53566 Message-Id: <20100511141915.0B4E05B146B@MarcBook.local> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_OcwdUkozBha94mSGtCQucg)" --Boundary_(ID_OcwdUkozBha94mSGtCQucg) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///Users/malff/BZR_TREE/mysql-next-mr-bugfixing-53566/ based on revid:alik@stripped 3175 Marc Alff 2010-05-11 Bug#53566 SHOW ENGINE PERFORMANCE_SCHEMA STATUS reports less memory than really used Prior to this fix, the statement SHOW ENGINE PERFORMANCE_SCHEMA STATUS would report less memory that really allocated by the performance schema. With this fix: - memory usage is now reported accurately - an assert enforces that everything allocated internally is reported, to avoid future discrepancies. No test script needed, as the existing scripts in the test suite provide coverage when using a debug binary (with asserts). modified: storage/perfschema/pfs_engine_table.cc storage/perfschema/pfs_global.cc storage/perfschema/pfs_global.h === modified file 'storage/perfschema/pfs_engine_table.cc' --- a/storage/perfschema/pfs_engine_table.cc 2010-05-03 15:04:02 +0000 +++ b/storage/perfschema/pfs_engine_table.cc 2010-05-11 14:19:09 +0000 @@ -36,6 +36,7 @@ /* For show status */ #include "pfs_column_values.h" #include "pfs_instr.h" +#include "pfs_global.h" #include "sql_base.h" // close_thread_tables #include "lock.h" // MYSQL_LOCK_IGNORE_TIMEOUT @@ -698,6 +699,7 @@ bool pfs_show_status(handlerton *hton, T case 40: name= "(PFS_FILE_HANDLE).MEMORY"; size= file_handle_max * sizeof(PFS_file*); + total_memory+= size; break; case 41: name= "EVENTS_WAITS_SUMMARY_BY_THREAD_BY_EVENT_NAME.ROW_SIZE"; @@ -712,13 +714,41 @@ bool pfs_show_status(handlerton *hton, T size= thread_max * instr_class_per_thread * sizeof(PFS_single_stat_chain); total_memory+= size; break; + case 44: + name= "(PFS_TABLE_SHARE).ROW_SIZE"; + size= sizeof(PFS_table_share); + break; + case 45: + name= "(PFS_TABLE_SHARE).ROW_COUNT"; + size= table_share_max; + break; + case 46: + name= "(PFS_TABLE_SHARE).MEMORY"; + size= table_share_max * sizeof(PFS_table_share); + total_memory+= size; + break; + case 47: + name= "(PFS_TABLE).ROW_SIZE"; + size= sizeof(PFS_table); + break; + case 48: + name= "(PFS_TABLE).ROW_COUNT"; + size= table_max; + break; + case 49: + name= "(PFS_TABLE).MEMORY"; + size= table_max * sizeof(PFS_table); + total_memory+= size; + break; /* This case must be last, for aggregation in total_memory. */ - case 44: + case 50: name= "PERFORMANCE_SCHEMA.MEMORY"; size= total_memory; + /* This will fail if something is not advertised here */ + DBUG_ASSERT(size == pfs_allocated_memory); break; default: goto end; === modified file 'storage/perfschema/pfs_global.cc' --- a/storage/perfschema/pfs_global.cc 2010-04-19 12:26:29 +0000 +++ b/storage/perfschema/pfs_global.cc 2010-05-11 14:19:09 +0000 @@ -26,6 +26,7 @@ #include bool pfs_initialized= false; +ulonglong pfs_allocated_memory= 0; /** Memory allocation for the performance schema. @@ -38,7 +39,9 @@ void *pfs_malloc(size_t size, myf flags) DBUG_ASSERT(size > 0); void *ptr= malloc(size); - if (ptr && (flags & MY_ZEROFILL)) + if (likely(ptr != NULL)) + pfs_allocated_memory+= size; + if (likely((ptr != NULL) && (flags & MY_ZEROFILL))) memset(ptr, 0, size); return ptr; } === modified file 'storage/perfschema/pfs_global.h' --- a/storage/perfschema/pfs_global.h 2010-04-14 09:54:35 +0000 +++ b/storage/perfschema/pfs_global.h 2010-05-11 14:19:09 +0000 @@ -22,6 +22,7 @@ */ extern bool pfs_initialized; +extern ulonglong pfs_allocated_memory; void *pfs_malloc(size_t size, myf flags); #define PFS_MALLOC_ARRAY(n, T, f) \ --Boundary_(ID_OcwdUkozBha94mSGtCQucg) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/marc.alff@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/marc.alff@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marc.alff@stripped # target_branch: file:///Users/malff/BZR_TREE/mysql-next-mr-bugfixing-\ # 53566/ # testament_sha1: 2adceb9068271f8708ea1a4b1e45b9cf91cc92f8 # timestamp: 2010-05-11 08:19:14 -0600 # base_revision_id: alik@stripped # # Begin bundle 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 --Boundary_(ID_OcwdUkozBha94mSGtCQucg)--