ソフトウェア開発

Nexus 7ブートせず

Nexus 7がブートしなくなった。完全放電状態になるとこの状態になってしまうらしい。まめな充電が必要ということか? 幸い、ASUSから、2012年型と2013年型でこの問題が発生するも記載されてるので、電話してみることにする。 電話してみたところ、期間が過ぎ…

Checkpoint/Restart

Linux Container等で使われるCheckpoint/Restartの仕組みについてちょっと調査した。もともとの動機は、Containerでもライブマイグレーションが出来ることから、どんな風に実装しているのかな?ということ。そして、実装方法は主に2つの方法がある。プロセス…

kexec

kexecのコードをつらつらと読んでみた。プロセスの実行関数はexecだが、こちらはkernel executionの略で、kが頭についてkexecと呼ばれる。ユーザ空間のツール(kexec-tools)と、カーネル空間のシステムコール(sys_kexec_load/sys_reboot)からなっている。 使…

(Big)Data in a Virtualized World: Volume, Velocity, and Variety in Cloud Datacenters (from USENIX FAST 2014)

IBMチューリッヒ研究所によるクラウドのワークロードの実データに基づいての研究。 MultiLanes: Providing Virtualized Storage for OS-level Virtualization on Many Cores | USENIX 以下簡単なメモ 調査環境 8,000物理サーバ 90,000仮想サーバ 総計22PBの…

jailhouse

jailhouseというハイパーバイザが出てきたので、ソースコードをさらっと見てみる。 スケジューラなしの分離だけ司るハイパーバイザ。具体的には、CPUコア、メモリ、PCIバス空間の分離を行う。そこで、ゲストOSは実行されるので、効率よく稼動する。 呼び出し…

Firebox WSC 2020 From USENIX FAST 2014

Firebox WSC 2020のUSENIX FAST 2014の講演 FireBox: A Hardware Building Block for 2020 Warehouse-Scale Computers | USENIX コンピュータアーキテクチャの研究って、局所的に研究するのかと思っていたらここまで幅広く研究するのかと感心したのでメモ。 …

 MultiLanes (from USENIX FAST 2014)

コンテナでは、ホストOS上のファイルシステムがボトルネックとなって遅くなる。その解決策の検討をしたお。 なお、本研究の目的は。フラッシュやストレージクラスメモリ等の早いストレージが出現してきており、ストレージのメタデータ管理がそれに対処できて…

bashのコード

Bashのset(-x -e)とtrapの機能についてさらっと見てみた。そのとき見たコードのメモ。 資料 GNU Bash manual - GNU Project - Free Software Foundation The Architecture of Open Source Applications: The Bourne-Again Shell コード bash shell.c - bash.…

 ソフトウェアの規模を知る

以前、markmail.orgにてメールの投稿数で、OSSの活動度をはかる方法を記載した。いろいろなソフトウェアの規模(行数)があるサイトを見かけたので、記載しておく。これにより、LinuxやFreeBSDはもちろん、Apacheやその他(libvirt等)の各プロジェクトまでどの…

クリップボード(Clipboard)

クリップボードという機能は、OS問わずキーバインドまで同じということを今更ながら知る。 githubに至っては、ボタンを押すだけでクリップボードへのコピーが出来てしまう。 JavaScriptのZeroClipboardというライブラリを使っているためである。 関連技術 Gi…

execveatのパッチを読んでみる。

以下のパッチを読んでみる。結構昔(2006年ごろ)から、出ているパッチだが、なかなか入っていないらしい。プロセスは、一般に/proc以下にファイルが作られるが、それを前提としないシステムコールである。パスが見えなくなる影響の大きさを考えると、cgroup辺…

 Go言語のC-bindings(.goc/.cgo)を見てみる。

Go言語のソースコードを見てみると拡張子が、.gocというファイルを良く見かける。これは何?ということでちょっと調べてみた。 このファイル群は、Go言語のCバインディング記述を持ったファイルであり、pkg/runtime/dist以下のgoc2c.cにより、C言語のコードに…

Go言語の実装(Channel)をちょっと眺める

最近、Docker等でGo言語がはやっているので、コードをちょっと眺めてみる。 とはいっても、Concurrency機能であるGo channelの辺りしか見ていない。 わかったのは 基本的にはメッセージを送受信する仕組み。 Buffered/Unbufferedの2種類がある。(同期非同期…

Journaling of Journal Is (Almost) Free

USENIX FAST 14の論文より 本論文は、データベースのジャーナリングとファイルシステムのジャーナリングの2重化によるオーバヘッドを受けない仕組みを提案するという話である。 それに加えて、役立ったのは、Nexus 7およびIntel 311のベンチマークが縦軸付…

フラッシュメモリの長寿命化

フラッシュメモリの論文をつらつらと眺めていると、長寿命化のアプローチにいくつかあることがわかる。USENIX FAST 2014でもまだまだ論文が出ているくらいなのだから、改善ポイントはまだあるということだろう。 Wear Leveling すべてのセルに対して更新回数…

 Webエンジニアのためのデータベース技術[実践]入門

この本は、かなり基本的なところから、最新技術のところまで書いてあり、大変参考になった。たとえば、Excelでは何故だめなのかから始まっているにもかかわらず、最後はNoSQLの話まで言及している。とはいえ、もともとの話が、Linux上のMySQLの話をベースに…

RAMCloud

ふと探していたらRAMCloudでいろいろ見つけたのでメモ。昔見かけたときから、5年近くたちいろいろ論文が量産されている模様である。 ソースコードも公開してありC++で書かれているところまでは確認した。 とはいえ、(比較は書いてあるが)Redisに似ているよう…

linux ks= (kickstart)

kickstartのファイルは、ブート時にks=filenameでファイルを引き渡す。 今頃、どうやって引き渡すのかを調べてみた。カーネルのブートオプションに無いので変だな?とおもって探すと、anacondaのコードでks=を発見。 結局のところdracutでinitramfsを作るの…

ps, topの出力書式

ps, topの仕様についてコードで確認。 %cpuは、4桁以内の数字が表示される。すなわち100を超えると、小数点切り下げになる。この仕様で、CPU99個までのプロセスなら、いける。しかし、100個以上消費するプロセスがいたらどうなるか?とも考えたが、まだ考えな…

qemuの解説ページ

Qemuのメモリ管理の構造体を(今頃)探そうと見ていたら、そんなページがあった。今頃気がつくのもなんだけど、cpu-all.hがわかればよいと知り一安心。なお、最新版のQemu 1.3でもここら辺の話は変わっていない。細かいが、途中にある0xe0000000(pc_memory_ini…

 PCのディスクの消去

1999年から使っているデスクトップをついに廃棄することになってしまった。 このため、ディスクの削除を行う。一瞬、消去ソフトを買おうかとも思ったが、Linuxでも出来ることに、今更ながら気つき、ソフトの代わりにCD-Rを買ってきて削除をKNOPPIX6.7を書き…

OSS開発者をメーリングリストの投稿数で見る

OSS開発者をメーリングリストの投稿数でベスト100まで、見ることが出来る。 Home - MarkMail - Community libraries ここで、qemuの開発者を見たい場合は、検索窓で以下をタイプすればよい。 list:org.nongnu.qemu-devel また、特定のサイトからのメール投稿…

JRubyで、javaで実行できるjarファイルを作る。

コマンドライン一発で出来るみたい。ただし、設定はちょっと面倒? JRubyのgemとして、warblerを入れる。(1.3.4を入れた) 新しくディレクトリ(fooとする)をつくる。さらにその下にbinディレクトリを作る。 binディレクトリに、RubyスクリプトかJRubyでコンパ…

 3ステップでRubyスクリプトをWindows実行ファイルに変換

ActionScriptRubyをインストール ruby -r exerb/mkexy xxxx.rb でレシピファイル(xxxx.exy)を作成 exerb xxxx.exy で実行ファイル(xxxx.exe)を生成 Windows環境を持っていることが前提であり、インストールが面倒そうであったが、調べてみると意外と簡単であ…

 Xen 4.0とubuntu 11.04

ubuntu 11.04にXen 4.0を取り込もうとしている人がいる。というのは、Linux 2.6.38にDomain 0のparavirt_ops対応が準仮想ドライバ込みで入るため、手間が小さいためのようだ。 Mailing List Archive: Ubuntu Server 11.04 comes with a ParaVirtOPS dom0 ena…

ゲストからのハイパーバイザの識別

virt-what 1.3によると、以下のような情報により、仮想化ソフトウェアやゲストの種類を識別している。とはいえ、ここにはない仮想化ソフトウェアもあるので、まだまだ開発する余地はあるということかも CPUID SMBIOS /proc Xen-Dom0 ○ Xen-DomU ○ Xen-HVM ○ …

 無駄にLock Holder Preemption対策パッチ

パッチ4件(Xen/KVM Intel/AMDの組み合わせ) 以下の2件は、Xen4.0から取り込み xen-4.0-testing.hg: log xen-4.0-testing.hg: logkernel/git/torvalds/linux.git - Linux kernel source tree kernel/git/torvalds/linux.git - Linux kernel source treeAMDは…

 Linusカーネルgitツリーにある最古のファイル

どうでもいいのだが、LinusのLinuxカーネルのgitツリーはどこまでさかのぼれるのか確認。 ただし、調べたかったことはその前のようなので、役には立たず雑学としてメモ 2005年4月16日からgitは使われている。 Linux-2.6.12-rc2Initial git repository build.…

データセンター間ライブマイグレーション

ある程度長距離でのライブマイグレーションについて調べてみた。研究レベルでは、2006年ぐらいからすでにいくつかの試みがなされている。そのころ、使えたOSSのハイパーバイザーは、XenぐらいしかなかったのでみんなXenを使っている。 http://www.cs.clemson…

 Linux-nextにXen Dom0の基本部分入る

Linux-nextにXen Dom0の基本部分が入ったそうだ。とはいえ、入って4時間後にテストを始めた人もすごいとしか言いようがない。まだ、パラドライバーが入っていないようなので、ハイパーバイザに対して操作しか出来ないという初期状態。 Twitter. It's what's …