MySQL 5.7 Reference Manual Including MySQL NDB Cluster 7.5 and NDB Cluster 7.6
      When InnoDB was developed, the memory
      allocators supplied with operating systems and run-time libraries
      were often lacking in performance and scalability. At that time,
      there were no memory allocator libraries tuned for multi-core
      CPUs. Therefore, InnoDB implemented its own
      memory allocator in the mem subsystem. This
      allocator is guarded by a single mutex, which may become a
      bottleneck.
      InnoDB also implements a wrapper interface
      around the system allocator (malloc and
      free) that is likewise guarded by a single
      mutex.
    
      Today, as multi-core systems have become more widely available,
      and as operating systems have matured, significant improvements
      have been made in the memory allocators provided with operating
      systems. These new memory allocators perform better and are more
      scalable than they were in the past. Most workloads, especially
      those where memory is frequently allocated and released (such as
      multi-table joins), benefit from using a more highly tuned memory
      allocator as opposed to the internal,
      InnoDB-specific memory allocator.
    
      You can control whether InnoDB uses its own
      memory allocator or an allocator of the operating system, by
      setting the value of the system configuration parameter
      innodb_use_sys_malloc in the MySQL option file
      (my.cnf or my.ini). If set
      to ON or 1 (the default),
      InnoDB uses the malloc and
      free functions of the underlying system rather
      than manage memory pools itself. This parameter is not dynamic,
      and takes effect only when the system is started. To continue to
      use the InnoDB memory allocator, set
      innodb_use_sys_malloc to 0.
    
      When the InnoDB memory allocator is disabled,
      InnoDB ignores the value of the parameter
      innodb_additional_mem_pool_size. The
      InnoDB memory allocator uses an additional
      memory pool for satisfying allocation requests without having to
      fall back to the system memory allocator. When the
      InnoDB memory allocator is disabled, all such
      allocation requests are fulfilled by the system memory allocator.
    
      On Unix-like systems that use dynamic linking, replacing the
      memory allocator may be as easy as making the environment variable
      LD_PRELOAD or
      LD_LIBRARY_PATH point to the dynamic library
      that implements the allocator. On other systems, some relinking
      may be necessary. Please refer to the documentation of the memory
      allocator library of your choice.
    
      Since InnoDB cannot track all memory use when
      the system memory allocator is used
      (innodb_use_sys_malloc is
      ON), the section “BUFFER POOL AND
      MEMORY” in the output of the SHOW ENGINE INNODB
      STATUS command only includes the buffer pool statistics
      in the “Total memory allocated”. Any memory allocated
      using the mem subsystem or using
      ut_malloc is excluded.
    
        innodb_use_sys_malloc and
        innodb_additional_mem_pool_size were
        deprecated in MySQL 5.6 and removed in MySQL
        5.7.
      
      For more information about the performance implications of
      InnoDB memory usage, see
      Section 8.10, “Buffering and Caching”.