• Stars
    star
    120
  • Rank 295,983 (Top 6 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created over 11 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Log-structured Caching for Linux

dm-writeboost

Tokei Donate

Log-structured Caching for Linux

Overview

dm-writeboost is originated from Disk Caching Disk (DCD). DCD, implemented in Solaris, is an OS-level IO controller that builds logs from in-coming writes (data and metadata) and then writes the logs sequentially similar to log-structured filesystem. dm-writeboost implements the concept on Linux's device-mapper in more sophisticated way. As a further extension, dm-writeboost supports read-caching which also writes data sequentially.

Documents

Features

  • Durable: Any power failure can't break consistency because each log consists of data, metadata and the checksum of the log itself.
  • Lifetime: Other caching software (e.g. dm-cache) separates data and metadata and therefore submits writes to SSD too frequently. dm-writeboost, on the other hand, submits only one writes for hundreds of data and metadata updates so the SSD lives longer since SSD's lifetime depends on how many writes are submitted.
  • Fast: Since the sequential write is the best I/O pattern for every SSD and the code base is optimized for in-coming random writes, the write performance is the best among all caching drivers including dm-cache and bcache.
  • Portable: All kernel version 3.10 or later is supported with minimum compile-time macros.

Usage

  • Install: sudo make install to install and sudo make uninstall to uninstall. sudo make uninstall MODULE_VERSION=xxx can uninstall specific version that's installed. DKMS is required so please install it beforehand. (usually available in package system)
  • Make a device: Make a script to build a caching device. Please read doc/dm-writeboost-readme.txt for the dmsetup command detail. After reboot, you need to rebuild the caching device rather than reformatting as in the initial setup.

Distribution Packages

Related Projects

Related works

Award

Awarded by Japanese OSS Encouragement Award. Thanks!

License

Copyright (C) 2012-2023 Akira Hayakawa <[email protected]>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Developer Info

Akira Hayakawa (@akiradeveloper)
e-mail: [email protected]

More Repositories

1

lolraft

A Multi-Raft implementation in Rust language.
Rust
179
star
2

ijk

A real editor for real programmers
Rust
43
star
3

akashic-storage

Filey system backed S3-compatible storage in Scala/Akka-Http
Scala
22
star
4

msgpack-nim

A MassagePack binding for Nim / msgpack.org[Nim]
HTML
20
star
5

nim-fuse

Nim library for Filesystem in userspace (FUSE)
HTML
19
star
6

norpc

Blazingly fast framework for in-process microservices on top of Tower ecosystem
Rust
17
star
7

rubikmaster

Library for Rubik's cube applications.
Rust
16
star
8

rust-comp-snippets

Library for competitive programming in Rust.
Rust
16
star
9

MikanOS.rs

MikanOS in Rust 📙
Rust
11
star
10

phi-detector

Implementation of Phi Accrual Failure Detector!
Rust
8
star
11

csplib

Implementation of CSP for concurrent programming.
Rust
8
star
12

dm-writeboost-tools

Nice tools for dm-writeboost. Written in Rust
Rust
8
star
13

azbuse

Block device in userspace.
C
7
star
14

radikorec

A Simple Radiko/Radiru Recorder
Python
7
star
15

HeiankyoView

A fast algorithm to visualize tree structures
Python
7
star
16

sorock

(WIP) So rocking distributed object storage.
Rust
6
star
17

procon-input-compiler

Parsing the competitive programming input lightning fast.
Rust
5
star
18

macro-of-inline

A C-preprocessor to translate functions to equivalent macros
Python
5
star
19

ASURA

ASURA implementation in Rust. A better alternative of consistent-hashing.
Rust
5
star
20

blktrace

blktrace of my version
C
4
star
21

git-download

Download a single file from a Git repository.
Rust
4
star
22

benchman

It is not about Keanu Reeves but a benchmark tool.
Rust
4
star
23

bphcuda

Boltzmann Particle Hydrodynamics on GPU
C++
4
star
24

x86emu

Learning x86 assembly by implementing an emulator.
Rust
3
star
25

akka-s3

Filesystem backed S3-compatible storage in Scala/Akka-Http
Scala
3
star
26

msgpack-rpc-nim

MessagePack-RPC implementation for Nim
HTML
3
star
27

ninja-rake

more ninja!
Ruby
3
star
28

rake-elixir

Implementing Rake clone in Elixir
Elixir
2
star
29

bitbank-api-rs

Rust library for bitbank API
Rust
2
star
30

nf-puzzle-search

京都大学をぶっこわーす
Rust
2
star
31

lol-perf

Improve lol's performance. No compromise.
Rust
1
star
32

perflex

Flexible framework for benchmarks
Scala
1
star
33

procon-input-support

1
star
34

erbt

Ruby
1
star
35

learn-me-a-ruby

examination on ruby syntax
Ruby
1
star
36

Pure

A Vim Implementation in Haskell language.
1
star
37

diskit

Ruby
1
star
38

dm-repeat

A Linux device-mapper module helps testing your device-mapper module.
C
1
star
39

iocheck

stdIO-based testing framework for arbitrary programming languages.
Ruby
1
star
40

vax-number

Vax number encoder
Rust
1
star
41

akashic-storage-wiki

clone of akashic-storage.wiki
1
star
42

HeiankyoView-Go

HeiankyoView Go-rewrite on top goraph
Go
1
star
43

Siritori

Siritori solver in Haskell
Haskell
1
star
44

requidef

Ruby
1
star
45

haskeller

Haskell Data.List and infinite list in Ruby.
Ruby
1
star
46

project.vim

a clone of project.vim v1.4.1
Vim Script
1
star
47

learn-me-a-haskell

become a Haskell programmer.
Haskell
1
star
48

elixir-attic

My playground for Elixir language
Elixir
1
star
49

haskell-is-fun

Haskell
1
star
50

git-test

1
star
51

knowit

Ruby
1
star
52

procaine

Ruby
1
star
53

nim-is-fun

Nim
1
star
54

jedi

JEneric Data structure Interfaces
C
1
star
55

computer-go

Play-Go in OCaml
OCaml
1
star
56

writeboost-test-suite

Redesigning device-mapper-test-suite in Scala. Bring type-safety to dm tests
Scala
1
star
57

device-mapper-tests

Testing device-mapper targets. Rust! Rust! Rust!
Rust
1
star