Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit

This doesn't completely fix things for macOS 13.1, as dtruss/dtrace
and SIP doesn't leave us in a happy place.

Signed-off-by: Stewart Smith <>

Git stats


Failed to load latest commit information.
Latest commit message
Commit time


An LD_PRELOAD library that disables all forms of writing data safely to disk. fsync() becomes a NO-OP, O_SYNC is removed etc.

The idea is to use in testing to get faster test runs where real durability is not required.

DO NOT use libeatmydata on software where you care about what it stores. It's called libEAT-MY-DATA for a reason.



Debian/Ubuntu and friends:

apt install eatmydata

To build from source, you will need autoconf, autoconf-archive, automake, libtool, and a compiler (say, gcc).

Then, build and install like so:

git clone # (or extract from source tarball)
cd libeatmydata
autoreconf -i # (if building from git only)
make check
sudo make install


eatmydata foo

Performance Improvements

When running part of the MySQL test suite in 2007 on my laptop:

TEST                           RESULT         TIME (ms)   TIME (with libeatmydata)

main.innodb-lock               [ pass ]           4523     4323
main.innodb-replace            [ pass ]            102       56
main.innodb-ucs2               [ pass ]           5786     1084
main.innodb                    [ pass ]          78306    24900
main.innodb_gis                [ pass ]           2647     1544
main.innodb_mysql              [ pass ]          86810    68579
main.innodb_notembedded        [ pass ]            198      150
main.innodb_timeout_rollback   [ pass ]           2990     2750
main.innodb_trx_weight         [ pass ]           1608      841
Stopping All Servers
All 9 tests were successful.
The servers were restarted 7 times

WITHOUT: Spent 182.97 seconds actually executing testcases
WITH   : Spent 104.227 seconds actually executing testcases

WITHOUT:               WITH:
real    3m36.053s      real    2m10.610s
user    0m42.323s      user    0m41.939s
sys     0m2.844s       sys     0m2.356s


libeatmydata was the product of a talk I gave back at 2007, titled "Eat My Data: How Everybody gets File IO Wrong" - I also gave this talk at OSCON. This talk went over the common mistakes people make when using POSIX file IO routines.

You can watch a video recording of this talk at:


(C)2007-2022 Stewart Smith and other contributors (see AUTHORS) See LICENSE for full text of GPLv3