Skip to content

radix-io/timber

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Timber: a log-oriented I/O library

This code originally existed as an "ADIO" driver for ROMIO, an MPI-IO implementation. Timber took all that code out of ROMIO with the thought that other I/O interfaces might find it helpful.

installation

Timber requires MPI for datatype processing and collectives.

Building uses standard autotools:

$ configure --prefix=... CC=mpicc

configuring MPICH

Originally developed as a ROMIO adio driver, the build process for the standalone library is a little convoluted. LogFS requires an MPI compiler to build, but if you want a logfs ROMIO driver, you will need LogFS headers. You will end up building MPICH, then logfs, then building MPICH a second time.

  1. configure mpich as you normally would, with a prefix pointing to /some/path
  2. configure/install timber/logfs , using the MPICH you just built above: $ configure CC=/some/path/bin/mpicc
  3. configure/install mpich with logfs. It will be just like step #1 except now to get logfs support you configure with --with-file-system=ufs+logfs (plus whatever other ROMIO drivers you would like to use

Tuning knobs for LogFS

Timber uses a few MPI-IO info keys to guide its behavior. The defaults are sensible enough but if, for example, you wished to log to a fast local SSD.

MPI-IO Hints

Set these like you would any other hint. I like to use the "system hints": put them in a config file.

Most useful hints:

  • "logfs_replayonclose": If set, replay the file when closing. Otherwise, replay will be deferred until first read. (default: "false")
  • "logfs_info_logbase": set base dir for log files (default: same directory in which cannoncial file resides)
  • "logfs_flushblocksize": size of intermediate buffer for replaying log files( default: 1 MiB)

Other hints:

  • "logfs_readmode": if you don't plan on ever reading the log file then logfs will defer some work as late as possible. If you might read the data, then logfs will maintain a bit of extra state. (default: "track_some")
  • "logfs_debug": logfs can dump out some additional information. It's not clear how helpful this is.
  • "logfs_timereplay": report how long it takes to replay the log file. Currently broken
  • "logfs_datablockcount": number of blocks in write buffer (default: 2)
  • "logfs_datablocksize": size of a block in the write buffer (default: 1 MiB)
  • "logfs_metablocksize": size of a block in the metadata buffer (default: 64 KiB)
  • "logfs_metablockcount": number of blocks in metadata buffer (default: 2)
  • "logfs_sync": for sync mode (no lazy writing). In sync mode, no write buffering is done (ignoring the blockcount/blocksize keys). (default: "false")

NOTE: xxxBLOCKCOUNT and xxxBLOCKSIZE should both be set, otherwise they have no effect

Environment variables

  • LOGFSTMP
  • LOGFS_DEBUG
  • LOGFS_TIMERREPLAY

Additional Information

Dries Kimpe wrote the original LogFS work. The paper "Transparent log-based data storage in MPI-IO applications" provides more details about the design choices.

About

a log-oriented I/O library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages