この記事は、株式会社ACCESS Advent Calendar 2017の12日目の記事です。
linux 4.14 LTS
リリースされた中で個人的に気になる機能をピックアップしていこうかと思います。
5段階ページングサポート
カーネルのサポートするメモリアドレス空間が大きくなります。
これまでは 256TiB 仮想アドレス、64TiB リアルアドレスのサポートだったのが 128PiB 仮想アドレス、4PiBリアルアドレスまで認識できるようになりました。
1モジュール 128GiB が市販され始めているので未来を見据えてという感じでしょう。
8枚で 1TiB なのでそろそろモンスターマシンはメモリがTiB単位でないと人権がないとか言われるんでしょうか。
アセンブラ部分のコードを解説している人がlinux アドベントカレンダーにいたので紹介。
http://retrage01.hateblo.jp/entry/2017/12/13/202209
送信ソケットのZero copy
ユーザープロセスからネットワークでデータを送信する際に一度カーネル空間上にコピーして送信していたのをPTEの操作でコピーをしないようになります。
ただし、メモリを送信前に書き換えてしまうと送信データが変わってしまうので注意。
単純にフラグを変更すれば早くなるというものではないので既存のコードと相談する部分が大きそうです。
利用するためには send のフラグに MSG_ZEROCOPY をつける必要があります。
10KB以上の送信であればつけて送るほうが早くなるとのこと。
詳しい利用法はこちら
https://www.kernel.org/doc/html/latest/networking/msg_zerocopy.html#socket-setup
論文
https://netdevconf.org/2.1/papers/debruijn-msgzerocopy-talk.pdf
論文上のパフォーマンスの比較だと
16KBでシステムサイクルが30%,ユーザーサイクルで80%の削減効果があるようです。
終わりに
linuxを使う人ならほとんどの人が関係あるというところで2つ紹介しました。
もっと深堀していきたかったですができずじまい…