タグ

ブックマーク / oraccha.hatenadiary.org (30)

  • 「Virtualを仮想と誤訳した責任は我々にあります」 - Plan9日記

    書籍「ソフトを他人に作らせる日、自分で作る米国」を読んでいたところ、元日IBMの方によるタイトルの発言が飛び出した。この業界に長くいると、仮想記憶に仮想計算機と「仮想」という訳語にはまったく違和感を感じなくなってしまったが。。。曰く、IBMがVirtual memoryを発表したとき(MVSのことかな*1)、日IBMが仮想記憶と訳したのだそうな。『virtualは「事実上の」「実質的」という意味であり、virtual memoryは「来のメモリーではないが事実上メモリーとして使える技術」を意味する。』 大学時代の恩師も次のように言っていた。 「仮想」という概念が、コンピュータの世界に入ったのは、19751965年のことである。MITがMULTICSという汎用大型TSSの構想を発表した。これが現在の、パソコンネットワーク時代の幕開けの狼煙であった。この中の技術に「仮想記憶」の概念が含

    「Virtualを仮想と誤訳した責任は我々にあります」 - Plan9日記
    yyamano
    yyamano 2014/09/26
    曰く、IBMがVirtual memoryを発表したとき(MVSのことかな)、日本IBMが仮想記憶と訳したのだそうな。『virtualは「事実上の」「実質的」という意味であり、virtual memoryは「本来のメモリーではないが事実上メモリーとして使える
  • Google Compute Engine事始め - Plan9日記

    佐藤さんの講演を聴いて、プロモーションコードをゲットしたことだし*1、GCEを少し試してみることにした。中身を見ずに「Google Compute Engine入門」という書籍も買ってみたのだけど、すでに内容が古くなっている気が。。。書ではgutilというCLIツールを使っているのだけど、すでにgutilからgcloudというツールに乗り換えることが推奨されている。 この辺を見ながらgcloudを含むSDKをインストール。 $ curl https://sdk.cloud.google.com | bashGCEを使うためのOAuthの設定のためにgcloud auth loginを実行する。実行すると勝手にブラウザが認証用ページに飛び、よしなにしてくれる。 $ gcloud auth loginDevelopers consoleでプロジェクトを作り、早速インスタンスを立ち上げてみる。

    Google Compute Engine事始め - Plan9日記
    yyamano
    yyamano 2014/09/08
  • systemdとcgroup - Plan9日記

    systemdではcgroupを活用しているようだ。サービスごとにcgroupでアイソレーションされているので、関係するプロセスを一網打尽で殺せるし、サービスごとの資源利用量を観測できる。確かにpidをファイルに記録しておいて、殺すってのはダサいよね。流れとしてはユニットファイルでExecStopで指定されているコマンドを実行し、それでも当該グループのプロセスが残っている場合は、SIGTERM、SIGKILLの順でシグナルを投げるそうな。詳細はレッドハット中井さんの「Linux女子部 systemd徹底入門」とか。 次はsystemd-cgtopの実行例。 Path Tasks %CPU Memory Input/s Output/s / 86 0.3 197.3M - - /system.slice/NetworkManager.service 2 - - - - /system.sli

    systemdとcgroup - Plan9日記
    yyamano
    yyamano 2014/09/08
  • systemdについて - Plan9日記

    前回の続きで、systemdを少し調べてみる。systemdはsysvinitに代わってRedhatやDebianで採用されているが、「Linus様がSystemdにぶちきれる」とかboycott systemdとか、物議を醸しているようだ。 CentOS 6.5だと、PID 1は当然initだけど、CentOS 7はsystemdになっているのがわかる。 $ pstree -h init─┬─acpid ├─agetty ├─crond ├─6*[mingetty] ├─ntpd ├─rpc.statd ├─rpcbind ├─rsyslogd───3*[{rsyslogd}] ├─sshd───sshd───sshd───bash───pstree └─udevd───2*[udevd][vagrant@localhost ~]$ pstree systemd─┬─NetworkMan

    systemdについて - Plan9日記
    yyamano
    yyamano 2014/09/08
  • 計算「ノード」という呼び方について - Plan9日記

    計算機のことをノードとかホストと呼ぶことがある。ホストは計算をホスティングするという意味で問題ないけど、今回はノードという呼び方について考えてみる。特に計算機がネットワークに接続されたクラスタやデータセンタではノードと呼ぶことが多い。計算機屋のみと話しているときはこれで支障ないのだけど、ネットワーク屋と話していると話がい違ってしまうことがある。特にデバイスに近い人だと、スイッチングモジュールなどのチップをスイッチ、システムとなった装置をノードと呼んでいたりする。ネットワークの視点で見ると、スイッチやルータがノード(節点)であるというのは正しい。 計算ノードと呼び始めたのは、HPC分野で単に計算ノードとスイッチノードの区別から始まったのかもしれない。けど、インターコネクト・トポロジがメッシュ・トーラスだった計算機が由来だったりしないかな。メッシュ・トーラスなら計算ノードでルーティングするし

    計算「ノード」という呼び方について - Plan9日記
    yyamano
    yyamano 2013/02/04
  • スパコンとは何か - Plan9日記

    SC2012に向けての機内で金田先生の「スパコンとは何か」を読んだ。2009年の京、そして2011年のHPCIの事業仕分けに仕分け人として関わった東大情報基盤センタの金田先生によるスパコン解説である。京はLLNLのSequoia (BG/Q)に抜かれてTOP500の2位になったが、今回のTOP500の目玉はORNLのTitan (Cray XK7)。TitanはOpteron + GPUというアーキテクチャで、ピーク性能は20PFLOPSと言われている。一般的にGPUの実効性能は高くないけど、NVIDIA Tesla K20xはDGEMMでも結構いい性能が出るらしいし、当然1位を狙ってくるはずだ。 さて、書は以前取り上げた姫野さんと同様にスパコン啓蒙なのだが、京のお膝元と仕分け人という立場の違いがある。私は金田先生がなぜ京にダメ出ししたのか、その背景にどんな問題提起があったのかしか興

    スパコンとは何か - Plan9日記
    yyamano
    yyamano 2012/11/13
  • カーネルモジュールだけをコンパイルする方法(Debian GNU/Linux) - Plan9日記

    なんかしばらくすると忘れていたのでメモを残しておく。 linux-source-2.6.32パッケージをインストールしておくと、/usr/src/linux-source-2.6.32.tar.bz2がインストールされる。これを展開して、カーネル全体ではなく、例えばKVMだけといった具合に必要なモジュールだけをコンパイルしたい。 # cd linux-source-2.6.32 # cp /boot/config-2.6.32-5-amd64 .config # make oldconfig # make modules_prepare # cp /lib/modules/`uname -r`/build/Modules.symvers .これで準備が完了。あとはKVMをコンパイルする。 # cd arch/x86/kvm # make -C /usr/src/linux-source-2

    カーネルモジュールだけをコンパイルする方法(Debian GNU/Linux) - Plan9日記
  • Cassandraソースコードリーディング その1 - Plan9日記

    Cassandraは言わずとしれたNoSQL型データベース。もともとFacebookで開発されたものが、Apacheに寄贈され、オープンソースプロジェクトとして今も開発が続けられている。Cassandraに関するドキュメントは山のようにあるので*1、ここから新しい情報は得られないと思うけど、個人メモとして残しておく。対象バージョンは1.0.9。 まず、gitからコードをもってくる。 $ git clone http://git-wip-us.apache.org/repos/asf/cassandra.git $ cd cassandra $ git checkout -b cassandra-1.0.9 cassandra-1.0.9 $ find . -name "*.java" | etags - 最初はCassandraデーモンの起動部分から追ってみる。 bin/cassandra

    Cassandraソースコードリーディング その1 - Plan9日記
    yyamano
    yyamano 2012/04/25
  • 「エラー忘却型コンピューティング」なんて言い出したのは誰だ! - Plan9日記

    正確にはFailure-oblivious computingを「エラー」忘却型コンピューティングって訳したのは誰だという話。訳す過程でfailureがerrorに入れ替わっている。情報系の人間は「名前重要!」とか言う割に、障害(fault)、異常(error)、故障(failure)という用語の定義、使い方に無自覚な人が少なくない。Twitterで意外と反応があったので、(自戒を込めて)書き起こしてみる。 Failure-oblivious computingは、2004年のOSDIでMITのMartin Rinardらが論文"Enhancing Server Availability and Security Through Failure-Oblivious Computing"で提案した技術。Cのような言語で不正ポインタ参照が発生しても、これを検出してなかったことにして(適当な値を

    「エラー忘却型コンピューティング」なんて言い出したのは誰だ! - Plan9日記
    yyamano
    yyamano 2012/04/25
    「障害(fault)によって、異常(error)や故障(failure)がおき、これが事故(accident)につながる。」
  • 「割込み」の名付け親 - Plan9日記

    前回、割込みの起源について触れたけど、もう少し深掘りしてみたいと思ったら、たまたま読んでいた高橋秀俊氏の伝記にPC-2の割込みの話が出てきたので、紹介しようと思う。 同氏は計算機屋からは計算機のパイオニアの一人だが、「物理の散歩道」シリーズで知られるロゲルギストの一人として記憶している人も多いだろう。計算機関係の業績としては、やはりパラメトロン計算機である。後藤英一氏の発明したパラメトロン素子を利用し、計算機PC-1、PC-2を開発した。当時の計算機屋ならば全員が読み、感銘を受けたというウィルクスの「The Preparation of Programs for an Electronic Digital Computer」を参考に、これらの計算機の命令セットはEDSACをベースに設計された。PC-1上で高橋氏が一番最初に書いたプログラムというのが「世界一周」で、先日、和田英一氏がブログに

    「割込み」の名付け親 - Plan9日記
    yyamano
    yyamano 2012/02/02
    割込みはもちろんInterruptの訳語として使われているが、もとはと言えば、高橋氏がInterruptとは独立して考え、名付けたのだそうな
  • LXC (Linux Containers) - Plan9日記

    最近、LinuxLXCで遊んでいる。Linux上にはVServerやOpenVZというコンテナ技術がすでに存在するのに、なぜLXCなのか。カーネル2.6.29でメインラインへのマージが完了しているので(残っているホットな話題の一つはチェックポイント・リスタートか)、カーネルパッチが不要になのと同時に、将来性がありそうだから。現時点で実戦投入するには、機能的に物足りないし、安定性も未知数だけど、時間誰かが解決してくれそうな気がする。と思っている割にはドキュメントが少ないのは、なぜだろう? コンテナ技術の肝は、コンテナ間の隔離、資源管理をどう実現するかにあるが、この点は名前空間の導入と、cgroup(control group)の利用で実現している。LXCの実装の経緯はよく知らないが(フランスのIBMの人たちが開発していたMetaClusterプロジェクトが基になったらしい)、名前空間の実装

    LXC (Linux Containers) - Plan9日記
    yyamano
    yyamano 2011/10/22
    コンテナ技術の肝は、コンテナ間の隔離、資源管理をどう実現するかにあるが、この点は名前空間の導入と、cgroup(control group)の利用で実現している。
  • デバイススイッチの実装 - Plan9日記

    第11回Lions勉強会にインスパイアされ、UNIX V6、V7そしてV1へさかのぼりつつ、カーネルとデバイスドライバの界面であるデバイススイッチの実装について考えてみた。 UNIXではデバイスもファイルとして見せた方が汎用的で便利ではということで、スペシャルファイルが導入された。その際、デバイスはその性格からブロックデバイス(bdev)とキャラクタデバイス(cdev)に分類された。bdevはディスクや磁気テープのように固定長(512バイトとか)のブロック単位で操作するデバイスである。通常はファイルシステムにマウントして利用されるデバイスで、性能向上のためバッファキャッシュを介してデータが読み書きされる。一方、cdevはTTYのように文字単位で操作するデバイスというのが元々の意味だが、構造を持たないもの、/dev/nullなどの擬似デバイスなどその他のデバイスが含まれるようになった*1。

    デバイススイッチの実装 - Plan9日記
    yyamano
    yyamano 2011/09/21
    bdevsw、cdevsw
  • 渕一博と仮想マシン - Plan9日記

    渕一博。というと「第五世代コンピュータ」を率いた人という印象しかなかったのだが、彼が若い頃(1969年)にACM SOSPで発表した論文「A Program Simulator By Partial Interpretation」を読んで驚いた。これはまさに仮想マシンである。これはもっと知られてよい業績なのではとエントリを書くことにした。 当時は電気試験所(電総研を経て、今の産総研)でETSS (Experimental Time Sharing System)と呼ばれたタイムシェアリングシステムの研究開発を行っていた。プロジェクトチームの立ち上げは1966年10月で、1968年5月には運用が始まっていたという。当時は国産のTSSは存在せず、ETSSの完成の数ヶ月前に阪大のTSS*1が動いたという状況だった。アメリカでは1964年に始まったMulticsのMACプロジェクトが佳境を迎えて

    渕一博と仮想マシン - Plan9日記
  • Multicsを振り返ってみたい - Plan9日記

    Coders at Workという業界の有名人に対するインタビュー集を読んでいるが、プログラミング寄りの切り口が面白い。さて、書のインタビューイの1人としてKen Thompsonが登場する。ベル研でProject MACに関わる以前の話から、現在Googleで何をやっているかという話まで触れられている。もちろんPlan 9の話題も(Linuxへの評価に関連して)出てきて、Plan 9のドライバを書くときは、Linuxのドライバを参考にしたと答えている。 ベル研のProject MAC撤退に伴い、kenとdmrらはMulticsの開発をやめ、そのアンチテーゼとしてUNIXを作り始めたというのは、歴史としてよく語られる。が、MulticsとUNIXの間の技術の連続性にもっと着目してもよいのではないだろうか。Multicsは技術的には非常に野心的な、怪物システムであったが*1、UNIXを設計

    Multicsを振り返ってみたい - Plan9日記
  • findとgrepの合わせ技 - Plan9日記

    カーネルなど大規模なソースコードを検索したい場合、findとgrepを使ったり、タグジャンプを使うだろう。Eclipse使う場合とか異論はあると思うけど、今日はfindとgrepの合わせ技について調べてみた。 普段はxargsを噛ませて、 $ find . -name \*.c | xargs grep hogehogeとかやるんだけど、findの-execオプションを使った場合とどれくらい性能差があるのだろうか? 評価環境はVMWare Fusion上のUbuntu 11.04。Linux kernel 2.6.28.10のfs以下で、まずは次の3パターンを比較してみた。3回測定してtimeの最良値を示す。おそらく対象ファイルはファイルキャッシュに載っている思う。 $ time find . -name \*.c -exec grep wait_event_interruptible {

    findとgrepの合わせ技 - Plan9日記
    yyamano
    yyamano 2011/05/12
    "-execオプションの最後に「+」と書くことでxargs同様の挙動になるようだ"。知らなかった。netbsd 4以降でサポートされてる。
  • fork/execモデルの起源 - Plan9日記

    UNIXを勉強すると、forkとexecが分離されていることに疑問を持ち、パイプやリダイレクトを使ってシェルを作り、その合理性に感動するというのが、お決まりのパターンになっているが、なぜこんな実装が生まれてきたのだろう。 WindowsのネイティブAPIであるNtCreateProcessや、その祖先とも言える*1VMSのsys$creprcは、意味的にはforkとexecが一体化されている。まぁ、こっちの方がプロセス生成という意味では自然なアプローチに感じられるが、sys$creprcの山のような引数を見ると、これを使ってプログラムを書く気は萎えてくる。input、output、errorって標準入出力のバインディングを変えるためだろうか。そうだとすると、UNIXモデルの方がシンプルで理に適っている。 fork、execはUNIX V1のころから存在するのだが、「The Evolutio

    fork/execモデルの起源 - Plan9日記
  • シグナルの誕生 - Plan9日記

    今日はシグナルの歴史を調べてみたいと思う。シグナルというのはUNIXにおけるプロセス間通信の一手段であるが、CPUにおける例外のように、プロセスにとって非同期に発生するものなので、その実装はいろいろ面倒くさい。したがっていろいろ問題もあり、長年の改良の歴史を経て、今のシグナルの仕様に落ち着いた*1。BSDやSVR、そしてPOSIX標準になるまでのシグナルの拡張については文献が多いが、V6/V7以前は知られていないのでは。ということで、私の出番w まぁ、わかったところで喜ぶのは相当な好事家だろうが*2。 いきなりV7以前の話を始めるのも何なので、前提知識として、FreeBSD版悪魔「4.7.1 シグナルの歴史」からちょっと長いけど引用する。 シグナルは、ユーザが暴走したプログラムを強制終了する場合など、例外的なイベントをモデルとして当初設計された。それは、汎用のプロセス間通信として使われる

    シグナルの誕生 - Plan9日記
    yyamano
    yyamano 2011/04/28
  • PDP-11のブートストラップ - Plan9日記

    年の瀬も押し迫った頃、なぜかPDP-11のブートストラップが気になってしまったので、simhとPDP-11のプロセッサハンドブックを見ながら、調べてみた。 今回は実機のイメージがあった方が理解しやすいと思い、Wikipediaから写真引用。これは2基のDECtapユニット(TU56)を装備したPDP-11/40である。TU56はブロックアドレッシング可能なテープで、144K 18 bit wordの記憶容量を持っていた。ブロックサイズは256 18 bit word。余談だが、TU11という9トラックのテープユニットもあった。こちらはPCの外部記憶媒体にカセットテープを使っていた頃を思い出すなぁ。また、この頃のハードディスクはプラッタとヘッダが分離されていて、プラッタのみを取り替えることができた。これがDECpack(RK05)で、ヘッダがある方のコントローラはRK11と呼ばれた。容量は2

    PDP-11のブートストラップ - Plan9日記
    yyamano
    yyamano 2010/12/28
  • pre K&R Cコンパイラ - Plan9日記

    UNIX V6のソースコードを読むときにネックになるものの一つがK&R以前のC言語の仕様である。これをpre K&Rと呼ぶ。マニュアル(「C Reference Manual」)も存在するので、興味のある人はどうぞ。ちなみにUNIX V7では、後にも触れるポータブルCコンパイラを使って書き直された。LionsがV7ベースだったらもっと読みやすかったのにね。 と言っても仕方ないので、pre K&Rの世界に飛び込んでみよう。さっそくコードを見ていく。まずはmalloc、mfreeで空き領域管理に使われてる構造体mapの定義とその実体である。 0141 #define CMAPSIZ 100 0142 #define SMAPSIZ 100 0203 int coremap[CMAPSIZ]; 0204 int swapmap[SMAPSIZ]; 2515 struct map 2516 {

    pre K&R Cコンパイラ - Plan9日記
    yyamano
    yyamano 2010/11/07
    pre K&R Cコンパイラ
  • Kerberos - Plan9日記

    直接Plan 9に関係する話題じゃないけど、Plan 9の認証でも基盤になる技術なのでKerberosについて少し調べてみた。 KerberosはMITで開発された認証方式で、WindowsMac OS Xなどでも使われている。Kerberosという用語はプロトコルだけでなくサービスやソフトウェアもろもろを含んでいるらしいのだが、ここではKerberosの認証プロトコルに着目したい。Plan 9のp9sk1共有鍵プロトコルはKerberosプロトコルを参考に作られている。 Kerberosは共通秘密鍵を使って認証を行う。一般的に秘密鍵を用いる場合、ホスト数に対するスケーラビリティと鍵の安全な交換が問題となる。そこで信頼できる第三者機関である鍵配信センター(KDC: Key Distribution Center)がすべての鍵をデータベースで集中管理し、セッション毎に一時的な秘密鍵であるセ

    Kerberos - Plan9日記