第12章 カーネル

perf が Intel Xeon v5 の Uncore イベントに対応

今回の更新により、Linux のパフォーマンス分析ツール (perf) が更新され、Intel Xeon v5 サーバー CPU での uncore イベントがサポートされるようになりました。これらのイベントは、上級ユーザーに追加のパフォーマンスモニター情報を提供します (BZ#1355919)。

crash が IBM Power ISA 3.0 の vmcore ダンプを分析

crash ユーティリティーが更新され、IBM Power ISA バージョン 3.0 アーキテクチャーに関連するカーネルページテーブルの変更に対応できるようになりました。その結果、crash ユーティリティーが IBM Power ISA 3.0 システムでのカーネルの vmcore ダンプを解析できるようになりました (BZ#1368711)。

IBM Power および IBM Power の Little Endian 版向けに crash が更新

crash パッケージが更新され、IBM Power Systems および IBM Power Systems の Little Endian 版がサポートされるようになりました。これらのパッケージは、ライブシステムや kexec-tools パッケージまたは Red Hat Enterprise Linux カーネルで作成されるカーネルコアダンプを調査するために使用できる自己完結型ツールのコア分析スイートを提供します (BZ#1384944)。

memkind がバージョン 1.3.0 に更新

memkind ライブラリーがバージョン 1.3.0 に更新され、以前のバージョンに対する複数のバグ修正および機能拡張が追加されています。
主な変更点は以下の通りです。
  • ロギングメカニズムが導入されました。
  • 以下のシンボルが非推奨になりました: memkind_finalize()、memkind_get_num_kind()、memkind_get_kind_by_partition()、memkind_get_kind_by_name()、memkind_partition_mmap()、memkind_get_size()、MEMKIND_ERROR_MEMALIGN、MEMKIND_ERROR_MALLCTL、MEMKIND_ERROR_GETCPU、MEMKIND_ERROR_PMTT、MEMKIND_ERROR_TIEDISTANCE、MEMKIND_ERROR_ALIGNMENT、MEMKIND_ERROR_MALLOCX、MEMKIND_ERROR_REPNAME、MEMKIND_ERROR_PTHREAD、MEMKIND_ERROR_BADPOLICY、MEMKIND_ERROR_REPPOLICY
  • Hardware Locality (hwloc) が統合され、--with-hwloc オプションを使用してオンにできるようになりました。
  • libmemkind.so で公開されるシンボルのクリーンアップが実行されました。たとえば、libnuma および jemalloc は公開されなくなりました。
  • AutoHBW ファイルが /memkind/autohbw/ ディレクトリーに移動し、コードのリファクタリングが行われ、テストが適切なシナリオに追加されました。
  • セキュリティーを強化するフラグが memkind に追加されました。フラグは --disable-secure 設定時間オプションを使ってオフにできます。
  • jemalloc の設定は使用されない機能をオフにできるように変更されました (BZ#1384549)。

Jitter Entropy RNG がカーネルに追加される

今回の更新により、CPU タイミングの違いによるエントロピーを収集する Jitter Entropy Random Number Generator (RNG) が追加されています。この RNG は、algif_rng インターフェースでデフォルトで利用できます。生成される数は /dev/random ファイルでカーネルに戻されるため、これらの数は他の/dev/random ユーザーも使用できます。その結果、オペレーティングシステムには利用可能なエントロピーのソースが増えることになります (BZ#1270982)。

/dev/random が urandom プールの初期化についての通知および警告を表示

今回の更新により、ランダムドライバー (/dev/random) が、非停止 (nonblocking) プール (/dev/urandom で使用) が初期化される際にメッセージを出力するように変更されています (BZ#1298643)。

fjes がバージョン 1.2 に更新

fjes ドライバーがバージョン 1.2 に更新され、以前のバージョンに対するバグ修正および機能拡張が数多く追加されています (BZ#1388716)。

crash がバージョン 7.1.9 にリベース

今回の更新により、crash パッケージがアップストリームバージョン 7.1.9 にアップグレードされ、以前のバージョンに対するバグ修正および拡張機能が数多く追加されています (BZ#1393534)。

ユーザーネームスペースの完全サポート

Red Hat Enterprise Linux 7.2 でテクノロジープレビューとして提供されていたユーザーのネームスペース (userns) が完全サポートとなりました。これは、ホストとコンテナーの分離を強化することで、Linux コンテナーを実行しているサーバーの安全性を高めます。コンテナー管理者がホストでの管理操作を実行できなくなるので、安全性が高まります。
user.max_user_namespaces のデフォルト値はゼロです。これをゼロ以外の値に設定し、誤作動するアプリケーションを停止することができます。user.max_usernamespaces を 15000 などの大きな値に設定し、通常の操作で値を再度参照しなくてもよいようにすることが推奨されています (BZ#1340238)。

Intel Cache Allocation テクノロジーに対応

今回の更新により、Intel Cache Allocation テクノロジーのサポートが追加されています。このテクノロジーにより、ソフトウェアでキャッシュの割り当てをキャッシュの定義されたセットに限定することができます。定義されたサブセットは他のサブセットと重複することがあります (BZ#1288964)。

qat が最新のアップストリームバージョンに更新

qat ドライバーが最新のアップストリームバージョンにアップグレードされ、以前のバージョンに対するバグ修正および機能拡張が数多く追加されています。
主なバグ修正および機能拡張は以下の通りです。
  • Diffie-Hellman (DH) ソフトウェアのサポートを追加
  • Elliptic Curve Diffie–Hellman (ECDH) ソフトウェアのサポートを追加
  • curve P-192 および P-256 用の Error-correcting Code (ECC) ソフトウェアのサポートを追加 (BZ#1382849)

intel-cmt-cat パッケージの追加

このパッケージで提供される pqos ユーティリティーにより、管理者は L3 キャッシュの監視および操作を実行し、ユーティリティーとパフォーマンスを強化できるようになりました。
このツールはカーネル API をバイパスし、直接ハードウェアで作動します。これには事前に CPU ピニングがターゲットプロセスで使用されている必要があります (BZ#1315489)。

NVMe ドライバーがカーネルバージョン 4.10 にリベース

NVM-Express カーネルドライバーがアップストリームカーネルバージョン 4.10 に更新され、バグ修正および機能拡張が数多く追加されています。主な変更点は以下の通りです: 既存の RDMA NIC (Infiniband, RoCE, iWARP) および既存の NVMe SSD を使用する初期の NVMe-over-Fabrics トランスポート実装がドライバーに追加されましたが、これには DIF/DIX およびマルチパス化 (multipathing) のサポートは含まれていません (BZ#1383834)。

i40e が信頼されている/信頼されていない VF に対応

今回の更新により、信頼されている/信頼されていない仮想機能のサポートが i40e NIC ドライバーに追加されました (BZ#1384456)。

OVS 802.1ad のカーネルサポート (QinQ)

今回の更新により、カーネルで 802.1ad (QinQ) ネットワーク標準を有効にすることで 2 つの VLAN タグを Open vSwitch (OVS) で使用する機能が提供されます。今回の更新のユーザースペースの部分は openvswitch パッケージで提供されることに注意してください (BZ#1155732)。

共有メモリーおよび hugetlbfs のライブポストコピー移行サポート

今回の更新により、カーネルが強化され、ライブポストコピー移行で共有メモリーと hugetlbfs ファイルシステムをサポートできるようになりました。この機能を利用するには、以下を実行します。
  • ホストでの 2MiB huge page の設定
  • 2MiB huge page でのゲスト VM の設定
  • ゲスト VM およびメモリーをテストするための負荷テストアプリケーションの実行
  • ポストコピーによるゲスト VM のライブマイグレーション (BZ#1373606)。

新パッケージ: dbxtool

dbxtool パッケージは、UEFI Secure Boot DBX 更新を適用するためのコマンドラインユーティリティーと 1回限りの systemd サービスを提供します (BZ#1078990)。

MM KASLR を Linux カーネルで有効化

今回の更新により、Kernel Address Space Layout Randomization (KASLR) 機能が Linux カーネルのメモリー管理 (mm) セクションで有効になりました。その結果、KASLR はいくつかの mm セクションの仮想アドレスの開始アドレスのランダム化を許可します (Direct mapping/vmalloc/vmemmap セクション)。KASLR は、カーネル内部の場所についての知識に依存した不正使用の試みを防ぐセキュリティー機能です (BZ#1424943)。

mlx5 が SRIOV で信頼される VF に対応

今回の更新により、Single Root I/O Virtualization (SRIOV) で信頼される仮想機能 (VF) のサポートが mlx5 ドライバーに追加されました (BZ#1383280)。

4.9 カーネルの rwsem パフォーマンス更新がバックポート

今回の更新により、kernel Application Binary Interface (kABI) が維持される状態で、大半のアップストリーム R/W セマフォー (rwsem) のパフォーマンス関連の変更 (Linux カーネルバージョン 4.9 まで) が Linux カーネルにバックポートされました。
主な変更点は以下の通りです。
  • Writer の楽観的なスピン (Writer-optimistic spinning) により、ロックの待ち時間が削減すると共にロックのパフォーマンスが向上しました。
  • 内部のスピンロックを保持せずロック不要の waiter wakeup を使用 (BZ#1416924)。

getrandom が Linux カーネルに追加

今回の更新により、getrandom システム呼び出しが Linux カーネルに追加されます。その結果、ユーザースペースは /dev/urandom で使用される同じ非ブロックエントロピープール (non-blocking entoropy pool) のランダム度を要求し、ユーザースペースは 128 バイト以上のエントロピーがそのプールに蓄積されるまでブロックできます (BZ#1432218)。

XTS-AES キー検証が FIPS 140-2 要件に対応

今回の更新により、Red Hat Enterprise Linux を FIPS モードで実行し、カーネル XTS-AES キー検証を使用している際に、AES キーは tweak キーとは異なるキーとなるように強制されます。これにより FIPS 140-2 IG A.9 要件を満たしていることになります。さらに、ciphertext stealing (XTS) テストベクターを備えた XEX ベースの tweaked-codebook モードが省略されるようにマーキングされます (BZ#1314179)。