1. Qiita
  2. 投稿
  3. Linux

Linux Kernel 3.0以降について調べてみた

  • 0
    いいね
  • 0
    コメント

    長いので太字で要点

    NW周り

    効果が高いNW周りから

    3.0 tcp: Increase the initial congestion window to 10.

    Mixi enginer blog参照
    一度に送るパケット調整

    3.1 tcp: RFC2988bis + taking RTT sample from 3WHS for the passive open side

    Mixi enginer blog参照
    TCP再送時間の短縮
    CentOS6のパケット再送が途中から早くなったはこれだったのね

    3.2 TCP Proportional Rate Reduction(NWパフォーマンスのアルゴリズム変更)

    bandwidthを徐々に増やすたときパケットロスが起きた場合のbandwidthを調整するアルゴリズムをgoogle提案のものに
    デフォルトで有効?

    3.5 TCP Early Retransmit

    ネットワークに送出されているセグメントが4つ未満である場合、fast retransmitをトリガーするduplicate ackの回数を減らすとらしい
    http://totem3.hatenablog.jp/entry/2016/06/05/160109
    /proc/sys/net/ipv4/tcp_early_retrans
    CentOS6には存在しない
    Ubuntu16.04は3になっていた

    3.6 Bufferbloat fight: TCP small queues

    送信して受ける側のバッファがあふれる問題の解決らしい
    /proc/sys/net/ipv4/tcp_limit_output_bytes
    CentOS6にも存在。
    Ubuntu16.04共に262144

    3.7 TCP Fast Open実装完了

    これによりWebページの読み込み時間を4〜41%改善できるとしている。
    正直、無料では最近で一番大きい改良かもしれない
    しかし、実装が必用。

    3.10 TCP Tail Loss Probe(TLP)

    送信途中でパケットが壊れたときにタイムアウトまで検知できない問題の解決
    デフォルトで有効?

    3.11 TCP Fast Openデフォルト有効

    やったね。たえちゃん

    3.14 TCP Auto Corking

    アプリケーションがwrite/sendmsgシステムコールを実行する際に可能な限りパケットを合体させることでパケット送信の総量を抑える
    /proc/sys/net/ipv4/tcp_autocorking
    Ubuntu16.04では既に有効
    CentOS6ではバックポートされていない

    3.18 パケット転送など性能の強化が図られたほか、アプリケーション向けにネットワークパケットの高速フィルタリングを行うBerkeley Packet Filter(BPF)の拡張版eBPFでは、64ビットビルド上でeBPFプログラムのJITコンパイルが可能となった。

    セキュリティ周り

    何を載せるか粒度が人によって大きく異るが

    4.0 ライブカーネルパッチ

    再起動なしでカーネルにパッチ適応
    有料では最近で一番大きい改良
    はい、自分で仕組みを組み込まない限りUbuntuですら無料では3台しかできません。RHELは有料

    4.1 Ext4ファイルシステムでファイルとディレクトリの暗号化機能

    ファイルシステムで暗号化する機能
    Android側の要求で実装
    やり方はここにある
    http://askubuntu.com/questions/643577/how-to-create-ext4-encrypted-partition-on-ubuntu-15-04-with-new-4-1-kernel

    メモリ周り

    3.15 メモリ管理を改善する機構

    多くのメモリを使用するような処理においてページングを削減でき、性能が改善する

    I/O周り

    3.0 hole punching(ext4)、hole punching(tmpfs)

    MySQL5.7のInnodb compressionとかで使うSSDのデータ圧縮
    CentOS6はバックポートされている模様

    3.1 Dynamic writeback throttling(ライトバックのパフォーマンス向上)

    そもそもライトバックではなくてライトスルーさせるべきだが
    どうしてもライトバックしないといけない時のブロックタイムを改善

    3.2 ext4のブロックデバイス拡張

    4KB→1MBに拡張
    HDDなら効果がそれなりに期待できる

    ext4のオンラインリサイズ

    ioctlが加わり?速度向上とビットマップとiノードテーブルの割り当てが可能に

    3.5 ext4のメタデータに対するチェックサム

    メタデータに対するチェックサム?だが、ほとんど壊れた報告はない。無視できる程度のパフォーマンス低下
    "tune2fs -O metadata_csum"または "mkfs -O metadata_csum"

    3.9 SSDによるキャッシュ"dm-cache"、3.10 "bcache"

    HDDより早いSSDでキャッシュするシステム
    この2つどうも似たようなものの様子
    ディストリビューションによって資料が多い方を選ぶかベンチをきちんと取ろう

    3.16 SSDの性能を改善するマルチキューブロックレイヤーの実装「blk-mq」がほぼ完成しマージ

    SSDならそれなりに効果がある模様
    GRUBをいじらないと有効にならないっぽい

    4.4 ループブロックデバイスにおけるDirect I/Oや非同期I/Oサポート

    imgファイルをマウントするときに早くなった模様

    CPU

    Process bandwith(各プロセスにおけるCPUリソースの利用量を制限)

    cgroupで実装されていたような
    http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/scheduler/sched-bwc.txt?id=HEAD