テストステ論

京大卒の高テス協会会長がテストステロンに関する情報をお届けします

情報技術

LinuxコミュニティはRustを受け入れた

私が最近注目しているプログラミング言語がある。Rustだ。Rustとは、錆のことである。何が錆なものか。JJだ。 RustはMozillaが開発しているプログラミング言語である。恥ずかしいことに私はRustの存在をつい最近まで知らなかった。私がRustの存在を知ったの…

dm-thinの概要

シンプロビジョニングとは スナップショットとは dm-thinの調査 プール discardまわり thinデバイス snapshot作成 internal と external 拡張案 わけあって、カーネルについて調査しなければいけないので、dm-thinについて調べることとした。 理由: http://w…

kpatchの仕組み

この前のYLUGで日立の平松氏が以下のような発表をしていた. 彼は今kpatchに注目している. http://www.slideshare.net/mhiramat/ylug-110th-reading-kpatch kpatchはftraceの機能を使っている. kpatchは「関数を, 修正済関数に実行時に置き換える」機能を提供…

ftraceの仕組みとアーキテクチャ

はじめに ftraceの基本原理 ftraceの仕組み イベント リングバッファ フィルタ プラグイントレーサ はじめに じっくりとライトブーストの仕事をする予定だったのに, ライトブーストのテストにはsystemtapを使いたいなぁとか妄想してたら, 気づいたらftraceに…

可読性の高いコードの書き方

意識の高いエントリを書いてみる。 難解なコードを書く上でもっとも重視しなければならないのは、可読性である。カーネルのように、品質を重視される分野では、特に重要となる。 可読性について基本的なことは以下の書かれた本に書いてある。変数のローカリ…

bcacheの使い方

bcacheのユーザインターフェイスは破綻している. どうしてwriteboostのように美しいものが拒絶されて, bcacheのように汚いものがマージされるのかが全く理解出来ない. OSSも所詮政治か. Googleのやつが作ったらうんこだって受け入れるのがLinuxカーネルか. …

カーネルVMでdm-writeboostについて発表してきました!

昨日発表してきました。 コードがなくても話せるので、コードなしで話しました。詳細な動作とかも(カーネルVMのみなさんなら)コード読めば概要レベルは30分で分かるので、完全に省きました。その代わり、戦略的なところとか、コミュニティ活動の話をしました…

dm-writeboostのI/Oを可視化した

Etsukata blog: blktrace で block IO の分布を可視化するで, btraceを使って採取したトレースをbno_plotを使って可視化する方法が紹介されている. writeboostに対して, 4KB async writeを撃ち込みまくるベンチマークを行うと, 仮想ボリュームへのアクセスは…

IDEをアンインストールしてVimを使おう

私はコーディング用EditorとしてVimを使っている。そこには多量のプラグインが入っており、全部使いこなしているとは到底言いがたいが、プラグインがなければ生産性はとてつもなく落ちる。もはや、そこらに転がってる糞エディタでは何もする気が起きない。し…

平安京ビューの性能改善 numpyの利用

今朝の解析で, 二次元配列の更新操作がボトルネックということが分かりました. そこで, 二次元配列としてnumpyの二次元配列を利用して, 行や列ごとのコピーなどをnumpyに任せてしまい, 要素ごとに逐次的に行うより性能を良くするという方針で改善を行いまし…

平安京ビューの性能解析 cProfileを使ってみよう

git flowは中毒性があります. git flow featureを続けていくことが快感です. Pythonのプロファイラは, cProfileというのが標準でついています. ストレージなど, システムの解析では, どこにボトルネックがあるのか見つけることがすでに難しいということが多…

平安京ビューの性能改善。Pythonはやはり遅いのか?

ついに0時を回ってしまった. 会社での仕事に満足行かないから*1家でコードを書く. プログラマにとっては自然なことだ. リーフノードのパッキングを計算で行うことで性能改善が可能であるという話をした. その実装を行って再度, ベンチマークを実行した. 実行…

device-mapperの仕組み (6) dm_ioで同期I/O。デッドロックに気をつけて!

前回, dm_io関数について紹介しました. device-mapperの提供するI/O発行用便利ラッパーであり, 非同期I/Oを出してからスリープして待つ方式で同期I/Oもサポートしているということを述べました. 今回は, この同期I/Oを正直に行うとデッドロックするというこ…

device-mapperの仕組み (5) dm_ioでI/Oを簡単に発行しよう!

device-mapperのターゲットを実装する時, 単にbioの行き先を変更するだけでなく, その途中でI/Oを発行したいことがしばしばあります. 例えば, キャッシュのメタデータを書き出すなどと言った処理です. filesystemではこのような処理は, submit_bioというgene…

device-mapperの仕組み (4) endioの仕組み

前回, device-mapperによって作成された仮想デバイスが, queueの処理関数であるrequest_fnについて, dm_requestという関数を設定しており, ここで, split -> clone bioをtype#mapで処理という流れになってることをコードレベルで説明しました. 今日は, I/O処…

device-mapperの仕組み (3) dm_requestからの流れ

前回, device-mapperによって作成された仮想デバイスが, 受け取ったbioをsplitして, それぞれの小さなbio(clone bio)について処理をしてから, 元bioのACK*1を返すというお話をしました. 今回は, 仮想デバイスがbioを受け取ってからtargetのmapに処理を渡すと…

device-mapperの仕組み (2) I/Oの概要

前回, device-mapperはブロックデバイスを完全にemulateする仮想デバイスを作成することを述べた. そして, 仮想デバイスが受け取ったbioに対して, 「そのbioをどのように処理するか」というstrategy*1を選択し, strategyは, bioを処理したあと, bioに設定さ…

device-mapperの仕組み (1) device-mapperの概要

device-mapperというのは、ブロック層の仮想化レイヤであり、ソフトウェア的な観点からいうとフレームワークである。 target_typeと呼ばれるプラグインをカーネルモジュールとして実装することで、device-mapperの上に仮想的なブロックデバイス機能を実現す…

device-mapperの仕組み 目次

device-mapperは, ブロック層の抽象化フレームワークです. 私が開発したdm-lc(Sorry, クローズド)は, このフレームワークのプラグインとして実装されています. device-mapperを利用する(使い倒す)ことによって, dm-lcのような複雑な制御を行うキャッシュソフ…

radikorecはインストールが超簡単!VPSでcron設定して、寝てる間にダウンロード成功!

radikorecは、ネットラジオである「らじこ」や「らじる☆らじる」からストリーミングを録音するためのソフトウェアです。Pythonで書かれています*1。 radikorecを開発した当座の目的は、自分がNHKのラジオ英会話でまた英語を勉強し始めることです。今の英語力…

SSDにおけるTRIMやSecure Eraseの調査

dm-lcの測定をするに当たって, SamsungのSSDを買いました. 測定では, 測定前に毎回SSDをクリーンにする必要があります. クリーンにするとは, SSDが管理しているデータをすべて無効化して, Garbage Collectionが当面起こらないようにすることです. 詳しくは, …

ドライブを別々にしてデュアルブートする

先日、新しいマシンを買いました。主な目的は、開発中(残念ながらクローズド)のdm-lcを追い込むことですが、GPGPUもしたいしゲームもしたいのでGTX660を積んでいます。Linuxをメインで使いたいがWindowsも使いたい。そんなおれの願いを叶えてくれ!!神龍!…