BSD界隈四方山話

第57回OpenBSDルーティングテーブル高速化ベンチマーク

新しいルーティングテーブル実装ART

OpenBSDでは新しいルーティングテーブルの開発が進められてきました。これまでOpenBSDはBSDで使われていたRadixツリーベースのパケットルーティングテーブルが使われてきましたが、この数ヵ月は新しく開発されたARTルーティングデーブルがOpenBSD-CURRENTで使われています。このままいけば次にリリースされるOpenBSD 6.0ではこの新しいルーティングテーブルがデフォルトのルーティングテーブルとして機能することになると見られます。

OpenBSDで新しいルーティングテーブルの開発が進められてきた背景にはSMPシステムでパフォーマンスを発揮できるようにするという目的があります。最近のプロセッサはマルチコアがあたりまえという状況です。さらに今後メニーコア化が進むと見られており、こうしたプロセッサで性能を発揮するにはSMPで性能が発揮できるようにカーネルを作り変えていく必要があります。

ルーティングテーブルを従来のBSD RadixからARTに変更する理由はこのためです。具体的にどのようにパフォーマンスが代わったのかが、Grenadille - ART single thread performancesに掲載されました。今後ARTのパフォーマンスについていくつか記事が書かれるようですが、今回公開された文書はBGPサーバを構築し、シングルスレッドでのパフォーマンスおよびメモリ消費量の違いについて検証するといった内容になっています。

パフォーマンス向上とメモリ消費量拡大

Grenadille - ART single thread performancesではBSD Radixに対してART 8/4/4/4/4/4/4、ART 8/8/8/8、ART 16/8/8が比較されています。ARTを導入するにあたってはART 8/4/4/4/4/4/4はあまり意味がないように思いますが、これはメモリ消費用がBSD Radixに近いということで比較対象として掲載されているということです。

 Grenadille - ART single thread performances
図 Grenadille - ART single thread performances

BSD RadixとARTの最大の違いはなにかということになるわけですが、説明によればARTの方がより多くのメモリを消費するということだそうです。より多くのメモリを消費する代わりに、パフォーマンスも向上していると説明があります。たしかに、掲載されているグラフを見る限り、メモリの消費量が増えている代わりに、パフォーマンスが向上していることを確認できます。

 ベンチマーク結果
図 ベンチマーク結果

今回のベンチマークではART 8/8/8/8がART 16/8/8と比べて優位性が見られなかったこと(同じくらいメモリを消費しているのに、ART 16/8/8のほうが性能が良い)なども指摘されています。

ベンチマーク向けに構築されたBGPサーバではBSD Radixが130MBほどのメモリを消費しているのに対して、ART 16/8/8は180MBのメモリを消費しています。消費するメモリ量が50MB増えているものの、この増加量でこのパフォーマンスの向上であれば、デフォルトで有効化するのに許容範囲内だろうという説明も掲載されています。

OpenBSDではルーティングテーブルのみならず、ネットワークスタックをSMPで性能が発揮できるように開発を進めています。今後リリースされるバージョンでは従来よりもネットワークパフォーマンスの向上が期待されます。今後のリリースに注目しておきたいポイントです。

FreeBSD勉強会 告知

第54回 7月14日(木) 19:00~ ZFSアドバンスベーシックス

ストレージシステムや仮想化システムのファイルシステムとしてデファクトスタンダードになりつつあるZFS。FreeBSDでネイティブに動作するファイルシステムで、FreeBSDをストレージシステムや仮想化システムのオペレーティングシステムとして採用する強い動機になっています。

今回は前回より先に進んで、よりアドバーンスな機能や使い方を紹介します。第53回に参加していなくても大丈夫です。ZFSに興味がある方はぜひご参加ください。

参加申請はこちらから。

おすすめ記事

記事・ニュース一覧