テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

dm-lcの紹介 目次

私が開発したdm-lc(Sorry, クローズド)*1について, 目的や動作原理, パフォーマンス評価について記事を書いています.

dm-lcは, bcache(Google)*2, enhanceio(sTec), flashcache(Facebook), dm-cache*3と同様に, SSDをキャッシュとして使い, backing storeの性能を向上させますが, write性能を向上させることにしか注力しないという極端な点に特徴があります. write backキャッシュではあるものの, サーバクラッシュ時にもリカバリが可能であるという特徴を持ち, それがシンプルな設計, 実装*4によって表現されているという点も特徴です. 私がたった一人で検討をし, 開発したことも特徴です*5.

以下に, リンクをまとめておきます.

The design and Implementation of dm-lc

dm-lcの設計と実装について述べます.

(1) 概要
なぜdm-lcを作ったのか. なぜdm-lcはストレージを高速化するのかについて書きました. dm-lcに興味がある方はご一報ください.

(2) 全体設計
dm-lcはDRAMバッファにwriteデータを溜めてからSSDキャッシュにログ書きするという動作をします. アーキテクチャの点から解説しました.

(3) メタデータ
dm-lcが, キャッシュデータの管理に使っているメタデータの説明をしました.

(4) ロック
dm-lcが持つ性能と設計におけるバランス感覚として一面であるロック設計について説明しました. 書くの苦労した><

(5) write barrier
writebackキャッシュにとってwrite barrierの扱いは難しい問題です. dm-lcの解である, timeoutつき遅延I/Oについて説明しました.

(6) migration
カーネル内のmigration制御と, 設計の疎結合性によってもたらされる美しい設計について説明しました.

(7) error handling
dm-lcが, 種々のエラーに対して思うことを書きました. プログラミング一般に通じるものがあるかと思います.

(8) Q&A
dm-lcに対する誤解を解くために追筆しました.

(9) sysfs
sysfsの詳細について話しました. sysfsは便利ですね.

(10) lcコマンドセット
dm-lcの管理コマンドと, dm-lcをお手軽にお試しする手順について説明しました.

Performance Evaluation

(下書きレベル)
- 環境
- rawディスク(SSD, HDD)
- キャッシュあり(maxスループット)
- segmentサイズを変化させる
- thread数を変化させる

執筆者さんについて

akiradeveloperさんは, 可視化アルゴリズムの高速化, 粒子シミュレーションのGPGPU高速化, SSDキャッシングLinuxテクノロジと, 性能野郎として生きてきました. そして最近では, データベースの高速化に取り組んでいます. 彼は自身のことを, 「データベース界のシーブック・アノー」と自称していますが, 頭の中はすでに, 次に何をするかでいっぱいです. Twitterは@akiradeveloper Please follow me

*1:すなわち, コードの分からないうすのろ糞馬鹿野郎は上に行ってはならんということです

*2:3.10からupstream

*3:3.9からupstream

*4:カーネルコードは3000行程度と非常にコンパクトです

*5:泥棒やめろ

広告を非表示にする