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

    タグ絞り込み検索
    2015年08月19日13:21いってきた:カーネル/VM探検隊@名古屋

    _1010304

    しっかり晴れた。あつい。ちょっと早めに家を出て常滑→(名鉄)→名古屋→(地下鉄東山線)→一社(いっしゃ)→(市バス)→平和ヶ丘三丁目→(徒歩)→愛知東邦大学。名古屋駅で地下鉄に乗ろとうろうろしてたら「ドニチエコきっぷ」という一日乗車券を600円で売ってたので購入。地下鉄の往復だけで540円かかるので市バス(210円)に一回乗ればもとがとれるという計算。バスに乗るために一社のバスターミナルで20分待った(イスあり)のは計算外。

    _1010221_1010223_1010224_1010225_1010233_1010234_1010236_1010237_1010239

    ミニストップで買ってきた弁当を冷房の効いた食堂で食べる。守衛さんが気をきかせて開けておいてくれたらしい。

    _1010240

    会場のL棟は図書館で4A階はホールで東側がガラス張りでとても見晴らしがいい。トイレは音楽がながれてる優雅だ。

    _1010277x_1010279_1010280_1010281_1010284

    ustreamでの配信も行われていた。

    _1010243_1010278

    前説

    thetaで記念撮影も。

    _1010248_1010254_1010257

    [2015-08-15 13:42]

    _1010259_1010258

    あるキャッシュメモリのはなし / @nullnilaki

    • slide
    • 港湾物流業界ではたらいている。COBOLer。コンテナあつかっている。
    • Alpha server DS25。あっさり動いた。つまらない。。。
    • 姫野ベンチで性能が出ない。。
    • 曽田さんtweet:手塚さんのページカラーリングが効きそう。
    • DS25にL2キャッシュのプローブコードをLinuxをまねして入れた。→ なぜか性能が1/4に落ちた。
    • 仮想アドレスでキャッシュするか物理アドレスでキャッシュするか。
    • 仮想キャッシュ問題いろいろ: DMA(コヒーレンシ)、エイリアス(ページ共有)。
    • 物理キャッシュ問題いろいろ: 。。
    • NetBSDのページカラーリングの実装を調べてみた。??
    • NetBSD4ではカラーリング(ラウンドロビン)の効果があったのにNetBSD6(マッチング)では性能が落ちる。 → カラーが多すぎ
    • キャッシュ見れないからつらい。

    [2015-08-15 14:10]

    • Q: カラーが多すぎるのでは? 計算が間違ってる可能性は?

    [2015-08-15 14:16]

    [2015-08-15 14:21]

    _1010264_1010265

    3DSにデータを自動送信したかった / @knok

    • slide
    • ARM11相当
    • プチコン3号: BASICをバイトコードに変換してVMで実行。コードは専用サーバを介する必要がある。
    • 困ったこと:BT KBDつかえない、カメラ使えない(QRコード経由)、SDカードは暗号化。
    • BBガンでソフトキーボードを打つ! → 弾は15発。。そもそもパネルが反応しない(接触時間が短かいから?)。
    • ソフトウェアモデム(スピーカーとマイク): FSKで1200bpsくらい出たらしい(rei)。
    • 300bpsくらいは出るようになった。FSKを認識するところがむつかしい。

    [2015-08-15 14:36]

    • カメラがつかえなくなった理由はDS自体がQRコードの脆弱性があったのではないか?

    [2015-08-15 14:38]

    GPLライセンスをいちいちソフトウェアキーボードでうちこむのはやだよね。

    _1010267

    [2015-08-15 14:41]

    _1010269_1010268

    OpenBSD/luna88k移植話 / @ao_kenji

    • slide
    • ここ10年くらい仕事でコード書いてない。
    • UNIX歴: Sun3/SunOS4.0.xくらいから。
    • LUNA見たことあるひと挙手 → 半分くらい → 平均年齢たかい!
    • LUNAをみつけたら保護を!
    • 2001年: CPUマニュアルを古本屋でみつけてしまった。m88kはモトローラの黒歴史か。。
    • m88k: 汎用レジスタ32bit *32
    • OpenBSD/mvme88kaを移植のターゲットに
    • 必要なもの
      • クロスコンパイラ
      • カーネルローダー(vmunixはa.outフォーマットにしておけばROMからよめそう)
      • ハードウェア情報
    • コンパイラのバグがけっこうあったがNFS bootできるようになた。
    • SCSIも動くようになってスタンドアローンで動くようになった。
    • まとめ:
      • toolchain(コンパイラ)重要
      • ハードの情報は重要
      • バージョン管理システム重要
      • わからなければ時間をかけて勉強
      • 文章で記録を残す (単語じゃなくて文章にしてまとめる)
      • 行き詰まったら他のことをやる
      • 愛と執着心

    [2015-08-15 15:15]

    回覧されてきたCPUボード。真ん中のばCPUチップで両側はキャッシュらしい。

    _1010270

    [2015-08-15 15:20]

    お化け / @takeoka

    _1010272_1010271

    • slide
    • x86とarmはTLBミスでハードウォークでページ情報を読む。ほのぼのとしたソフトウォークとちがってハードだと高速にメモリアクセスして内容が化けてることが。
    • キャッシュ(DRAM)のリフレッシュがされてなかったバグ(配線されてなかった)→ソフトウェアでメモリをなめる(リフレッシュ)ことにして回避。。。

    [2015-08-15 15:30]

    [2015-08-15 15:32]

    _1010274_1010273

    最近、仮想環境のようすがちょっとおかしいんだが。 / @xylnao11

    • slide
    • 「それ、MULTICSで見ました」40年まえと考えることはおなじ。環境がちがうだけ。
    • docker:均一な開発・検証環境が得られる。
    • lunixはライブラリの依存関係が地獄なので簡単化には資源惜しまない文化
    • 「仮想化インフレ」
    • 仮想化の悪循環: 問題がみえにくくなる、オーバーヘッド、面倒を仮想化で解決したくなる、

    [2015-08-15 15:48]

    休憩

    _1010263

    [2015-08-15 16:08]

    ALSA YM2413ドライバ / @fadis_

    _1010286_1010285

    • slide
    • https://www.youtube.com/watch?v=RXHHn_3rSyo
    • ALSA: openしてwriteするとPCMがサウンドデバイスから流れる。簡単。
    • RawMIDI API:
      • そのままMIDIメッセージをおくる
    • Sequencer API
      • MIDIメッセージをいじれる
      • アプリはClientといわれる。カーネルにsequencer coreがある。
      • カーネル内にもClientをおける。undocuemnted。黒歴史か? → ほりかえしてみよう。
    • ALSA sequencerはclientが状態をもっているモデルだが、実際のデバイスは状態をもたなものがほとんど → ドライバががんばる。
    • GPIOで直接YAMAHA音源チップ1Mzでたたくにはタイマの精度が足りない。
    • ARMマイコンでI2C→GPIOに変換させてYAMAHA音源チップをつなぐ。
    • Q: マイコンからちょくせつ音源たたいたほうがよいのでは?
    • A: たぶんそうしないとタイミングがあわないかも。

    [2015-08-15 16:25]

    モーターを低速で定速で動かしてみる / @dob22in

    _1010291_1010289

    • slide
    • https://www.youtube.com/watch?v=M12rKiHACeI
    • 天文観測は若い人はやってない。機材高いし。
    • 地球の時点速度:1/1436rpm
    • ステッピングモータやサーボモータは高級品と定義。チープなタミヤのギヤボックスでつくってみる。
    • ロータリーエンコーダもタコメータも高い。
    • Back-EMF(逆起電力)
    • マブチモータ(2極3スロット)は6回波打つ。→ 位置検出できる。
    • PWMでモーター制御
      • 周波数は可聴域の外にする 20kHz以上 に
      • CCMモード(continuous conductin mode)
      • インダクタンス成分 340μH + 580mΩ
      • DCM(discontinuous conduction mode)にするとI=0のときにモーターのBack-EMF(逆起電力)がみえてくる。← 周波数を遅めにすると
      • 低電圧FETがつかいやすくなったのでマイコン直結できそう。
      • 上下のFETは同時にONにならないように制御する(同時ON→短絡なので)。そのすきま時間はダイオードで還流させる。
    • 十分な時間がたつと逆向きに電流が流れる。電磁ブレーキ。
    • ECPPPモードで制御。
    • PWMで駆動→止めるとダイオードで還流→BackEMFで回転数検出

    [2015-08-15 17:03]

    _1010292

    [2015-08-15 17:05]

    オレオレ言語soramameの紹介 / @matsu1834

    _1010295_1010294

    • slide
    • source
    • https://www.youtube.com/watch?v=qSfZFruBJM4
    • 京都繊維1年。受験がおわって作りはじめた。C++。
    • 演算子: @< car @> cdr @? length
    • 再帰降下で書いたが長くなったのでYACCビルド失敗して自作LRパーサ。
    • 式のパーサはユーザ定義演算子のためにあとからやる。
    • 継続はスタックフレームをコピー。スタックフレームはリンクリスト。

    [2015-08-15 17:33]

    • Q: 公開してる?
    • A: してない。
    • Q: 高校時代なにやってた?
    • A: マイクロマウスってロボットのプログラムかいてた。
    • Q: asyncにjoinがない?
    • A: ない。

    [2015-08-15 17:35]

    [2015-08-15 17:38]

    レイテンシとバンド幅 / @n_soda

    _1010300_1010299

    • slide
    • まずアルゴリズム改善
    • 待ってる時間(サーバ応答、ディスク待ち、システムコール、メモリアクセス、キャッシュアクセス) → latency(潜伏、潜在)
    • バンド幅はどんどん向上するが、レイテンシはゆっくりとしか向上しない。
    • レイテンシを回避するきまりきったパターン
      • まとめて回数を減らす
        • stdioのread/write
        • NFSのrsize/wsize
        • バンド幅は向上するがレイテンシはちょっと悪化
      • read ahead
        • CPU prefetch,分岐予測
        • disk I/Oシーケンシャルアクセス
        • バンド幅は通常向上、レイテンシは短縮
      • write back
        • キャッシュをあとから書く
        • diskバッファ
      • write combining
        • 連続した書き込みはまとめる
      • 先行送信
        • TCPのウィンドウ制御でACKをまたずに送信。
        • バンド幅向上、レイテンシ短縮
      • 中間バッファで並列処理
        • producer-comsumer
      • 細分化して並列処理(パイプライン)
      • 並列性を抽出して並列処理
      • 投機実行
        • read aheadはこれの一種
      • インターリーブ
        • 処理を複数のハードウェアに分散
        • メモリチャンネル、RAID 0、ネットワーク割り込みのコア分散
      • 関係のない処理を分散
        • hardware multithread (SMT, hyperthreading)
      • 差分を送る
        • poll/select → epoll
      • 階層バイパス
        • putchar/putc 関数をマクロに (階層破壊)
        • polling (わりこみやめてポーリング)
        • VIA カーネルをバイパスして直接アクセス
      • FMA (fused multiply-add)
      • データではなくてプログラムを送る
        • データを生成するプログラムを送る。
        • PostScript
        • データを生成するプログラムを送る。
      • 物理的になんとかする
        • クロックあげる、線ふやす、短かくする、専用ハード
      • レイテンシとバンド幅は交換可能

    [2015-08-15 17:57]

    • Q: SCSIたいへんとか,複合命令でクロック遅くなったり。

    [2015-08-15 17:58]

    [2015-08-15 18:00]

    1つのNICを2つのネットワークスタックで共有するはなし / @syuu1228

    _1010302_1010301

    • slide
    • https://www.youtube.com/watch?v=kz_1r168Asg
    • SeaStar
    • shared nothing (ロック不要)
    • ゼロコピーのためにカーネルバイパスしたい → DPDK(NICを1プロセスで専有)
    • DPDKにはプロトコルスタックがない。
    • C++14
    • future/promise (stdではなく自前の)
    • 本題: DPDKとSeaStarでNICを共有したい。
      • Amazon EC2ではNICを増やすとグローバルIPがもらえなくなる→外からSSHできなくなる(シリアルコンソールもない)。
    • SeaStarが一旦受けてTAPデバイスでカーネルのネットワークスタックにつっこむ。
    • NATかまず
    • L4(ポート番号)でどっちが処理するか判断
    • ARPはSeaStarとkernelの両方で受信。送信は別々に出す。
    • ICMP: echoリクエストはseastarで、それ以外はkernelになげる。
    • UDP/TCP: 開いてないポートはkernel行き。
      • client側: ローカルポート番号の範囲をSeaStarとkernelとで分ければOK。
      • Server側はSeaStar→カーネルにBIND(2)出して回避。
    • DHCPクライアント: 素のkernel,SeaStar,TAP経由のkernel、合計3回リクエストしてしまう問題。 → bridgeかます

    [2015-08-15 18:27]

    closing

    _1010306_1010309_1010311x

    懇親会

    • 我楽多文庫・一社店
    • 告知

    _1010314_1010315_1010316_1010318_1010319_1010320_1010323_1010324_1010325



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

    トラックバックURL

    コメントする

    名前
     
      絵文字