FacebookがLinuxカーネルツールを無料公開

Table of Contents

FacebookがLinuxカーネルツールを無料公開

Facebook は長年にわたり、誰もが喜ぶ世界をさらにオープンでつながりのあるものにしてきたが、最近は世界をより近づける方向に舵を切った。

データ収集ビジネスは、グローバルな圧縮を追求する中で、オープンソースのオペレーティングシステムを大量のサーバーにより適したものにするために、発音が難しい Linux カーネルコンポーネントをいくつか開発しました。

Facebook は火曜日、多数の Linux サーバーをより効率的に管理する方法を探している他の組織を支援するために、カーネル ツール スイートをオープン ソースとして公開しました。

FacebookのエンジニアであるTejun Heo氏とThomas Connally氏はブログ記事で、「このリリースに含まれるカーネルコンポーネントとツールは、事実上無限の数の運用上の問題を解決するために適応できます」と述べています。「…このサービスと製品のコレクションは、複数のプラットフォームで何百万人ものユーザーにサービスを提供するアプリを開発するあらゆる開発者にとって役立つと確信しています。」

まず、Linuxカーネルのコード実行エンジンであるBPFがあります。この名称はかつてBerkeley Packet Filterを意味していましたが、現在ではより広範な機能群を包含しています。このソフトウェアは、特定のイベントに応答してバイトコードを実行し、カーネルの動作を変更・拡張することを可能にします。本質的には、C言語の呼び出しが可能な汎用命令セットです。

BPFはカーネルとユーザー空間を分ける境界間のパケットをフィルタリングするカーネルエージェントに基づいていますが、ネットワーク処理だけにとどまらず、トレースやサンドボックス化にも使用できます。Facebookは、オープンソースの負荷分散ソフトウェアKatranと組み合わせて、ネットワークトラフィックの最適化にBPF仮想マシンを使用しています。

Google と Netflix も BPF に関与しています。

さらに、データセンター向けに設計された、耐障害性、ファイル修復、そして容易な管理を念頭に設計された、母音欠乏型ファイルシステム「Btrfs」があります。富士通、Intel、Oracle、SUSE、Red Hatといった企業がこのプロジェクトの発展に貢献していることからもわかるように、こうしたニーズは確かに存在しています。

Heo氏とConnally氏によると、BtrfsはFacebookのデータセンターの様々なアプリケーションにおける効率性を向上させたという。「最近では、cgroup2を用いたI/O制御において、Btrfsは以前のファイルシステムのジャーナリング動作によって引き起こされていた優先度反転の解消に役立ちました」と両氏は述べている。

レジスター紙はFacebookに対し、同社のコードがどのように改善したかを定量化する指標を提供できるか尋ねた。同社の広報担当者は、ブログ記事で概説された効率性に関する一般的な約束以上の回答は拒否した。

そこで登場するのがcgroup2です。これは、ワークロードをグループに分割し、メモリ、IO、処理能力などのリソースを割り当てることでワークロードを制御するLinuxカーネルツールです。Facebookはこのソフトウェアを使用して、メインシステムのワークロードをバイナリやその他のシステムサービスの実行から分離・保護しています。Facebookは、利用率の向上を文書化するケーススタディも実施しました。

リナックス

オープンソースは20周年を迎え、一般の人々を引きつけようとしている

続きを読む

このスイートに含まれるもう一つの魅力的なコードはNetconsdです。下剤のように聞こえますが、実際にはLinuxのネットコンソールメッセージ、つまりログデータを送受信し、構造化するためのコードです。

「数百万のホストから継続的にデータを記録し、エンジニアがカーネルで生成される大量のログデータノイズから意味のある信号を抽出できるようにします。これにより、オンコールの生産エンジニアが不正な動作をしているサービスを迅速に特定して診断できるようになります」とホ氏とコナリー氏は述べた。

cgroup2を補完するPSI(Pressure Stall Informationの略で、K-POP「江南スタイル」の歌手と意外にも同音異義語となっている)は、メモリ、CPU、I/Oを測定する手段を提供します。このツールの目的は、組織がリソース不足に陥る前に対応できるようにすることです。

そして最後に、Oomdがあります。80年代のテクノポップバンドOMDと混同しないでください。これは、メモリ不足(OOM)状態に対応するプロセス実行プログラムです。Oomdはユーザー空間に介入し、LinuxカーネルにおけるOOM状態の発生を防止します。カスタムロジック検出をサポートし、さまざまなワークロードに合わせてカスタマイズできます。®

Discover More