meta-something

論文とか研究とか趣味のネタとか

備忘録「Googleが数千台もある10年前のLinuxディストリをライブアップグレードした話」

ラボの計算機がちょろっと古いLinuxOSで「dockerを入れようにもまずカーネルアップグレードの必要があって、そもそもOSのアップグレードは何処で断ち切れていて、じゃあ何処のノードなら依存関係なくて安全で…」という問題の根本原因を調査していたとき、以前Twitterのタイムラインで「Googleが数千台もある10年前のLinuxディストリをライブアップグレードした話」みたいなツイートを見かけたことを思い出した。
で、元ツイートは見つからなかったけれど、元論文を引用していると思われるはてなブログを見つけた。

blog.yuuk.io

元論文はこれ

MERLIN, M. Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One. In Proceedings of the 27th conference on Large Installation System Administration (LISA) (2013), pp. 105–114

web公開のPDF原稿

Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One | USENIX

書いた本人のスライドっぽいもの

http://marc.merlins.org/linux/talks/ProdNG-LC2013-JP/html/


紹介した記事が本当に詳細に説明してくれているので、ここでは述べない。ざっくり概要は

  • GoogleでもRedHat7.1に独自パッチを重ねて10年間運用していて
  • root領域の変更がアプリケーションに影響しないようにやり繰りしていたが流石に負の遺産が限界になり
  • DebianベースのProdNGという新しいディストリビューションに移行するときの作業

なのだけれど

Googleの本番Linuxカーネルデバイスドライバ、ユーザスペース、アプリケーションの3レイヤで管理されている。 カーネルデバイスドライバディストリビューションからは切り離されていて、頻繁に更新される。 このレイヤは別のチームがメンテナンスしており、今回の話には関係がない。

kernel更新はまた別のチームと書いてある。 原文では

Google’s production Linux OS is managed in three layers. The kernel and device drivers, user-space, and the running applications. The kernel and device drivers are updated frequently and separately from the operating system. These files are maintained, fleet-wide, by a different team. Aside from obvious touch points, this maintenance is unrelated to the work described in this paper.

kernelのライブアップグレードって普通ミッションクリティカルとかの分野ではどうやっているんだろう…?

Docker + MPIとかHPCとか

調べてたら2012年頃からIBM内部の公開議論板?みたいなのが引っかかったりしてた。

脳の中の幽霊

人間というハードウェアと、意識というソフトウェアについて考える時に、いつもこの本を引用したくなる。

脳のなかの幽霊 (角川文庫)

脳のなかの幽霊 (角川文庫)

なるのだが、しばしば忘れてしまい、上手く引用できずにもどかしさを感じることが度々ある(N度目)。このため、昔、某大学で学部生の頃に(調子に乗った語り口で)書いた感想のようなものを引用しておく。

ちなみに、感想を読み直しているとどうにも疑心な感じは拭えないので、現在の私の認識とはちょっと違うようだ。この頃の自分は素直でいいなぁ。と、思いながらもう1度読むためにAmazonで購入した。


本に出会った経緯

(略)… レポートを書くために何か一冊の本を読まなければならないということだったので,錯視に関する話を扱っている本を探していたところ,講義で紹介されていた『脳の中の幽霊』(英題:PHANTOMS IN THE BRAIN,著:V・S・ラマチャンドラン,サンドラ・ブレイクスリー,訳:山下篤子,出版:角川書店)を読む機会を得て,驚いた.読み始めた当初はとにかく錯視に関係する話に注目しようと考えていたのだが,本に書かれていた実験記録があまりにも衝撃的で,私の心と身体(脳)に対する認識がすっかり覆ってしまった.

幻肢痛について

まず,ないはずのものをあると認識してしまう例として,幻肢がある.幻肢とは,何らかの理由で手足など体の一部を切断した患者が,実際にはそこに何もないにも関わらず,例えば手が見える,動かせると言い,明確な痛みさえ感じるという話である.患者は自分に手がないことは理性として認識しているが,幻想として見える手に悩まされる.本では,この症状を持つ患者の原因の一例として,手からの感覚を伝達する脳の経路が別の器官からの感覚を受け取るように誤って結線してしまったため,本来フィードバックがなく手がないことに気付くはずの脳が「手がない」という事実に気付かない場合があると紹介している.それどころか,誤って結線した先の器官からの感覚がある(例えば顏の左頬を触る)と,無いはずの腕が触られている感覚を受けることもある.

つまり,自分が考える身体のイメージと身体が把握している身体イメージに大きなギャップが生まれることがあるということだ.この実例も十分に驚くべきことではあるが,これは講義で触れられていたような内容であった.それに,自分で体を動かそうとしても自分の思う通りに動かないとか,自分の身体イメージに身体が同調しないということはしばしばあることであり,まだ私の認識として許容できる範囲のものであった.

半側空間無視

次はあるはずのものをないと認識しまう例で,半側空間無視というものである.これは右脳の頭頂葉に卒中が起こると発生することがある状態で,自分の正面から左半分の空間にあるものを全く無視する.例えば,鏡を見ながら朝の支度をすると,顔の右半分だけ化粧をして,服には右袖だけ通す.そして朝食は自分の右半分に置いてあるものだけ食べる.つまり,自分の左側にあるものに注意を向けることができない.これは頭頂葉が空間的配置の識別や対象物に手を伸ばしたりする機能に関与しているためであり,この機能について左脳の頭頂葉は体から右側,右脳の頭頂葉は全体に対して役割を持っているため,右脳の頭頂葉に卒中が起こると半側空間無視になるのである.

そして,私が常識を打ち破られたと感じたのが,半側空間無視の状態にある患者に対して行った次の実験である.まず,半側空間無視の患者の認識できる側,つまり右側の手前に鏡を持って立ち,患者の左側の状態を見せる.こうすることで,患者はそれまで無視していた左側の状態について右側の鏡で確認できる.そして,その状態で患者の左側のものに対して動作を行うように指示を出す.著者はこれで患者が鏡を使うことで自身の左側に注意を払ってその異常に気付き,リハビリを行う手助けにならないかと考えたのだが,結果は違った.患者の左側にペンを持った学生を立たせて,鏡で患者にその様子を見せる.次に著者がそのペンを取るようにと患者に指示すると,なんと患者は鏡に向かって躊躇うことなく手を伸ばして,鏡を叩いたり引っ掻いたりと何分も格闘したり,鏡の裏にペンがあるのではないかと探ったりしたのだ.念のために述べておくが,患者は十分な年齢を重ねて十分な知性を備えた大人であり,目の前にあるそれが鏡であることは認識していた.それにも関わらず,鏡の中に映ったペンに手を伸ばし続けた.

私はこの実験の結果を知って愕然とした.十分な知性を持つ大人が,鏡がどんなものであるかを知っているにも関わらず,それが自身の左側に位置するということを認識できないだけで「鏡は物を映し出すだけであり,物体はそこにはない.」という自分自身の常識を容易く破ったのだ.私は一種の恐怖感さえ抱いた.私は,もし完全に理性的に心をコントロールできる人間がいるとすれば,その人は何の誘惑にも屈せず,例えば麻薬などの禁断症状に陥ったとしても鋼の精神があれば耐え切ることができるのだろうと,何処かで人間の理性の強さのようなものを信じていたのかもしれない.しかし,実際は人間がいくら理性的であろうとしても,仮に右脳の頭頂葉に卒中が発生して半側無視の状態になって同じことをした場合,恐らく何の疑問も抱かずに鏡の中に手を伸ばすのだ.自分自身が長年信じてきた常識すらも「私が認識できないから,きっとそこ(左側)にはないのだろう.ならば鏡の中にあるに違いない.」という脳の中で発生した勝手な推論によって塗り替えられて.我々は自分の身体のことは自分がよく知っているというように,心は身体をコントロールしているというようなイメージを持っているが,この例では身体の反応が我々の心を侵食したとも言えるのではないだろうか.

疾病失認

更に,別の章ではこのような患者も紹介された.疾病失認という状態である.これは例えば自身の腕が麻痺していても,そのことに気付かない.そしてそれを指摘しても麻痺しているという事実を認めず,あらゆる理由をつけて嘘を吐く.自分の肩に動かない腕がついている事実があるにも関わらず「これは兄の腕だから動かせなくて当然だ.」と証言する.これは現実逃避のように思えるが,そうではない.嘘を吐くのは彼らではなく,彼らの身体が彼ら自身に対して嘘を吐いている(誤認させている).

また,実はある一時的な治療法として短時間だけ否認を抑制する方法があり,その治療法を実行することで患者は短時間だけ本来の右脳の働きを取り戻し,自身の左腕が麻痺している事実を認めることができるという話もあった.しかし,数時間後に再び同じ患者を訪れると,先程に麻痺を認めた記憶をすっかり忘れるどころか「さっき腕は動いたと言いましたか.」という質問に対して「もちろん大丈夫だ(麻痺していない)と言いましたよ.」と答えた.

私はこれも恐ろしくて仕方がなかった.以前の自分自身の発言や行動を,あとになってから都合のいいように解釈することは多々あるだろう.しかし,ほんの数時間前の出来事を全く正反対の内容に正当化して,そのことに一切の違和感を覚えないのは果たして精神が持続していると言えるのだろうか.このことは,先の半側空間無視などとは比べ物にならないほど,身体によって心,というよりは自分の意識や自己というようなものが浸食されているように私には感じられる.

私はこの本の幾つかの実験を読み,自分の身体イメージが実際の身体と合わないのは勿論,実際の身体からの信号によって,私の意識というものすら知らずのうちに変容してしまうということを知った.私は感情や心というものは結局のところ脳の電気信号だと,頭では理解しているつもりだったが,実際の私の認識はそうではなかったのだ.心は身体の上位存在であるというようなことを,頭の何処か(本当に何処なのだろう)で信じていたのだ.

認識の話

視覚においては,人間は意識して何かを見ているつもりはなくても勝手にものを見ている.ものが何であるかを認識できなくても物を掴んだり指さしたり,あまつさえ目が見えないのにポストの細長い穴に封筒を入れると言う高度な動作を行うことができる.つまり,物を「見る」という行為の中で物の位置関係などの空間を認識するという能力について言えば,我々は意識的に見えていなくても目が取得した情報から無意識に行動を起こせるのである.我々が感じている意識というものは,我々の身体が行っている数多くの認識のほんの一握りに過ぎないと言えるだろう.

著者は無意識に行われている認識について,人の中にゾンビが居ると比喩して居るが,言い得て妙である.それでは私たちのゾンビでない部分というのはどのくらいあるのだろうか.私が本当に頭の中で「意識」して考えて実行していることはそれほど多くないような気はする.いや,そもそも意識の定義とは何であろうか.

読後の話

改めて考えてみると,我々の思考は結局のところ脳の中にある特定の機能を呼び出すという,プログラムで言えば関数呼び出しのようなものの気もする.しかし,それは正に脳の中で伝わる神経信号である.では,結局その信号を操っているのは何なのだろう. 本でも触れられていたが「脳の中に小人がいる」という結論は話にならない.それは映画「メン・イン・ブラック」で人間だと思っていた人の頭の中に操縦席があって,実は宇宙人が操作していた.というものと同類のファンタジーである.しかし,我々が心と読んでいるそれは,実はこの「脳の中の小人」に近いのではないだろうか.

この本は正に世紀末の1999年7月に出版されたものであり,著者は21世紀の最初の半世紀は脳科学にとって飛躍的な進歩の年になるだろうと言っていた.今はその1/5が既に経過したことになるが,果たしてどう進歩したのだろうか.その道には疎いので私にはわからない.しかし,まだまだ途方もない時間がかかるとは思うが,もし仮に脳科学によって脳の構成要素が全て明らかになった時がきたのなら,その時には今でいう「心」という概念は存在するのだろうか.心をどう定義するかによるだろうが,今の私は,全てが明らかになった時には「心」は存在しなくなるだろうと考えている.


黒歴史を公開していく。

並列分散処理・プログラミングモデルのあれこれ

以下のURLを読んでいて気になった論文をピックアップ

techblog.yahoo.co.jp


MapReduce: Simplified Data Processing on Large Clusters

Hive - A Warehousing Solution Over a Map-Reduce Framework

  • http://www.vldb.org/pvldb/2/vldb09-938.pdf
  • Facebook

    2009年のHive[12]では、操作言語としてSQLライクなHiveQLが提供されています。HiveもHadoop上に構築され、HiveQLによる操作は、Hiveコンパイラにより複数のMapReduce処理に展開されます。HiveQLはパース後に論理演算ツリーに変換され、最終的には物理的な処理モデルである複数のMapReduceから構成される有向非循環グラフとして展開されます。

Large-scale Incremental Processing Using Distributed Transactions and Notifications

Presto

  • Facebook prestodb.io

    2013年のPresto[32]では、リアルタイムの大規模データ分析はMapReduceベースのHive[12]から刷新されました。Prestoは標準SQLへの準拠を目指して抽象化されたシステムで、F1と同様にSQLの最適化は有向非循環グラフのパイプラインに展開され実行されます。 2013年のPresto[32]の場合には、参照透過性は保ちつつも、従来はファイルに出力してた中間結果のデータをメモリ上に保持することにより、タスク間のデータの引き渡しをインメモリで実行することで処理の高速化を実現しています。

Pig Latin: A Not-So-Foreign Language for Data Processing

Apache Hadoop YARN: Yet Another Resource Negotiator

Large-scale cluster management at Google with Borg

テンプレート参考元

論文のまとめテンプレート(http://metavariable.hatenablog.com/entry/2016/09/26/113737)は以下の記事を参考にしています。

lafrenze.hatenablog.com

このまとめ方の元ネタは筑波大学の落合先生

www.slideshare.net

テンプレに沿うのだるいので、やらない可能性もたかし。

テンプレート

  • 掲載情報
    • hoge, "hogehoge", Vol.x, No.x p.x, xxxx.
  • PDF原稿など、原文リンク

どんなもの?

先行研究と比べてどこがすごい?

技術や手法のキモはどこ?

どうやって有効だと検証した?

議論はある?

次に読むべき論文は?


補足情報、参考文献など