Mall - access malloc tuning/reporting functions + glibc extras

This library provides access to the SysV mallinfo(3) and mallopt(3) functions as well as (optionally) several glibc-specific malloc_*() functions. Mall.opt, Mall.trim and Mall.xml are the most interesting.

Constants and functionality are defined at build time, so changing your malloc implementation may require rebuilding and reinstalling this library.

Quick Start

> require 'mall'

> irb(main):007:0> Mall::info

=> {:arena=>12099584, :ordblks=>139, :smblks=>30, :hblks=>3, :hblkhd=>1650688, :usmblks=>0, :fsmblks=>1536, :uordblks=>12068400, :fordblks=>31184, :keepcost=>3616}

Where:

struct mallinfo2 {
  size_t arena;     /* Non-mmapped space allocated (bytes) */
  size_t ordblks;   /* Number of free chunks */
  size_t smblks;    /* Number of free fastbin blocks */
  size_t hblks;     /* Number of mmapped regions */
  size_t hblkhd;    /* Space allocated in mmapped regions (bytes) */
  size_t usmblks;   /* See below */
  size_t fsmblks;   /* Space in freed fastbin blocks (bytes) */
  size_t uordblks;  /* Total allocated space (bytes) */
  size_t fordblks;  /* Total free space (bytes) */
  size_t keepcost;  /* Top-most, releasable space (bytes) */
};

See ‘man 3 mallinfo2` (man7.org/linux/man-pages/man3/mallinfo.3.html).

irb(main):008:0> Mall::dump_stats

Arena 0:
system bytes     =   12099584
in use bytes     =   12065808
Total (incl. mmap):
system bytes     =   13750272
in use bytes     =   13716496
max mmap regions =          4
max mmap bytes   =    1851392

=> nil

Requirements

  • A malloc implementation supporting mallinfo(3) and/or mallopt(3), the ptmalloc-family of allocators used by glibc is recommended and the only tested implementation.

Build

gem install rake-compiler
rake build

Install

git clone https://github.com/sitano/mall.git && cd mall && git co ivan
gem build mall.gemspec
gem install mall-1.0.2.gem

or add

gem 'mall', git: 'https://github.com/sitano/mall.git', branch: 'ivan'

and then:

$ bundle install

SOURCE:

The original source code is available via git:

git://yhbt.net/mall.git
http://yhbt.net/mall.git

cgit repository viewer:

Contact

All feedback (bug reports, user/development dicussion, patches, pull requests) go to the mailing list: [email protected]