about summary refs log tree commit homepage
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README86
1 files changed, 37 insertions, 49 deletions
diff --git a/README b/README
index 761f87e..1fa1dfb 100644
--- a/README
+++ b/README
@@ -1,71 +1,61 @@
-= mwrap - LD_PRELOAD malloc wrapper + line stats for Ruby
+Devel::Mwrap - LD_PRELOAD malloc wrapper + malloc line stats for Perl
 
-mwrap is designed to answer the question:
+Devel::Mwrap is designed to answer the question:
 
-   Which lines of Ruby are hitting malloc the most?
+   Which lines of Perl are hitting malloc the most?
 
-mwrap wraps all malloc-family calls to trace the Ruby source
-location of such calls and bytes allocated at each callsite.
-As of mwrap 2.0.0, it can also function as a leak detector
-and show live allocations at every call site.  Depending on
-your application and workload, the overhead is roughly a 50-100%
-increase memory and runtime with default settings.
+Devel::Mwrap wraps all malloc-family calls to trace the Perl source
+location of such calls and bytes allocated at each callsite.  It
+can also function as a leak detector and show live allocations
+at every call site.  Depending on your application and workload,
+the overhead is roughly a 50%-100% increase memory and runtime.
 
-It works best for allocations under GVL, but tries to track
-numeric caller addresses for allocations made without GVL so you
-can get an idea of how much memory usage certain extensions and
-native libraries use.
+It is thread-safe and requires the concurrent lock-free hash table
+from the Userspace RCU project: https://liburcu.org/
 
-It requires the concurrent lock-free hash table from the
-Userspace RCU project: https://liburcu.org/
+It relies on dynamic linking to a malloc(3) implementation.  If
+you got Perl from your OS distribution, this typically does not
+require rebuilding Perl.
 
-It does not require recompiling or rebuilding Ruby, but only
-supports Ruby 2.7.0 or later on a few platforms:
+Tested on the `perl' package distributed with:
 
-* GNU/Linux (only tested --without-jemalloc, mwrap 3.x provides its own)
+* Debian GNU/Linux 10 and 11
 
-It may work on FreeBSD, NetBSD, OpenBSD and DragonFly BSD if given
-appropriate build options.
+* FreeBSD 12.x
 
-== Install
+It may work on NetBSD, OpenBSD and DragonFly BSD.
 
-        # Debian-based systems: apt-get liburcu-dev
+== Install
 
-        # Install mwrap via RubyGems.org
-        gem install mwrap
+See `INSTALL' document
 
 == Usage
 
-mwrap works as an LD_PRELOAD and supplies a mwrap RubyGem executable to
+Devel::Mwrap works as an LD_PRELOAD and supplies a mwrap-perl script to
 improve ease-of-use.  You can set dump_path: in the MWRAP environment
 variable to append the results to a log file:
 
-        MWRAP=dump_path:/path/to/log mwrap RUBY_COMMAND
+        MWRAP=dump_path:/path/to/log mwrap-perl PERL_COMMAND
 
         # And to display the locations with the most allocations:
         sort -k1,1rn </path/to/log | $PAGER
 
-You may also `require "mwrap"' in your Ruby code and use
-Mwrap.dump, Mwrap.reset, Mwrap.each, etc.
+You may also `use Devel::Mwrap' in your Perl code and use
+Devel::Mwrap->dump, Devel::Mwrap->reset, Devel::Mwrap->each, etc.
 
-However, mwrap MUST be loaded via LD_PRELOAD to have any
+However, Devel::Mwrap MUST be loaded via LD_PRELOAD to have any
 effect in tracking malloc use.  However, it is safe to keep
-"require 'mwrap'" in performance-critical deployments,
+"use Devel::Mwrap" in performance-critical deployments,
 as overhead is only incurred when used as an LD_PRELOAD.
 
-The output of the mwrap dump is a text file with 3 columns:
+The output of the Devel::Mwrap->dump is a text file with 3 columns:
 
         total_bytes        call_count        location
 
-Where location is a Ruby source location (if made under GVL)
-or an address retrieved by backtrace_symbols(3).  It is
-recommended to use the sort(1) command on either of the
-first two columns to find the hottest malloc locations.
-
-mwrap 3.0.0+ also supports an embedded HTTP server
-it is documented at:
-
-https://80x24.org/mwrap.git/tree/Documentation/mwrap.pod
+Where location is a Perl source location or an address retrieved
+by backtrace_symbols(3).  It is recommended to use the sort(1)
+command on either of the first two columns to find the hottest
+malloc locations.
 
 == Known problems
 
@@ -73,28 +63,26 @@ https://80x24.org/mwrap.git/tree/Documentation/mwrap.pod
 
 * signalfd(2)-reliant code will need latest URCU with commit
   ea3a28a3f71dd02f (Disable signals in URCU background threads, 2022-09-23)
-  This doesn't affect C Ruby itself, and signalfd(2) use is rare
-  3rd-party processes.
 
-* Ruby source files over 16.7 million lines long are not supported :P
+* Perl source files over 16.7 million lines long are not supported :P
 
 == Public mail archives (HTTP, Atom feeds, IMAP mailbox, NNTP group, POP3):
 
-* https://80x24.org/mwrap-public/
-* nntps://80x24.org/inbox.comp.lang.ruby.mwrap
-* imaps://;AUTH=ANONYMOUS@80x24.org/inbox.comp.lang.ruby.mwrap.0
-* https://80x24.org/mwrap-public/_/text/help/#pop3
+        https://80x24.org/mwrap-perl/
+        imaps://;AUTH=ANONYMOUS@80x24.org/inbox.comp.lang.perl.mwrap.0
+        nntps://80x24.org/inbox.comp.lang.perl.mwrap
+        https://80x24.org/mwrap-perl/_/text/help/#pop3
 
 No subscription nor real identities will ever be required to obtain support,
 but HTML mail is rejected.  Memory usage reductions start with you;
 only send plain-text mail to us and do not top-post.  HTML mail and
 top-posting costs everybody memory and bandwidth.
 
-                mwrap-public@80x24.org
+                mwrap-perl@80x24.org
 
 == Hacking
 
-        git clone https://80x24.org/mwrap.git
+        git clone https://80x24.org/mwrap-perl.git
 
 Send all patches ("git format-patch" + "git send-email") and
 pull requests (use "git request-pull" to format) via email