mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Valerie Henson <val_henson@linux.intel.com>
To: linux-kernel@vger.kernel.org
Cc: Arjan van de Ven <arjan@linux.intel.com>
Subject: [ANNOUNCE] ebizzy 0.1: Search application simulator
Date: Fri, 21 Apr 2006 17:40:02 -0700	[thread overview]
Message-ID: <20060422004001.GB32385@goober> (raw)

Hi folks,

While investigating performance problems at a Large Web Company You
Have Heard Of, I found Linux isn't super great for an application with
the following characteristics:

* Many threads in one process, doing the following:
  * alloc/write/free of large (> 128K) chunks of memory
  * large (> 16GB) in-memory working set with low locality
  * unpredictable memory access patterns

As the original app is closed source, I wrote an app with similar
characteristics, called ebizzy.  It allocates a lot of memory and
kicks off a bunch of threads to copy large chunks of memory, do a
binary search for a random key, and free it again.  It's available
now, under the GPL:

http://infohost.nmt.edu/~val/patches/ebizzy.tar.gz

You may recall that Arjan van de Ven posted some kernel patches
related to this a couple of months ago and several people asked for
our test program, but at the time I couldn't release it.

Arjan and I wrote a patch to libc that fixes the most obvious
performance problem (mmap/clear page/unmap cycle due to static
malloc() mmap threshold of 128KB); the rest is up for grabs.  Hint:
making it use large pages _without_ rewriting it would be a big win.

The README is below; download the tar.gz for actual code.

-VAL

ebizzy
------

ebizzy is designed to generate a workload resembling common web
application server workloads.  It is highly threaded, has a large
in-memory working set, and allocates and deallocates memory
frequently.  When running most efficiently, it will max out the CPU.

Compiling
---------

To compile ebizzy, simply type "make".  The resulting binary will
be named "ebizzy".

Running
-------

ebizzy does not require any command line arguments.  To get
results, run it with the "time" program, e.g.:

$ time ./ebizzy

The shorter the elapsed time, the better.  The system time should be
as close to zero as possible.

An interesting part of this app is difference between memory
allocation using the "always mmap" and "never mmap" flags.  -m is
"always mmap" and -M is "never mmap":

$ time ./ebizzy -m
$ time ./ebizzy -M

The output of the above two commands should be quite different.

ebizzy has many command line arguments.  To get a list of them and
their descriptions, type:

$ ./ebizzy -?

Support
-------

There is none.  However, you can try emailing the author with
questions and suggestions.

Val Henson <val_henson@linux.intel.com>

                 reply	other threads:[~2006-04-22  0:40 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060422004001.GB32385@goober \
    --to=val_henson@linux.intel.com \
    --cc=arjan@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®