スクリーンショット (423)

[2020-06-06 13:30]

オープニング @satoru_takeuchi

  • 時間どおりスタート
    • ぐだる配信が多いなか、時間どおりにトラブルなく始まるのはすごい
  • zoomからyoutube liveの遅延が1分ほどあるのでリアルタイムはむり
  • 質問はtwitterでうけつけて、発表がおわったあとに回答する形式で

[2020-06-06 13:32]

Network Boot from Bell Labs / @retraga

  • 資料
  • 動画
  • pxe(ピクシー) boot, http bootの2つがある。
  • pxeはtftpサーバが必要
  • http bootはuefi2.5からサポート
  • httpsもつかえる
  • UEFIで3行で書ける。
  • UEFIでモジュールはプロトコルとよばれる。ネットワークのプロトコルとは関係ない。
  • simple file system protocolはデフォルトではFATしか対応してない。
  • rootkit: rkloader, LoJax はNTFSをあつかえる。
  • ネットワークFSがつかえるとうれしい。
  • そこで9P (Plan 9 File Protocol)
  • 9Pはつかわれている: v9fs, virtio-9p, WSL2
  • 世の中は9Pの支配下にある!
  • UEFIドライバ: 9pfsPkgをつくっている。
  • それだけだとおもしろみがない。
  • proxy bootをつくってみた: GCS(google cloud platform storage)のバケットをあつかえる。
  • gcsfuseをつかった。
  • bitvirorをロードできた。
  • あくまでもローカルファイルシステムにみえている。

[2020-06-06 13:58]

  • 質問なし
  • root fsは

[2020-06-06 13:58]

ipftrace: A Linux Function Tracer for Network People / @YutaroHayakawa

  • 資料
  • linuxのネットワーク機能のデバッグツール
  • 関数コールトレーサー
  • パケットの処理をトレースできる。
  • timestamp, cpu id, funcname, user defined data
  • ネットワーク機能はソースコードをよんでもわかることがすくない。
  • systemtap, bpftraceは手がかりがない状態だとトレースする対象を絞りにくい。
  • ftraceは楽につかえるが特定のドメインだけのトレースがとれない。
  • TCP 80版のパケットだけトレースをとりたい。
  • 関数トレーサ + パケット処理だけ + パケット単位で + スクリプトが書ける
  • sk_bufを引数にとる関数をすべてフックして
  • sk_bufにマークがついていたらログをだす。
  • DWARF or BTFで一覧を得る。
  • kprobeでフックしてeBPFをさしこんでperf_eventでログをだす。
  • マークはskb->markがあり自由につかえる。netnsをまたぐと消える(コンテナ内のトレースにつかえる)。
  • Luaで拡張を書ける: emit()->追加のデータをあつめるeBPFのバイトコードを吐く, dump()->文字列にする。
  • sk_bufは安定した構造体ではない問題: デバッグ情報をLuaから参照できる: iptf.offsetof,sizeof,typeof.
  • SRv6のデバッグにつかえた。

[2020-06-06 14:18]

  • Q: メモリが再利用されてskbアドレスがぶつかったら?
  • A: キャッシュのヒット率上げるために再利用するのでこまる。人間がみればわかるが。

[2020-06-06 14:21]

[2020-06-06 14:22]

コンテナ目線で考えるmicroVMとunikernelな構成の話 / @_inductor_

  • 資料
  • コンテナとは雑に言えばすごいchroot
  • dcokerがはやったのはdockerfileと配布技術がつかい勝手がよかった
  • runC: イメージを展開するおしごと
  • runCに特権が必要だけど避けたい→MicroVM(Firecracker:Rust製 by Amazon)
  • ホストOSをいじるかわりにVMをたてちゃう。
  • AWSではFargate。
  • リソース割当が柔軟
  • VMレイヤの起動オーバヘッドになる。
  • Unikernel: ライブラリOS
  • カーネルのレイヤをうすくする
  • IBM Nabla Containersでつかわれている。
  • 既存のdocker imageがつかえないので専用のイメージをつかう。
  • runnc -> hostos - SoloS - libOS - app
  • 環境を分離せずプロセスとしてつくられるので早い
  • 不要なカーネル機能をふくまないのでホストOSとの接点がすくない
  • gVisor: ...
  • kata container: コンテナがvmのうえでうごく
  • 結論: 課題がなければdockerでいいんじゃない?

[2020-06-06 14:44]

10分休憩

  • 表示されてる時計と比べると遅延は35秒くらいか。
  • 早送り再生するとライブにおいつけるらしい。しらんかった。

[2020-06-06 14:55]

俺の仮想マシンルーターがこんなに遅いはずはない / @tnishinaga

  • 資料: 未公開
  • トラブルで前録り動画を再生
  • 在宅ワークがふええてPPPoE IPv4がおそい、DS-Lite(v4 over v6)も速くない。ルータの性能限界。
  • devianをいれてKVM上で構築。
  • 速度低下は問題ないと予想していたが、そうでもなかった。
  • 物理ホスト上:
    • iperでNICスループットを測ったが問題なかった。
    • ブリッジでも問題なし。
    • パケットフォワードも問題なし。
    • ipip6 tunnelも問題なし。
  • VM上:
    • 6割程度の性能しか出てない。
    • 結論: 物理マシンをつかうのがよい。

[2020-06-06 15:19]

  • Q: 市販のルーターとLIVA Zとでランニングコストはどうちがう?
  • A: 測ってないけどファンレスなのでそんなに違わないのでは?
  • Q: VMにちょくせつPCIさわらせたら?
  • A: PCIeパススルーはいけそう、SRIOVは対応してなさそう(realtekなので)。

[2020-06-06 15:20]

[2020-06-06 15:21]

Architecture Overview of Fuchsia OS / @kurun_pan

  • 資料
  • フューシャ
  • Flutter: 言語Dartで UIフレームワーク。
  • Fuchsia: googleのOS。 Google Nest Hubでつかわれてるらしい。カーネルはZiron(linuxとはちがう)
  • far: Fushia archive
  • 各アプリはURLをもつ manifestあり
  • アプリはsandboxで実行される capabilityはmanifestに書く
  • FIDL(Fuchsial IDL): gRPCみたいなもの IPC用
  • Zircconはマイクロカーネルではない(モノリシック)。POSIX非互換だがlibcはある。fork,pthread一部はない。
  • Zirconにはhypervisorがはいっている。linux KVMにちかいかんじ。linux runnnerがあり動かしてみたが例外でおちてしまった。

[2020-06-06 15:33]

[2020-06-06 15:33]

RISCVマイコン情報アップデートと Tang FPGA試用メモ / @takeoka

  • 資料
  • RISC-Vが焼かれている 日本で2600円くらい
  • キャッシュはないが ITCM,DTCM (SRAM)がある。
  • ESP32はicacheぽいがlongjmpできない(大変残念)
  • PDP-11 セグメントをまたぐサブルーチン呼び出しはセグメントローダ経由が必要
  • IDEは中華製 あやしくはなさそうだが 念のためにVMでうごかした。

[2020-06-06 15:48]

[2020-06-06 15:49]

BCCをRubyからも使えるようにした話 / @udzura

  • 資料
  • eBPF
  • gdb,straceはptraceでシステムコールをおいかけるがプログラムが一瞬止まるのでパフォーマンス影響がある。本番環境ではつかいにくい。
  • perfは中間 ユーザランドの負荷が高まる。
  • bpftraceは副作用がすくない。
  • BCC: BPF Compiler Collection. Python,LuaのFFI経由でバインディングを用意している。
  • Rubyでもつかえるようにした。
  • BPFQL: SQLライクにトレースポイントを指定できる

[2020-06-06 16:03]

休憩10分

[2020-06-06 16:15]

HVFの中身 / @Mach0xFF

  • 資料
  • hypervisor framework
  • apple製hypervisor
  • kextをくみこんだ形 prelinkedkernel
  • kext: kernel module
  • XNU
  • machdepでマシン非依存のシステムコール

[2020-06-06 16:30]

  • "0x"を「ゼロエックス」じゃなくて「オーエックス」といってるとおもったら「Nought-X」だとのこと。

[2020-06-06 16:30]

Falling down from FreeBSD / @yamori813

  • 資料
  • FreeBSDは16MBのRAMと4MBのflashがあれば動くらしい。
  • YABM: mrubyをベアメタルで動くようにした。 yet another bare metal
  • ARMはMMUサポートないと35倍くらい遅いので(0を0にマッピングするのしかしてない)

[2020-06-06 16:41]

[2020-06-06 16:41]

HSEとは何か / @fadis_

  • 資料
  • 動画
  • heterogeneous-memory storage engine
  • KV store
  • ストレージエンジンはトランザクションを提供する
  • ファイルシステムとストレージエンジンの両方で構造化ログをもつ構造
  • FTL(flash translation layer)でも構造化ログ相当のものがある。
  • ログ構造化ファイルシステムはflashメモリにやさしい。
  • F2FSはログ構造化ファイルシステムを採用。
  • Don't Stack your Log on My Long: 構造化ログのつみかさねが性能低下
  • メタデータが各層で追加されていくため。
  • ブロックサイズが一致しない可能性。
  • TRIMしてない
  • 上のGCが下に負荷をあたえる
  • 酷いケースで書き込みが2倍にふえる。
  • mpool: ファイルシステムに似ているがVFSを提供しないカーネルモジュール。
  • mpoolはblock_idでアクセス 要アライン
  • mlogはobject_idでアクセス メモリはアラインしてなくてよい
  • mdc: gcできるmlog mlog2本使用 (copy gc?)
  • mcache: 上のレイヤがつかえるキャッシュ
  • kvdb:
  • 古典的SSD,zoned namespace(100MBオーダーのブロックでFTLの仕事を減らす),
  • dm-zonedが4KiBページをみせるもがある。

[2020-06-06 17:05]

  • Q: mpoolのアラインメントは自動?
  • A: 作成時にSSDのブロックサイズを指定する。(SSDがブロックサイズを公表してるのが前提)

[2020-06-06 17:07]

クロージング

[2020-06-06 17:08]

あたまおかしい発表があると観衆からおぉ〜って声があがるのがkernelvmのライブだが、オンラインだとその反応がtwitterだけなのがちょっとさみしい。