記事検索
月別アーカイブ
アクセスカウンター

    タグ絞り込み検索

    sw

    2020年10月10日19:25Gfarmシンポジウム2020

    IMG_20201009_130100IMG_20201009_130123

    • 案内
    • 参加登録
    • 日時: 2020-10-09 13:30〜
    • 場所: AP秋葉原 O+Pルーム (1F)
    • オンラインはWebex
    • togetter
    • (録画と資料は公開されるはず)

    オンラインとライブの両方で開催。久しぶりに外に行きたい気分だったのでライブ会場の秋葉原へ。台風14号(チャンホン)接近中で一日中雨。

    [2020-10-09 13:29]

    • 司会: HPCソリューションズ 河野
    • 参加者: 秋葉原15名、オンライン15名

    [2020-10-09 13:30]

    Gfarmファイルシステムの最新機能
    筑波大学 建部 修見

    • ワークショップは2月に別府で開催。おなじくライブとオンラインのミックスで。
    • オーストラリアではLibre Solutions
    • 開発を始めてから20周年 2000年6月スタート 電総研と高エネ研のGRIDミーティングから
    • MTセーフ: 暗号化(EncFS)をサポートするのに必要だった
    • read only機能: zabbixでフェイルオーバするときにスプリットブレインを避けるためにメタデータがちゃんとつたわってるのをたしかになるまでread onlyにする。
    • githubに移行した(なかなかたいへんだった)
    • MPIでバーストバッファがつかえるようにもなっている(IBがつかえない環境もあるので) MPI-IOで高速化
    • gfarm2.8ではIPv6,S3,TLSがサポートされる予定。
    • (例年は建部さんの話が長いけど今年はずいぶん早くおわった)

    [2020-10-09 13:43]

    スーパーコンピュータ「不老」
    〜大規模コールドストレージ導入によるデータサイエンス支援を指向したスパコン〜
    名古屋大学情報基盤センター 片桐 孝洋

    • 「不老」2020-07-01正式運用開始
      • type1: 富岳の同型機をつかっている
      • type2: GPU型
      • type3: 大規模共有メモリ
      • 6PBの光ディスク コールドストレージ(ソニー) 100年保存
      • 湧き水でエコ冷却
    • 特徴アプリ: 台風と医用画像につよい先生がいるので
    • デジタルサイエンス
    • 名古屋大学は伝統的に富士通製
    • 5年サイクルでリプレイスしている
    • 国策スパコンとPCスパコンの二本建
    • コールドストレージ: 10PBまでキャパがあるけど4PBはユーザ持ち込みのためにあけてある。
    • 最大消費電力: 1.9MW
    • 湧き水: 夏でも18℃ 30リットル/分 ポンプで吸い上げて雨水としてすてていたのを冷熱源として利用
    • 2〜3℃さがる。
    • どのくらい効果があるかは計測中。2〜300万やすくなるはず。
    • 夏場の昼のピーク電力カットのためジョブの実行を抑制 12時間キューを用意して実装
    • でも今年はコロナで人が来てないので電力は逼迫しなかった
    • type1は富岳の1/70の規模
    • type2: nvidia V100、ssdもたっぷり、機械学習向き
    • type3: プリ処理(メッシュきったり)、ポスト処理(可視化)など
      • ストレージを共有しているのでポスト処理でデータの移動は必要ない
    • クラウドシステム: よくつかわれている(稼働率8割くらい)
    • ホットストレージ: HDD RAID 30PB 384GB/s
    • コールドストレージ: xxx
    • フロントエンド: ログインノード以外の利用も想定
    • 料金は前払い 優先キューはポイント2倍でつかえる
    • IORベンチマーク: /data/group1は一般、group2は大規模向け
    • 独自ベンチ: github/exthnet/iotest type2のlocal SSDがおもったより速くない type1のホットストレージがおそい
    • 気象 坪木先生
    • 医用 森先生
    • コールドストレージ操作ツール ODAPLUS
    • COVID19用: AIでCTで肺を正常か炎症かセグメント分け
    • 臓器のサンプルはあまりないので2つの臓器データ間を連続的に変形させて学習データにする
    • シミュレーションせずに機械学習で気象予想 相馬先生
    • コールドストレージ
      • ホットストレージ→コールドストレージはアーカイブ、 逆はリコール
      • 利用者支援室からホットストレージにデータ転送 計算結果をホット→コールドに転送
      • コールドストレージに直接光ディスクをつっこむのもあり
      • fibrechannelでフロントエンドにつながっている???
      • 光ディスクはwrite once
      • ドライブユニットは5しかないのでバッチで処理
      • 小さいファイルは固めて大きなファイルにしないと性能がでない
      • ディスクはセンターで買ってユーザが利用申請(早い者勝ち;ふつうに買うより安い) 利用終了したらカートリッジがもらえる

    [2020-10-09 14:35]

    [2020-10-09 14:36]

    Prometheus ではじめる Gfarm サービス監視
    — HPCI共用ストレージの1000日無停止連続稼働を強力にサポート —
    理化学研究所 金山 秀智、芝野 千尋、原田 浩
    東京大学 小瀬田 勇

    • 無停止でアップデート、2拠点間でデータ二重化、これにより連続運用ができるようになった。
    • gfarm zabbixプラグイン
      • アラートチェック
      • postgreSQL死活監視
      • データ完全性チェック
      • 設定情報の監視
    • 稼働率とデータ保護の両方を重視している
    • 現状: アラート検知→チケット起票→障害レベル判定→障害対応・緊急連絡・ユーザアナウンス
    • これを自動化したい
    • 監視ソフト: Prometheus、ダッシュボード: Grafana
    • ディレクトリ数、シンボリックリンク数、レプリカ数はコマンドで取得できないのでメタデータを直接参照
    • ユーザが利用してないときの障害は利用率にいれてない、タイムアウトも稼働率にいれてない、これはユーザ向けでない。
    • shibbolethの認証情報をつかってユーザ向のgrafanaを表示できないか。

    [2020-10-09 15:08]

    休憩

    IMG_20201009_151951

    [2020-10-09 15:30]

    IO500 #1 DAOSアップデート
    インテル株式会社 石橋 史康

    • DAOS デイオス
    • IO500で1位
    • Optane(オプテーン) Persistent Memoryが前提
    • dramとssdの中間的存在
      • dramとちがって永続性がある
      • ssdとちがってbyte addressingが可能
    • daosではup direct modeをつかっている (memoryモードではない)
    • posixとblockの問題を解決する
    • posixで書くときにブロックサイズにあっているわけではない
    • ブロックに複数のファイルが混ざるとロック待ちになる問題。

    [2020-10-09 15:40]

    webex調子わるい

    • バイトアドレッシング可能なので問題回避できる。
    • DAOSはlustreでつくっていた
    • バイトアドレッシングできる永続メモリをベースにアーキテクチャをつくりなおし
    • ふつうのファイルシステムというよりはオブジェクトストレージ
    • ちいさいデータ・メタデータはoptane persistentへ (interface:PMDK)
    • バルクデータはSSDへ (interface:NVMe)
    • ユーザ空間で動かすので性能がでる。バージョンアップも楽に。
    • posixでつかいたいときは dfuse(アプリ変更なし) or libdfs(変更あり)
    • libdaosがnative interface (KV-storeっぽいAPI)
    • apache sparkとかのAPIも用意する予定
    • lustreとnamespaceを共有するパッチを開発中
    • optaneはインターリーブきかせてつかうのがふつうなので障害に弱い → サーバごとにレプリケーションして回避
    • erasure codeも将来的にはサポートする予定
    • DAOSでデータのコピーを簡単に用意できるのでAIの学習で効果あり。
    • ソースコードだけでなくRPMでも提供
    • resources: https://github.com/daos-stack/daos
    • dramエミュレーションもある

    [2020-10-09 16:00]

    • Q: IOR hardの性能はpersistent memoryはいいけどSSDはどうか?
    • A: libdfsをつかっているのでコードをかえている。persistent memoryをつかっている。
    • Q: スパコンのストレージを束ねるのに向いてるようにみえるが?
    • A: できるけど、CPUをつかうので計算の邪魔になってダメかも(検証してないけど)。ストレージサーバにするのがいいのでは?

    [2020-10-09 16:07]

    [2020-10-09 16:11]

    DDN ExaScalerのさまざまな性能改善について
    株式会社データダイレクト・ネットワークス・ジャパン 井原 修一

    • lustreベース
    • exascalerはソリューション名
    • lustre 2.10と2.12 がよくつかわれている (つぎは2.13)
    • パッチはアップストリームになげていて、プライベートなパッチはあまりない
    • 最近はシングルクライアントの性能も重視される (DGXみたいなファットクライアントがでてきたため)
    • strided single shared file writeは性能がでていない lusterのもんだいもあるがblockアドレッシングのもんだいもある byteアドレッシングにたいおうしたい
    • ページキャッシュのせいでネットワーク帯域がつかいきれてなかった???
    • データベースではO_DIRECT+aioがよくつかわれる (lustre 2.10はサポートしてなかった 2.12はAIOがつかえるけど同期モードでうごく)
    • gpfsとくらべてlustreはシングルスレッドの性能が低い問題 readaheadを並列化して改善 writeはまだ改善してない
    • lustre IB multi-rail構成だとネットワークをつかいきれてないことがわかった。
    • GPUダイレクト
    • 4x DNN AI400 --(16xIB-EDR) Mellanox (8xIB-HDR200)-- 1x GDX A100
    • CPUのアグリゲート帯域が100Gしかない問題を回避できる
    • CPU:シーケンシャル(fio): write 94GB/s read 107GB/s
    • GPU:シーケンシャル(gdsio): write 154GB/s read 178GB/s

    [2020-10-09 16:38]

    • Q: strided-SSF-Hardで何をかいぜんした?
    • A: over stripe (OSTの数をこえてストライプできる) ロックのコンテンションを減らせた。 2.13で入る機能。
    • Q: byteアドレッシングでなにをやる?
    • A: プロジェクトredをやっている。deosにちかいアーキ。deosとちがって提供するサービスはブロックストレージ(kv-storeではなくて)。
    • Q: gpu direct はai トレーニングで流行りそう?
    • A: nvidiaとしてはやろうとしている。
    • Q: gpu directは?
    • A: ファイルシステムとしてつかえる。シャドーメモリとしてみえる。apiをlustreで実装するかんじ。

    [2020-10-09 16:50]

    [2020-10-09 16:51]

    次世代のストレージ・ ファイルシステム技術
    富士通株式会社 住元 真司

    • NGACI(次世代先端的計算基盤)でwhite paper執筆中
    • CXL: Compute Express Link
      • pcie 5から入る
      • キャッシュコヒーレンシあり
      • アクセラレータアタッチドメモリ
    • redfish
      • DMTF
      • IPMI KCSのおきかえ
      • サーバの管理
    • RPMA: remote persistent memory access
      • librpma
    • 次世代:
      • アプリケーション特化ストレージ
      • OSバイパス
      • オフロード
    • OSがクライアントとサーバで一体化したストレージになる?
    • computational network:
      • MPIで転置行列はストライドアクセスできつがバイトアドレッシングできるとうれしい。
    • LLIOのはなしはなし

    [2020-10-09 17:31]

    • Q: persistent memory, cxlは富士通としてはどう?
    • A: 標準技術ははいるはず
    • Q: グローバルなファイルシステムはひつよう? ローカル(テナント的なのが)なのがあればよい?
    • A: daosみたいにがらっとかえるのもあるが、古いファイルシステムものこるはず。ユーザがえらぶ。

    [2020-10-09 17:36]

    クロージング

    [2020-10-09 17:37]

    懇親会

    Journey×Journey 2号店にて。(参加者7名)

    IMG_20201009_180642



    このエントリーをはてなブックマークに追加
    2020年06月27日10:39リモートデスクトップで光学ディスクを焼く

    コメント 2020-06-27 103319

    久しぶりに出社して会社のPCで納品CDをつくろうとしたら、CD-Rを違うものに変えてみたりUSB外付けドライブをつないでみたり再起動したり何度試しても空CDが書き込み可能だと認識されずに壊れたCDと認識されてしまい焦った。

    いろいろ検索してやっと原因がわかって、それはPCをリモートデスクトップ経由で操作していたということ。初期設定ではリモートデスクトップだと光学ドライブは書き込み不可になっている。おそらくリモートデスクトップでつないでいるのに物理的なアクセスが必要な光学ディスクに書き込みしようということはないだろうというフールプルーフだろう。

    設定方法
    • ローカルグループポリシーエディターを開く
      • コンピュータの構成
      • →管理用テンプレート
      • →システム
      • →リムーバブル記憶域へのアクセス
      • →すべてのリムーバブル記憶域:リモートセッションでの直接アクセスを許可するを有効に
    • 再起動

    いつもおもうことだが、期待した操作ができないときにどの設定が効いてそうなってるのかわかるような仕組みが発明されないかな。自分で作ったプログラムでさえ、しばしば調査は困難である。



    このエントリーをはてなブックマークに追加
    2020年06月21日20:14新型コロナウイルス接触確認アプリ COCOA

    ついに日本でも濃厚接触確認アプリの配布が始まった。アプリの名前がCOCOAというありきたりな名前なのが残念だが Contact Confirming Application の略だそう。バージョン1.0だけどプレビュー版という謎なバージョニングが気になるな。

    オープンソースで開発されたようだ。

    それとは別の接触確認アプリもあったようだ。

    ちょっと前になるがアプリの概要を説明したビデオが公開されている。

    このビデオとかいくつか資料を読んだ感じだと、かなりプライバシー重視で政府ができるだけ個人情報に触れなくて済むようになっているようだ。(だけど、寿命の長いIDがつかわれてたりして、実はちょっとあやしいかも)

    さっそくAndroid版をインストール。

    Screenshot_20200621-015053Screenshot_20200621-015112Screenshot_20200621-015131Screenshot_20200621-015152

    インストールしたので起動。

    Screenshot_20200621-015313Screenshot_20200621-015316Screenshot_20200621-015320

    ちゃんと読んでないけど利用規約とプライバシーポリシーに同意。

    Screenshot_20200621-015326Screenshot_20200621-015345Screenshot_20200621-015512

    bluetoothをONに。問題はノイキャンヘッドホン WH-1000XM3 の接続をスマホからPCに切り替えるのにスマホのbluetoothをoffにする必要があるので、接触確認アプリのためにbluetoothを常時onにしておくのが難しいことだ。そういう残念仕様はソニーらしいところであるが、今回ばかりは非常に残念仕様である。

    Screenshot_20200621-015517Screenshot_20200621-015524

    通知もONに。

    Screenshot_20200621-015618

    設定完了。

    Screenshot_20200621-015651Screenshot_20200621-015657Screenshot_20200621-015736Screenshot_20200621-015830

    初期状態で権限がまったくなしで動作するようだ。

    Screenshot_20200621-020048

    現時点では陽性者DBがまだ動いてないので各スマホで接触情報を集めるだけのようだ。

    [設定]→[Google サービスと設定]→[COVID-19 (新型コロナウイルス感染症) の濃厚接触の可能性の通知] でON/OFFの状態が見られるようだ。位置情報もONにしないといけないのか。位置情報は収集してないとかいてあるが信用するしかないのだなぁ。

    Screenshot_20200622-131023Screenshot_20200622-131043



    このエントリーをはてなブックマークに追加
    2020年06月07日18:08Kernel/VM探検隊 online part1

    スクリーンショット (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だけなのがちょっとさみしい。



    このエントリーをはてなブックマークに追加
    2020年05月03日11:49VEGAS Proの手振れ補正

    vegaspro17動画編集には動作が軽いということでVEGAS Proをつかっているのだが、手振れ補正をかけようとしてもぜんぜん処理が進まなくてこれまで利用を断念していたのだが、ネットを検索してみたところ解説動画で「ウィンドウを最小化すると処理が進む」という回避方法がのっていてびっくり。最小化するとサクサクと処理が進む。やったね。レンダリングのときもウィンドウを最小化すると処理が速くなるので、なにか根本的な作りの悪さがあるのかもしれない。

    やっとつかえるようになったので試してみた。手持ちで歩きながら撮った動画(GH4 + 12-35/1.2)はブレブレだが、スムージングを最強(10)に設定するとかなりぬるぬるした動きになった。GH4は4Kで撮るとローリング歪みがひどくなるのでピッチング方向(上下方向)のブレがひどいと動画に手振れ補正をかけたときに上下につぶれたりひきのばされたりして、ブレはとまっても絵がこわれてしまったのだが、補正方法をアフィンにしたらつぶれたりひきのばされたりしなくなった。

    プレビューしながらパラメータいじってるとときどき手振れ補正が切れてしまうことがあって、なんか完成度が低いな。いちどクラッシュもしてるし。



    このエントリーをはてなブックマークに追加
    2019年05月21日23:10iijlabセミナー: 狭義のTeXと広義のTeX、それぞれの進化

    IMG_20190521_174225

    午前中は酷い雨だったけど夕方にはやんでくれた。

    IMG_20190521_174613

    [2019-05-21 18:01]

    • 日本人の知らないTeX/八登崇之 at TeXユーザの集い2010 を読む前提知識を提供するかんじで。
    • クヌースがつくったTeXはもうつかわれてない。つかってるのはクヌースだけ。
    • XeTeXはジーテックとよむ。
    • LaTeXはいじらない方針だったけどTeX Live 2015からは変えていく方針になった。
    • TeXのレイヤー: 文章を入力する人/文章を組版する人/仕組みを開発する人
    • webに対応させると HTML/CSS/JS
    • いきなりマクロ言語のところをいじるのは無謀
      • コアの部分をいじろうとしてハマるパターン
    • 図を書けるようにした: TikZ/PGF
    • LuaTeX: JSでDOMをいじるようなことがTeXでできる。
    • XeTeX(2004),LuaTeX(2007)でUnicodeに対応した。それまでは8bit化されてただけ。
    • pdfTeXにinputencパッケージでエンジンそのままでUTF-8(ただしグリフは255文字まで)対応してしまった。
    • TeXは \foo というコマンドだけでなく文字もコマンンドとしてあつかえる。
    • CJKパッケージもおなじ戦略だが文字が256文字におさまらないので256文字でサブフォントとして対応。
    • フォントはコマンドできりかえる。
    • tfm: 昔はフォントは印刷所にしかなかったり。フォントの概要だけを納めたファイル。
    • コミックだと漢字はゴシック、ひらがなは明朝だったり、フォントをくみあわせる需要がある。
    • DVIもフォントを仮想化する -> VF
    • NFSS: LaTeXにおける抽象化: encoding,family,series,shape,size
    • fontenc
    • フォントの設定だけで4つもファイルを用意する必要がある。
    • システムフォントをつかいたかった -> XeTeX
    • 日本語ならBXjsclsパッケージをつかうとすべてそろう。
    • pxchfonというパッケージをつかうとDVIをハックしてフォントがえらべるようになる。

    [2019-05-21 19:08]

    • Q: uplatexじゃなくても日本語はつかえる?
    • A: luatexでも日本語処理のパッケージがあるので使える状態になっている。
    • Q: 若者育成は?
    • A: 若い人もいる。ptexを開発している日本人は25歳。

    [2019-05-21 19:11]

    _1240217x



    このエントリーをはてなブックマークに追加
    2019年05月09日10:57MewでISO-2022-JPなのに丸数字つかってるメールを読む方法

    Mewcp5022x.el をダウンロードしてパスがとおったところにおいて、

    .mewに

    (require 'cp5022x)
    (add-to-list 'mew-cs-database-for-decoding '("iso-2022-jp" cp50220-unix))
    

    と書いたらok.

    追記



    このエントリーをはてなブックマークに追加
    2019年04月30日14:04SCRAM: Salted Challenge Response Authentication Mechanism
    passwd salt iteration                                            nonce
        |   |    |                                                     |________________________________________,
        V   V    V                                                     |                                        |
    Hi( *,  *,   * ) = SaltedPassword ---------------------------------)----------,                             |
                              |                                        |          |                             |
                              V                                        |          V                             |
                        HMAC(key, "Client Key") = ClientKey            |    HMAC(key, "Server Key") = ServerKey |
                                                   |    |              |                                   |    |
                                                   |    V              |                                   |    |
                                                   |  H(*) = StoredKey |                                   |    |
                                                   |              |    |                                   |    |
                                                   |              V    V                                   V    V
                                                   |        HMAC(key, str) = ClientSignature         HMAC(key, str) = ServerSignature
                                                   |                           |
                                                   V___________________________V
                                                  XOR
                                                   |
                                                   V
                                              ClientProof
    
    Server:
      exchange nonce
      recv ClientProof
      StoredKey = authDB[username]
      ClientSignature = HMAC(StoredKey, nonce)
      ClientKey = ClientProof XOR ClientSignature
      if H(ClientKey) == StoredKey then
          OK // the client knows the correct ClientKey.
      else
          NG
    
    
    
    HMAC(key, str): Apply the HMAC keyed hash algorithm
    H(str): Apply the cryptographic hash function
    Hi(str, salt, i):
    
     U1   := HMAC(str, salt + INT(1))
     U2   := HMAC(str, U1)
     ...
     Ui-1 := HMAC(str, Ui-2)
     Ui   := HMAC(str, Ui-1)
    
     Hi := U1 XOR U2 XOR ... XOR Ui
    
    

    jambow



    このエントリーをはてなブックマークに追加
    2019年02月20日00:13いってきた: DNS温泉 番外編(2019年2月)

    前日に予習資料に目をとおしておこうとしたのだが、まにあわず。

    _1220358x_1220360x

    DNS温泉とは

    • DNS温泉: 鈴木先生主催 呑むついでに話す
    • DNS補講: 温泉参加者限定
    • DNS番外編: だれでも

    IMG_20190216_114700

    [2019-02-16 12:01]

    基礎講座 / 鈴木常彦_1220361x

    DNS温泉5の資料にもとづいて
    • http://www.e-ontap.com/dns/onsen5
    • DNSの学び方
      • JPRSの本がいちばん正確だが、それでも首をかしげるところも..
      • RFC違反の実装もある
      • RFCもあやしい
      • 自分で考えるしかない
    • RFC1034,1035,2181,2308,8020(3308の訂正),1912(よくあるまちがい集)
    • 自律分散といいつつICANNを頂点とする階層構造
    • DNSにいろんなものをつめこめる → DNS camel
    • ラベルは any binary string (rfc2181) ホスト名は英数とか限定だがドメイン名はなんでもよい
    • ドメイン名は内部表現上で255オクテットまで。
    • RRs=Resource Record set (複数のsじゃなくてsetのs)
    • TTL: how long a RR can be cached. should be discarded.
    • RDATA: owner,type,class
    • QNAME minimizationない伝統的なやりかたならroot zone serverにFQDNで問合せる。
    • stub resolverからfull resolverのあいだは多段になる可能性がある。
    • 誤解するので 再帰問い合わせ→再帰検索要求と大学の授業ではいっている (RD flag=1)
    • full resolver: iterative searchをする。個々の問い合わせは非再帰問い合わせ.(RD=0)
    • 最終回答にはAA bitがたっている。ただし自称AAでしかない。委任されているかどうかが重要。
    • アプリがDNS RRをキャッシュするのはTTLがわからないので危険。でも攻撃を避けるのにdns rebinding攻撃を避けるためにキャッシュすることもある。
    • zoneとはなにか? むつかしい。
    • サブドメインとゾーンのちがい。
      • chukyo-u.ac.jpゾーンの親としてのac.jpゾーンはない(昔はあった)。ac.jpがあってもjと管理者が同じなので意味がない。
    • グルーのはなしは難しいので後半でやるかも。
    • ゾーンの構成物
      • 自分が権威をもつRR
      • 頂点 SOA NS
      • サブゾーン NS
      • サブゾーンNSのA
    • 内部名=下部名 in-bailwick
    • sibling glue
    • recursiveはもともとサーバーのモードのことだった 昔はcache serverとcontents serverが混在してた
    • DNS応答5種類 (djbの分類)
      • CNAME (別名)
      • NXDOMAIN (名前がない)
      • NOERROR (成功)
      • referral (委任)
      • NODATA=(NOERROR+SOA) (名前はあるけどそのタイプはない)

    _1220364x

    [2019-02-16 13:00]

    • sibling glueとは
      • zone jp.
      • zone example.ne.jp.
        • NS ns.example.ad.jp
      • zone example.ad.jp.
        • NS ns.example.ad.jp
        • ns A 192.0.2.1
    • jpサーバに xx.example.ne.jp の問い合わせがあったときにns.example.ad.jp Aを返すことができる=sibling glue。(jpからみたら内部名。sibling domain)
    • sibling glue <-> strict glue
    • BINDとNSDはsibling glueを返す実装になっている。
    • sibling glue: エセグルーとよんでいる。
    • 例:
      • www.ctc.co.jp. NS ns1.hs.ctc.jp. 外部名 (a.dns.jpが知らない)
      • www.ctc.co.jp. NS ns2.dc.ctc.ad.jp. sibling

    [2019-02-16 13:16]

    休憩

    わざわざ外部名をつかうのはレンタルサーバのIPアドレスが変更になってもだいじょうぶだから、というのがきこえてきた。

    [2019-02-16 13:26]

    DNS温泉4教材
    • http://www.e-ontap.com/dns/onsen4/
    • 否定応答
    • RFC2308は古い 問題を引き起している
    • QNAMEがCNAMEの指す先まで含むことになっている。BINDの実装を追認するRFCになっている?
    • FORWARDER: もともとfull resolverのこと。proxyのことだけだとおもいがちだが。
    • NXDOMAINなのにanswerにCNAMEがはいっているのはなぜか? contentsとcacheが混在しているか2つのゾーンをもっているか。
    • このRFCにはそもそも正しい(典型的な)NXDOMAINの例が載ってない。
    • NODATA:疑似応答コード. RCODE=NOERRORでanswerに適切なレコードがないことで示す。
    • SOAのMINIMUMフィールドとSOA自身のTTLの小さい方がネガティブキャッシュのTTLになる。
    • dig soa iij.ad.jp.
      • iij.ad.jp. 86500 SOA ... 3600
    • dig wwwwwww.iij.ad.jp @dns0.iij.ad.jp +norec
    • 否定応答ではSOAのTTLはSOAのTTLとminttlの小さい方にセットされるべき。
    • もし小さい値にセットしない実装があった場合、クライアント側が小さい方を選ばないといけない。
    • 古い実装でNXDOMAINのときに上位のNSを返してくるものがある。example.jp.がjp. NSを返してくるとか。そんなものは信用でいない。簡単に毒入れできてしまう。
    • server failure: 設定がおかしいときはだまりこむのがいいとおもう(鈴木)。
    • server failureはTTLが提供されないにもかかわらずネガティブキャッシュしてよいと書いてある。このRFCおかしい。
    • キャッシュサーバはSOAをちゃんと返す。
    • RFC2308のおかしいところがRFC8020でやっと訂正された。
    • タイトル: NXDOMAIN: There Really Is Nothing Underneath
    • nom.のしたにsub.example.nom.があるけどexample.nom.がない、という場合がある(最近はかなり減った)
    • pseudoの発音は「スド」
    • NXDOMAINがかえってきたら、その下はすべて存在しないと扱ってよい。RFC2308を訂正して、もともとRFC1034にもどった。
    • 利益: QNAME minimizationのときに役だつ。
    • dig ns aws.amazon.com
    • dig aws.amazon.com @...amazon.com +norec
    • CNAMEがかえってくる
    • キャッシュサーバにきくとCNAMEチェインをたどってAまでかえしてくれる。
    • RFC的にはかえすのはおかしい。
    • dig com.cdn.amazon.com は権威サーバにといあわせるとNXDOMAINがかえってくるけど、その下にドメインはある。amazonはがんばって撲滅しようとしていらしいが... お客さん向けのはなおしたが、自分達用のはまだ残っている。
    • unboundでqname-minimisation: yes + qname-minimisation-strict:yes にしてみると、ひけなくなる。
    • www.chuko-u.ac.jpのNSがxxx.elb.amazonawx.com.になっているのでこまった。
    • elb.amazonawx.com. TXT を置くようにした。実装はいじらずに。

    [2019-02-16 14:30]

    • cache-min-ttl おおきくしすぎると浸透しなくなる
    • cache-max-ttl メモリ使用量とのかねあいか?
    • TTL 0はキャッシュするなという意味。
    • TTLみじかすぎるとcache poisoningによわい。
    • TTLの推奨値はRFCにはない。
    • kantei.go.jp. はTTL 300 にしている(たぶんDoSくらったときに逃げられるように)がjpのサーバは86400をかえしてくる。
    • DNS温泉番外編2016でくわしくやった。
    • cache serverはcontents serverのTTLを減算していった値をSOAでstubに返すが、maxできりつめた値を返すかどうかは実装しだい。RFCにはそこまでかいてない。
    • BINDで孫ゾーンをつくれば子ゾーンをNXDOMAINにできるかも。ゾーン共存サーバの場合。

    [2019-02-16 14:51]

    休憩

    IMG_20190216_145301IMG_20190216_170815

    [2019-02-16 15:05]

    RFC5155補足資料 / こやね @xkoyane_1220366x

    • DNSSEC: RFC4033,4034,4035で規定、キャッシュポイズニング対策
    • レコード: RRSIG(RRのsign),DNSKEY(pubkey),DS(KSK pubkey hash;上位ゾーンに登録する),NSEC3(ゾーンに存在するレコードをしめすもの)
    • ZSK: zone signing key, RRを署名するもの
    • KSK: key signning key, ZSKを署名するもの
    • ZSKだけで構築すると、鍵長を長くすると応答が大きくなってよくない。鍵を更新するときの手間がかかる。
    • KSKは鍵長をながくして、ZSKは小さくする。
    • ルートの公開鍵はcache serverからもってくるか、公開されているものをもってくる。
    • (KSKロールオーバのはなしは省略)
    • rfc5155: ゾーン列挙をむつかしくする。
    • NSECレコードをつかった場合はNSECチェーンをたどってゾーンの名前を列挙できてしまう。
    • NSEC3レコード: 名前をハッシュ化する
    • secure delegation: NSのほかにDSもある移譲
    • insecure delegation: NSだけ。
    • ENT: empty non-terminal. レコードがないけどサブドメインがあるもの.
    • .example. IN NSEC3 1 MX RRSIG
    • flag=1はOpt-Outを意味する。
    • hash = base32_rfc4648((sha1**iterations)(domain_nameの内部表現 + salt))
    • ハッシュをもとめるツール: nsec3hash(ISC), ldns-nsec3-hash(NLnet Labs)
    • ハッシュ整列順: ハッシュ値でソート
    • 不存在証明
    • dig a.c.x.wexample. @example.koyane.net +norec
    • closerXXXX name
    • dig a.c.x.w.example. @example.koyane.net +norec
    • next closerXXXX name
    • ワイルドカード
    • 最近接名 closest encloser
    • Q: dns cookieとかqnameのhashをつかわずにnsec3のようなふくざつなものをつかうりゆうは?
    • A: 動的に署名するのを避けた(パフォーマンス)。キャッシュサーバの容量節約(範囲でネガティブキャッシュできるとうれしい)。 CDNで肯定応答を動的に署名しているものがあるらしい。
    • Q: ラベルはany binaryということだったが、正規化はどうしてる?
    • A: たぶんそのまま。英字は小文字にするとおもう。
    • Q: cloud flareでrfc4470 NSECをかえしてきたが、なにかわかる?
    • A: わからん。
    • opt-out: insecure delegationのやつはNSEC3の生成を省略する。
    • opt-out=1だとNSEC3で署名されてないかもしれないことを示す。
    • ENTは省略
    • Q: sha1なのはなぜ?
    • A: rfc5155に書いてあるから。長いのはいやだ。NSEC3のフィールドにアルゴリズムは書いてある。あまり強くする必要もない。saltもiterationsも公開されてるし。辞書をつくりにくくするだけ。djbが辞書ツールを公開している。

    [2019-02-16 15:56]

    第一フラグメント便乗攻撃(アイコラ攻撃) / こやね @xkoyane

    • http://www.convivial.ne.jp/dns/extra2019/aikora.pdf
    • IPフラグメントのリアセンブル処理を悪用したもの。
    • IDがでた。藤原さん https://tools.ietf.org/html/draft-fujiwara-dnsop-fragment-attack-00
    • 権威サーバに偽装した2ndフラグメントをリゾルバおくりつけておく。
    • EDNSでメッセージサイズが大きくできるようになった。
    • EDNSはDNSSECとIPv6では必須
    • unboundはDOビットをつねにセットして要求してくる。(RRSIGかえってきても検証しないならむだになるのに)
    • フラグメントされると: source port random, ID random,が無効になる
    • UDPチェックサム
      • チェックサムは毎回変化するが、応答内容とフラグメントする位置が固定なら事前に偽造2ndフラグメントをつくっておける。
      • 2バイトあればチェックサムは調整できる。4バイトのTTLがつかいやすい。パディングオプションもつかえる。
    • あんがいフラグメントするほどメッセージを大きくするのはむつかしい。
    • 権威サーバに対して Path MTU discoveryをつっこむのが簡単。ICMP echoをおくりつけたあとICMPをおくる。
    • PMTUDのキャッシュ時間はlinuxだと10分。
    • 2ndフラグメントのチェックサムがあわないようにして権威サーバをつかえなくさせる攻撃もありえる。
    • RRSIGをNSに差し替える攻撃: 否定応答を差し替える攻撃になる。
    • オープンレゾルバ 9.9.9.9 はこの攻撃に脆弱
    • (ついてくのつらい)
    • record rankkingが高いのを偽装できるとよりよい。

    [2019-02-16 16:25]

    ドメインハイジャックのデモ (公開不可)

    [2019-02-16 16:36]

    • 対策
      • EDNSを512バイトにする
      • TCPフォールバック
      • 検証しないときはDO=0で
      • xxx
      • フラグメントUDPはうけとらない。
      • xxxx

    [2019-02-16 16:39]

    • Q: path mtu discoveryをブロックする対策は実際にはむつかしいのでは? 他のUDPをつかうアプリへの影響があるので。
    • A: 権威サーバで対策するだけなので、権威サーバとアプリサーバを兼用しなければok
    • Q: TCPだと?
    • A: UDPよりは困難になるがMITMの可能性もあるし。
    • 藤原さんのI-DだとMTU 1220(IPv6のmin)を推奨している。1220より短かいMTUは攻撃だとみなすということで。

    [2019-02-16 16:44]

    Fuzzing DNS Full-Resolvers. / 坂口俊文 @siskrn_1220367x

    • fuzzing: へんなデータをおくって挙動をみる
    • 権威サーバを自作+改造して応答をランダムに変える。
    • データを書き換えたり、メッセージをエンコードしたあとに書き換えたり。
    • スタブリゾルバも自作 ランダムな問い合わせをする。

    [2019-02-16 17:00]

    [2019-02-16 17:03]

    Route53で親子同居 / @otsuka0752_1220368x_1220369x

    • リモートLTはうまくいかなかったので代行で
    • aws
    • route53
    • publichostedzone
    • 親子同居ゾーンはみつからなかった

    [2019-02-16 17:07]

    終了

    懇親会

    • 味仙(あじせん;みせん、ではない)にて。
    • 食べ放題・飲み放題 会費4000円
    • 8.8.8.8からの問い合わせをブロック方法: 自分で8.8.8.8に問い合わせして、アドレスを収集してフィルタに登録しているとのこと。
    • 研究室に名前をつけろということで、じょうだんで「インターネット崩壊研究室」で出したら通ってしまった、とのこと。

    IMG_20190216_172740IMG_20190216_180058IMG_20190216_182925IMG_20190216_183012IMG_20190216_184338

    _1220373x



    このエントリーをはてなブックマークに追加
    2019年01月23日16:11IIJlabセミナー: 進化するロギング: デバッグのための古くて新しい技術

    IMG_20190122_173812

    ロギングはバグを特定するための古典的な手法である.ログとして記録してお
    くイベントの品質が,そのままデバッグの効率に直結する.それにもかかわら
    ず,従来のロギングでは開発者の経験と勘に基づいて
    1) ログを出力するコード上の場所(where to log) と
    2) 記録しておくべき情報 (what to log)
    をアドホックに決定している.そのため,デバッグ時に必要十分な情報が得ら
    れるとは限らず,デバッグを困難なものとする一因となっている.
    本発表では,ログの品質を改善する「ロギングコード自動挿入」に関する最近
    の研究成果を紹介する.ログの自動挿入はここ数年にわたって活発に研究され
    ており,システムソフトウェア研究のトピックのひとつとなっている.既存研
    究を概観したのち,発表者等が研究・開発を進めているロギング・ツールK9
    について紹介する.K9 はマルチスレッド環境におけるエラー伝播を対象とし
    ており,共有データを介したスレッド間でのエラー伝播の追跡を可能とする.
    共有データを介したエラー伝播が発生すると,障害を起こしたスレッドのコン
    トロールフローを遡っても,障害の原因となったバグにたどり着けるとは限ら
    ない.K9 ではそのようなエラー伝播の追跡を支援する.実際に,K9 をLinux
    カーネルに適用し,既知のカーネル・バグ 3 種の追跡が可能であることを確
    認した.さらに,Linux のファイルシステム保守中に遭遇した未知の障害にも
    適用し,バグの特定に有益であることを確認した.
    

    IMG_20190122_174848IMG_20190122_175121

    [2019-01-22 18:00]

    • 障害が発生したら(教科書的には): 再現→調査→対策
    • しかし:
      • そもそも再現がむつかしい。
      • 同じ実行環境が手にはいらない。
      • プライバシの観点からデータが手に入らない。
    • かわりのログを送ってもらいログを調査する。
    • しかし:
      • ログが膨大すぎて解析できない。
      • 肝心の手掛かりとなる情報がログにない。
    • 経験と勘に基づいたロギングが原因。
      • システムコールのエラー。
      • 例外的な処理。
      • 気分で入れてるだけ。
      • windows SOSP 2009
      • printf, log4j, syslog event tracing for windows (ETW)
    • 適切なログイングは難しい。
    • 専門用語:
      • logging too little: ログが少なすぎる
      • logging too much (redundant&trivial): 冗長だったり、あたりまえの内容だったり。オーバヘッド・ストレージ使用量が問題になる。
    • ロギングが研究テーマになったのは数年前から
      • 手動から自動へ
      • where to log?: どこに入れるか?
      • what to log?: どんな値を記録すればよいか?
      • what happend?: ログから障害発生の様子を自動抽出して障害の実行パスを類推する。
    • Errlog [Yuan+ OSDI'12]
      • どこでログを入れるか、入れわすれたところに自動でログを入れる。
      • 例外処理:
        • 実際にはログを取り忘れるケースが多い。250件の障害事例を調査。
      • error()を呼んでたらエラー処理というような判定をする。error()を呼ぶ条件式を集めて、ログを入れ忘れているところに追加する。プログラマは無能ではない前提。
    • SherLog [ASPLOS'10]
      • what happend? ログから実行パスを類推する。Sharはシャーロックホームズから。
    • LogEnhancer[ASPLOS'11]
      • 実行パスが類推できるように変数の値をロギングする。
    • K9ではLinuxをターゲットにした。
      • Linux as Infrastructure
      • Linuxは実用的・巨大・複雑なので、Linuxでつかえれば他のソフトでも使える。
    • 用語:
      • fault: =bug 誤りのこと バグがあっても踏まないと発症しない
      • error: バグをふんでおかしくなった状態
      • error propagation: おかしな状態は伝搬する
      • failure: 障害発生(クラッシュ・ハングアップ)
    • Palix:
      • Null: nullチェックもれ
      • Inull(Inconsistent null check): ポインタ参照(deref)したあとにnullチェック(意味がない)
      • Block: ブロックしてはいけないコンテキストでブロックする関数をよぶ
    • linuxにはだいたいいつでも700個くらいバグが残っている。
      • バグをつぶしても同じくらいバグが入ってくる。
      • 1行あたりのバグは減っている。
    • 簡単なバグだけではない
      • 関数にまたいだ問題
      • 割り込み(非同期)
    • Inter-thread error propagation
        • Btrfsでworker threadが例外時にdirtyフラグを落すのを忘れて
        • sync threadがBUG()を踏む
      • direct propagation: スレッド1が共有データを更新して、スレッド2が読む。
      • indirect propagation: スレッド1が共有データを更新して、スレッド2が読んで別の共有データを更新して、スレッド3が読む。
    • K9ではエラー伝搬を解析できるようにログを入れるが、linux規模のソフトでは正攻法は無理。
      • オーバヘッドを押える
      • 静的解析はしない
      • ポインタ解析はしない (やっても正確には分からないことが証明されている)
      • coding traditionを仮定して共有データをさがす。
        • 共有データはヒープに置かれる。
        • 共有データは構造体になっている。
          • そのなかのポインタ配列やリスト構造をみる。
          • リンクリストなどのデータ構造用のライブラリにも対応(対応しないとデータ構造を操作するだけの関数がログに出て呼び出し元が分からない)
      • indirect propagationはデータフローは追い掛けずに型レベルで推測する。
    • ファイルシステムにはバグが多いという論文がある and Btrfsは新しいファイルシステムなのでバグが多く残っているのでは? and 研究室の学生がBtrfsのメンテナ
    • Btrfsで未知のバグをK9で追い掛けた原因をつきとめられた (実証)
    • K9のオーバヘッドは、スループットで1.83%(平均)、CPU利用率で0.32%(平均)。
    • たまにスループットのオーバヘッドが少ないという論文があってもCPU使用率が高いケースがある。その場合はCPUに余裕がないとスループットが悪くなる。

    [2019-01-22 19:16]

    QA

    • Q: ログを入れたのはファイルシステムだけ?
    • A: yes。だがファイルシステムのコードから呼ばれている関数にもログが入っている。スケジューラとかメモリ管理とか。これら(sched,mem)にはバグが少ないという研究報告がある。クリティカルセクション内でログを吐かないようにすることで、よりオーバヘッドを減らせる余地がある。
    • Q: ロックには注目しないのか?
    • A: ロックの範囲を調べるのが簡単ではないのと、ロックが保護している変数を見つけるのも難しい。ロックもれがあった場合に困る。やってみたが良くなかった。
    • Q: K9の論文は公開されているか?
    • A: 投稿中。
    • Q: オープンソースにするのか? それとも企業に買収されるのを期待しているのか?
    • A: 日立との共同研究なので日立が買う可能性はあるが、オープンソースにする予定になっている。
    • Q: C以外の言語でもつかえるか?
    • A: LLVMの中間言語で解析しているので、言語に特化したものでなければいけるはず。

    [2019-01-22 19:24]

    IMG_20190122_194128

    関連資料?


    このエントリーをはてなブックマークに追加