第31章 カーネル
kdump が
nokaslr セットを使用して vmcore
をキャプチャーできるようになりました
nokaslr および crashkernel=xxM,high オプションを使用すると、nokaslr の実装のバグにより、
kdump
メカニズムが vmcore
ファイルをキャプチャーできなくなりました。この修正により、nokaslr が設定されている場合、カーネルの元のロードアドレスが返されるようになります。その結果、Kernel Address Space Layout Randomization (KASLR) がカーネルでコンパイルされているが、nokaslr で無効になっており、crashkernel パラメーターでハイメモリーが指定されている場合、kdump
は vmcore
を収集できるようになりました。(BZ#1467561)
MPOL_PREFERRED
ポリシーが Transparent Huge Pages (THP) で最適なパフォーマンスで動作するようになりました。
MPOL_PREFERRED
ポリシーを使用したノード 1 へのメモリーの割り当ては、Transparent Huge Pages (THP) が有効になっている場合には機能しませんでしたが、常にノード 0 のローカルノードにフォールバックしました。その結果、マルチノードシステムのワークロードパフォーマンスは大きな影響を受けました。バックポートされたパッチにより、非ローカルノードの MPOL_PREFERRED
ポリシーが確実に尊重され、システムパフォーマンスが最適な状態に戻ります。(BZ#1476709)
cgroups
のデッドロックが修正されました
特定の状況において、
cgroups
を使用すると、競合状態によりシステムのデッドロックが発生しました。この更新により、競合状態を修正するワークキューが追加され、デッドロックの発生が防止されます。(BZ#1476040)
DM シンプロビジョニングがループデバイス上で使用されている場合に、システムが応答しなくなる問題が修正されました。
以前は、ループデバイス上でデバイスマッパー (DM) シンプロビジョニングが使用されている場合、システムが応答しなくなることがありました。この更新により、メモリー割り当てで正しい gfp マスクが使用されるようになりました。その結果、上記の問題が発生しなくなりました。(BZ#1469247)
KASLR により、カーネルメモリーがミラーリングされていない領域にミラーリングされなくなりました
この更新より前は、指定されたミラーリングされたメモリー領域とカーネルアドレス空間レイアウトのランダム化 (KASLR) が有効になっていると、カーネルメモリーが非ミラー化メモリー領域に配置される可能性がありました。その結果、ミラーリングされていないメモリー領域は移動できなくなりました。この更新により、カーネルメモリーの場所がミラー領域から制限されます。その結果、KASLR は、ミラー化されていない領域へのカーネルメモリーのミラーリングを行わなくなりました。(BZ#1446684)
ユーザーは、/etc/kdump.conf
内の空白文字を削除するよう求めるメッセージを受け取るようになりました。
以前は、
/etc/kdump.conf
内の kdump
設定項目の前に 1 つ以上の先頭の空白文字があったため、kdump
設定が正しくなくなりました。この更新により、先頭の空白文字を削除するように求めるエラーメッセージがユーザーに返され、記載された動作が原因で kdump
が失敗することはなくなりました。(BZ#1476219)
IBM POWER Systems 上の大きな .bss
セグメントを持つアプリケーションでランダムなセグメンテーション違反が発生しなくなりました
以前は、IBM POWER Systems アーキテクチャーでは、大きな
.bss
セグメントを持つアプリケーションによってダイナミックリンカーが予期せず終了する可能性がありました。その結果、ダイナミックリンカーを使用して起動されたアプリケーションがランダムにセグメンテーションフォールトを引き起こす可能性があります。この更新により、ELF_ET_DYN_BASE
値は、このアーキテクチャー上の 64 ビット実装の場合は 4GB、32 ビット実装の場合は 4MB に増加しました。その結果、IBM POWER Systems アーキテクチャー上の大きな .bss
セグメントを持つアプリケーションは、ランダムなセグメンテーション違反を引き起こすことはありません。(BZ#1432288)
カーネルは負荷を計算するために過剰な量のリソースを消費しなくなりました
以前は、カーネルは空のタスクグループを含むすべてのタスクグループの負荷を計算していましたが、これにより、プロセスが多数あるシステムでは過剰な量のシステムリソースが消費されました。この更新により、カーネルが空のタスクグループの負荷を計算できなくなり、上記の状況でシステムの負荷が軽減されます。(BZ#1460641)
Cpuset は、オフラインイベントとオンラインイベントのペアの後に有効な CPU マスクを復元できるようになりました。
この更新より前は、プロセスをプロセッサーとメモリーノードのサブセットに限定する
cpuset
ファイルシステムでは、cpuset で使用される CPU に対して 1 つのビットマップセットが有効になっていました。その結果、CPU オフラインイベントに続いて CPU オンラインイベントが発生し、影響を受ける CPU がすべての非ルート CPU セットから削除されました。今回の更新により、cpuset で 2 つのビットマップセットが有効になりました。その結果、cpuset cgroup のマウント時に -o cpuset_v2_mode マウントフラグが使用されている限り、cpuset は CPU オンラインまたはオフラインイベントを適切に追跡して、有効な CPU マスクを復元できるようになりました。(BZ#947004)
/proc/pid/maps
へのアクセスが大幅に高速化されました
以前は、
stack:TID
アノテーションでスタック仮想メモリー領域 (VMA) のタスクを見つける時間は、システム内のアクティブなタスクの数に直接比例していました。その結果、システム内で実行されているタスクが増えるほど、スタック VMA に正しくアノテーションを付けるのが遅くなり、/proc/pid/maps
ファイルへのアクセスが遅くなります。この更新により、stack:TID
アノテーションは使用されなくなりました。その結果、特にシステム内で多数のタスクが実行されている場合、/proc/[pid]/maps
へのアクセスが大幅に高速化されました。(BZ#1448534)
fadump が再起動に失敗しなくなりました
以前は、fadump は DLPAR メモリーの削除操作中に停止し、その後再起動を開始しました。特定の状況下で、fadump が再起動に失敗しました。今回の更新で、上記の問題は発生しなくなりました。(BZ#1438695)
makedumpfile
がページテーブルエントリーを正しくマップできるようになりました
HP ハードウェア上で実行されている一部の仮想マシンでは、仮想マシンのメモリーの物理アドレスを正しく取得できず、
makedumpfile
ユーティリティーが次のようなエラーで失敗しました。
readmem: Can't convert a virtual address(ffffffffb21158a0) to physical address
この問題は、
file_size
が正しく計算されず、readpage_elf()
関数が正しく動作しないために発生しました。この更新により、これらのシステムでの file_size
の計算が修正され、vmcore
ファイルが収集できるようになり、makedumpfile --mem-usage コマンドで vmcore
サイズが正しく推定されるようになりました。(BZ#1448861)
非対称グループは、重複するスケジューリングドメインに使用されます。
以前は、特定の Non-Uniform Memory Access (NUMA) システム上でグループ構築をスケジュールすると、スレッドの移行に悪影響を及ぼしていました。この状況は、タスクを隣接する NUMA ノードに移行できない場合にパフォーマンスに悪影響を及ぼしました。今回の更新では、問題を解決するために、スケジューリングドメインの重複に非対称グループが使用されます。(BZ#1373534)
KASLR により、システムの起動中にカーネルが応答しなくなることがなくなりました
以前は、カーネルアドレス空間レイアウトのランダム化 (KASLR) 機能が有効になっている場合、特定の SGI UV システムでカーネルが応答しなくなることがありました。その結果、システムは起動できなくなりました。この更新により、カーネルは、KASLR が有効な場合に直接マッピングのサイズを調整しようとしなくなりました。その結果、システムは正常に起動し、前述の問題は発生しなくなります。(BZ#1457046)
ファンクションキーを使用してワコムタブレットを取り外しても、オペレーティングシステムが再起動しなくなりました
一部の Wacom タブレットを Red Hat Enterprise Linux 7.4 上で実行中の GNOME セッションから切断すると、オペレーティングシステムが 5 秒以内に再起動しました。この問題は、最初は Wacom モデル 27QHD デバイスで確認されました。この更新により、オペレーティングシステムを再起動せずにタブレットを取り外すことができるようになります。(BZ#1462363)
後でそのメモリー cgroup を削除するときに、memory.kmem.limit_in_bytes
を設定しても問題が発生しなくなりました
以前は、cgroup の
memory.kmem.limit_in_bytes
パラメーターを設定すると、後でそのメモリー cgroup が削除されたときに問題が発生しました。この問題は、メモリー cgroup kmem
キャッシュをマージしようとしたときに発生しましたが、適切に処理されませんでした。この更新では、この機能を使用しなくなった現在のアップストリームコードをバックポートすることにより、メモリー cgroups の kmem
キャッシュマージが無効になります。(BZ#1442618)
sha1-avx2
暗号化アルゴリズムが再び有効になりました
リードビヨンドエラー (コードが境界外のメモリーを読み取ろうとしたとき) のため、
sha1-avx2
暗号化アルゴリズムが無効になりました。この更新により、問題は解決され、管理者は sha1-avx2
を使用できるようになりました。(BZ#1469200)
VXLAN がバージョン 4.14 にリベースされました
VXLAN ドライバーはアップストリームバージョン 4.14 にアップグレードされ、以前のバージョンに比べて多くのバグが修正されています。注目すべき変更点は次のとおりです。
- トンネルの送信元 IP アドレスはルート検索で使用されます。
- VXLAN Generic Protocol Extension (VXLAN-GPE) は、User Datagram Protocol (UDP) ポートに正しい Internet Assigned Numbers Authority (IANA) を使用するようになりました。
VNI 0xffffff
値を使用できるようになりました。- トンネル削除時の競合状態が修正されました。
- 静的転送データベース (fdb) エントリーが Linux ブリッジと一貫して動作するようになりました。(BZ#1467280)