タグ

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

  • 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日記
  • はじめてのOSコードリーディング - Plan9日記

    Lions' Commentary on UNIX 読書会で親交のあった@superhogeさんが「はじめてのOSコードリーディング」を上梓される(「はじめてのOSコードリーディング」というを出版します)。読書会の活動が書籍として結晶したことに感動するし、自分が生まれた頃のソースコードの解説が今出版されるというのも感慨深い。 OSに限らず技術には理論と実践の両面がある。UNIX V6やLionsが出た頃は、OSの黎明期であり、その理論については論文などで知ることができたけど、実際にどのように作られているのか、その方法についての情報は手に入らなかった。そこにLionsが受け入れられた背景がある。翻って現在は、実践的な情報が氾濫している。で、どこから初めていいのかわからず思考停止に陥ってしまいがち。まず簡単なところ(しかし、トイOSではなく実用に耐える(た)OS)から一歩踏み出してみよ

    はじめてのOSコードリーディング - Plan9日記
  • パケットキャプチャの実装方法 - Plan9日記

    ネットワークアプリケーションの解析やデバッグなどにパケットキャプチャ(もしくはスニファ)は必須の機能で、UNIXであればtcpdump、snoop、wireshark*1、Plan 9であればsnoopyなどが存在する。パケットを横から盗み見するために、OSごとにいろんなアプローチを取っている。ある機能をどのように実装するかで、そのOSの設計哲学が透けて見えてくるかもしれない。ということで、今日はパケットキャプチャの実装方法について調べてみたい。 libpcap tcpdumpのパケットキャプチャ処理はlibpcapとして独立したライブラリになっていて、OS依存部分を隠蔽している。例えば、BSD系UNIXはBPF(Berkeley Packet Filter)、LinuxはPF_PACKETを利用してパケットキャプチャを実現している。より正確にはBPFはキャプチャとフィルタリングするのに対

    パケットキャプチャの実装方法 - Plan9日記
  • クラウドOS - Plan9日記

    Google Moderatorには、Googleエンジニアが質問に答えるAsk a Google engineerというページがある。ここでLinuxのAndrew MortonやPythonGuido van Rossumと一緒に、UNIXやPlan9の開発者として有名なKen Thompsonが質問に答えている。将来のOS像についても軽く触れていて興味深い。詳細は実際に目を通してもらいたいが、いくつか抜き出してみる。 まずは、時間をさかのぼることができたらUNIXの何を直したいかという質問から。creat「e」とお約束の答えをした後に、 ポータビリティ イーサネットとIPよりもよい通信 プロセスごとの名前空間 ファイルシステムへのリモートアクセスプロトコル を挙げている。1、3、4はPlan9で実現されている。2はどんなものを想定しているんだろう?Plan9にもILがあったが、成

    クラウドOS - Plan9日記
  • libtaskとPthreadの比較 - Plan9日記

    Russ Coxさんが作ったコルーチンライブラリlibtaskを試してみた。雰囲気はPlan9のlibthreadによく似ている。対応している環境は、Linux (ARM and x86)、FreeBSD (x86)、OS X (PowerPC and x86)、SunOS Solaris (Sparc)とのことだ。 コルーチンはプログラマが明示的にタスクの切り替えを記述する必要があり(プリエンプトされない)、スレッドとはモデルが違うが、より軽量な仕組みである。Pthreadは通常ユーザスレッドとカーネルスレッドが1:1に対応付けられるのに対して、コルーチンは完全にユーザレベルでの実装であり、1つのカーネルスレッド上で動く。どれくらい性能が違うのかなと思い、まずpthread_createとtaskcreateを比較するベンチマークを書いてみた。1〜1000個のスレッド(タスク)を生成する

    libtaskとPthreadの比較 - Plan9日記
  • LXC (Linux Containers) - Plan9日記

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

    LXC (Linux Containers) - Plan9日記
  • 1