Bug #69665 please print the pfs_allocated_memory in error log during startup

Submitted: 3 Jul 2013 18:09 Modified: 10 Mar 2015 9:41
Reporter: Shane Bester (Platinum Quality Contributor) Email Updates:
Status: Won't fix Impact on me:
None 
Category:MySQL Server: Performance Schema Severity:S4 (Feature request)
Version:5.6.13 OS:Any
Assigned to: Marc ALFF CPU Architecture:Any

[3 Jul 2013 18:09] Shane Bester
Description:
performance_schema allocates all memory once during startup.
to find out how much memory is in use, 'show engine performance_schema status' can be run.

this is a feature request to print a one-liner to the error log containing the memory allocation amount during startup (much like innodb does).

How to repeat:
.

Suggested fix:
a small note in the error log can help, e.g:

[Note] Performance_schema using 3233167624 bytes
[3 Jul 2013 18:13] Shane Bester
many folks do not know about 
'show engine performance_schema status' command..

http://dev.mysql.com/doc/refman/5.6/en/show-engine.html
[6 Jun 2014 22:48] James Day
Here's an example of that output and how to get it at the command line:

mysql -e "show engine performance_schema status" | find "memory"
performance_schema      events_waits_history.memory     707520
performance_schema      events_waits_history_long.memory        1760000
performance_schema      (pfs_mutex_class).memory        51200
performance_schema      (pfs_rwlock_class).memory       9600
performance_schema      (pfs_cond_class).memory 20480
performance_schema      (pfs_thread_class).memory       9600
performance_schema      (pfs_file_class).memory 16000
performance_schema      mutex_instances.memory  2035968
performance_schema      rwlock_instances.memory 1747584
performance_schema      cond_instances.memory   448512
performance_schema      threads.memory  1132032
performance_schema      file_instances.memory   5415872
performance_schema      (pfs_file_handle).memory        262144
performance_schema      events_waits_summary_by_thread_by_event_name.memory     4798272
performance_schema      (pfs_table_share).memory        277600000
performance_schema      (pfs_table).memory      37120000
performance_schema      setup_actors.memory     25600
performance_schema      setup_objects.memory    44800
performance_schema      (pfs_account).memory    25600
performance_schema      events_waits_summary_by_account_by_event_name.memory    1193600
performance_schema      events_waits_summary_by_user_by_event_name.memory       1193600
performance_schema      events_waits_summary_by_host_by_event_name.memory       1193600
performance_schema      (pfs_user).memory       12800
performance_schema      (pfs_host).memory       12800
performance_schema      (pfs_stage_class).memory        38400
performance_schema      events_stages_history.memory    353760
performance_schema      events_stages_history_long.memory       880000
performance_schema      events_stages_summary_by_thread_by_event_name.memory    1929600
performance_schema      events_stages_summary_global_by_event_name.memory       4800
performance_schema      events_stages_summary_by_account_by_event_name.memory   480000
performance_schema      events_stages_summary_by_user_by_event_name.memory      480000
performance_schema      events_stages_summary_by_host_by_event_name.memory      480000
performance_schema      (pfs_statement_class).memory    32256
performance_schema      events_statements_history.memory        12156480
performance_schema      events_statements_history_long.memory   30240000
performance_schema      events_statements_summary_by_thread_by_event_name.memory        12426624
performance_schema      events_statements_summary_global_by_event_name.memory   30912
performance_schema      events_statements_summary_by_account_by_event_name.memory       3091200
performance_schema      events_statements_summary_by_user_by_event_name.memory  3091200
performance_schema      events_statements_summary_by_host_by_event_name.memory  3091200
performance_schema      events_statements_current.memory        1215648
performance_schema      (pfs_socket_class).memory       3200
performance_schema      socket_instances.memory 103040
performance_schema      events_statements_summary_by_digest.memory      14720000
performance_schema      session_connect_attrs.memory    205824
performance_schema      performance_schema.memory       421891328

This output is from a noinstall Windows 5.6.19 64 bit build, hence the use of find instead of grep.

James Day, MySQL Senior Principal Support Engineer, Oracle
[6 Jun 2014 22:59] James Day
A more detailed description of how the performance schema works out how much memory to allocate is given at bug #68287. It uses a small, medium or large approach is based on the settings of table_definition_cache, table_open_cache and max_connections. If you want to reduce the memory usage but leave PS enabled, just change one of those three settings in my.cnf/ini to a value smaller than default and leave the others are or also below the default.

Here is a linux example to show the effect of just changing table_definition_cache, with max_connections always 151, table_open_cache 2000 and open_files_limit 65000, all other server settings default and little data in any table:

400: small size: 52.6 megabytes
401: medium size: 90.7 megabytes
800: medium size: 98.4 megabytes
801: large size: 400 megabytes
[10 Mar 2015 9:35] Marc ALFF
Starting with MySQL 5.7.6, the performance schema does not allocate all memory needed up-front, but allocate memory on demand during the server execution.

How much memory is currently used can be seen:
- in SHOW ENGINE PERFORMANCE_SCHEMA STATUS, as before
- also in table performance_schema.memory_summary_global_by_event_name,
with new memory instruments for the performance schema itself.

Printing pfs_allocated_memory at startup is no longer relevant starting with 5.7.6

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.053 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.