第10章 カーネル
AMD64 および Intel 64 システムの kdump
での複数の CPU サポート
AMD64 および Intel 64 システムでは、
kdump
カーネルクラッシュダンプメカニズムは、複数の CPU を有効にして起動できるようになりました。これにより、カーネルクラッシュダンプの作成時に高い入出力が原因で、maxcpus=1 または nr_cpus =1 カーネルオプションを使用して CPU が 1 つだけ有効であった場合に、Linux がデバイスに割り込みの割り当てに失敗する可能性がありました。この機能は、以前はテクノロジープレビューとして提供されていましたが、完全にサポートされるようになりました。
クラッシュカーネルで複数の CPU を有効にするには、カーネルコマンドラインで nr_cpus= X オプション(X はプロセッサー数)を提供します。
kpatchのサポート
kpatch ユーティリティーを使用すると、再起動せずにカーネルを動的にパッチを適用するために使用できるバイナリーカーネルパッチのコレクションを管理できます。以前は、kpatch はテクノロジープレビューとして提供され、Red Hat Customer Experience and Engagement チームの方向で使用されると完全にサポートされるようになりました。
ライブのカーネルパッチサポートの詳細は、https://access.redhat.com/solutions/2206511 を参照してください。
デフォルト値に返される SHMMAX および SHMALL カーネルパラメーター
以前は、
/usr/lib/sysctl.d/00-system.conf ファイルで設定されている kernel.shmmax
および kernel.
shmall
パラメーターの値が低くなっていました。そのため、SAP などの一部のアプリケーションが正しく機能できませんでした。適切ではないオーバーライドが削除され、十分な高いカーネルのデフォルトが使用されるようになりました。
Transparent Huge Page でメモリーの破損が発生しなくなる
透過的な Huge Page は、読み取りおよび書き込み操作中に正しく同期されませんでした。状況によっては、透過的な Huge Page が有効な場合にメモリーが破損することがありました。メモリーバリアが透過的な Huge Page 処理に追加され、このメモリー破損が発生しなくなりました。
SCSI LIO リベース
SCSI カーネルターゲット LIO が Linux-4.0.stable からリベースされました。これには、iSER 用の多数のバグ修正が含まれますが、XCOPY、WRITE SAME、および ATS コマンドのサポートも追加され、DIF データの整合性のサポートも含まれます。
makedumpfile は、最大 16 TB の物理メモリーを表す新しい sadump 形式をサポートするようになりました。
makedumpfile コマンドが、16 TB を超える物理メモリー領域を表すことができる新しい sadump 形式に対応するようになりました。これにより、makedumpfile のユーザーは、今後予定されている特定のサーバーモデルで sadump によって生成されるダンプファイルを 16 TB から読み取ることができます。
カーネルの削除またはアップグレードで警告が表示されなくなる
kABI 互換モジュールのシンボリックリンクを管理するために
kmod
によって使用される weak-modules スクリプトは、以前は、カーネルに関連付けられたファイルを削除する際に /lib/modules/<version>/weak-updates
ディレクトリーを削除していました。このディレクトリーは kernel パッケージによって所有され、これを削除すると、ファイルシステムと rpm
が期待する状態間で不整合が発生していました。これにより、カーネルがアップグレードまたは削除されるたびに警告が表示されました。
このスクリプトは、
weak-updates
ディレクトリーの内容を削除するように更新されましたが、ディレクトリー自体はそのままにし、警告が表示されなくなりました。
新規パッケージ:libevdev
Libevdev は、Linux カーネル入力イベントデバイスインターフェイス用の低レベルのライブラリーです。デバイス機能をクエリーし、デバイスからイベントを処理する安全なインターフェイスを提供します。xorg-x11-drv-evdev および xorg-x11-drv-synaptics の現行バージョンでは、このライブラリーを依存関係として必要になります。
tuned が no-daemon モードで実行できるようになりました。
以前は、Tuned はデーモンとしてのみ実行でき、Tuned デーモンのメモリーフットプリントが原因で小さなシステムのパフォーマンスに影響する可能性がありました。今回の更新で、常駐メモリーを必要としない no-daemon (1 shot)モードが Tuned に追加されました。このモードでは、Tuned 機能の多くがないため、no-daemon モードはデフォルトで無効になっています。
新規パッケージ:tuned-profiles-realtime
tuned-profiles-realtime パッケージが、Red Hat Enterprise Linux Server および Red Hat Enterprise Linux for Real Time に追加されました。これには、CPU の分離および IRQ チューニングを実行するために tuned ユーティリティーによって使用されるリアルタイムプロファイルが含まれます。プロファイルがアクティブになると、分離された CPU を指定する variable セクションを読み取り、それらの CPU コアから移動できるすべてのスレッドを移動します。
SCSI エラーメッセージがかなり解釈可能に
以前の printk ()関数への変更により、SCSI (Small Computer System Interface)エラーメッセージが複数の行に記録されていました。したがって、複数のエラーが異なるデバイス間で発生した場合、エラーメッセージを正しく解釈することが困難になる可能性がありました。今回の更新で、dev_printk ()オプションを使用して、SCSI エラーログコードが変更され、各エラーメッセージをエラーを生成したデバイスに関連付けるようになりました。
libata サブシステムおよびドライバーの更新
この機能拡張の更新により、libATA サブシステムおよびドライバーのバグ修正と機能拡張が数多く追加されました。
FCoE および DCB がアップグレード
Fibre Channel over Ethernet (FCoE)および Data Center Bridging (DCB)カーネルコンポーネントが最新のアップストリームバージョンにアップグレードされ、以前のバージョンに比べて多くのバグ修正と機能拡張が提供されています。
perf
のバージョン 4.1 へのリベース
perf パッケージがアップストリームバージョン 4.1 にアップグレードされ、以前のバージョンに対するパフォーマンスおよび安定性の修正および機能強化が数多く追加されました。特に、このリベースは、Intel Cache QoS Monitoring および AMD IBS Ops 機能を追加し、圧縮カーネルモジュールの Intel Xeon v4 のサポートを提供します。これは、パラメーター化されたイベントとブレークポイントの長さの指定をサポートします。さらに、--system-wide、top -z、top -w、trace --filter-pids などの多くのオプションが
perf
ツールに追加されました。
TPM 2.0 のサポート
今回の更新で、バージョン 2.0 準拠の Trusted Platform Module (TPM)デバイスのドライバーレベルのサポートが追加されました。
Turbostat
が正しい出力を提供
以前は、
cpu
で は
なく cpu0
の /dev/cpu/0/msr ファイルを読み取って、システムに MSR デバイスのサポートがあるかどうかを検出していました。これにより、CPU を無効にすると、CPU が turbostat 出力から削除されていました。このバグは修正され、turbostat ls コマンドを実行すると正しい出力が返されるようになりました。
Turbo
stat が Intel Xeon v5 プロセッサーに対応
今回の機能拡張により、Intel Xeon v5 プロセッサーのサポートが
turbostat
ツールに追加されました。
zswap
ツールは、zpool
API を使用します。
以前のバージョンでは、
zswap
ツールは zbud
を直接使用していました。これは、圧縮ページを 2:1 の比率で保存するストレージプールです(満杯時)。今回の更新で、zbud
または zsmalloc
プールのいずれかへのアクセスを提供する zpool
API が導入されました。zsmalloc
は圧縮ページを潜在的な密度で保存するため、非常に圧縮可能なページのメモリーがより回収されるようになりました。今回の更新で、zsmalloc
が /mm ドライバーにプロモートされ、zpool
が意図したとおりに機能するようになりました。
/proc/pid/cmdline ファイルの長さが無制限に
ps コマンドの /proc/pid/cmdline ファイルの長さの制限は、以前はカーネルで 4096 文字にハードコーディングされていました。今回の更新で、/proc/pid/cmdline の長さが無制限であることが保証されます。これは、長いコマンドライン引数を持つプロセスを一覧表示する場合に特に便利です。
dma_rmb および dma_wmb のサポートが提供されるようになりました。
今回の更新で、キャッシュの一貫性と読み取りの同期に、dma_wmb ()および dma_rmb ()の 2 つの新しいプリミティブが導入されました。この機能は、ドライバーで適切な用途に利用できます。
qib HCA ドライバー接続
SRP LOGIN ID の不一致により、SRP ターゲットは qib HCA デバイスドライバー経由で接続できませんでした。今回の更新でバグが修正され、前述の接続が正常に確立されるようになりました。
メモリー制限の増加
Red Hat Enterprise Linux 7.2 以降、AMD64 および Intel 64 システムで対応している最大メモリー制限が 6 TB から 12 TB に増えました。
dracut
の新しい変数
今回の更新で、カーネルコマンドラインで使用する
dracut
initramfs ジェネレーターの変数が追加されました。
rd.net.dhcp.retry=cnt
: このオプションを設定すると、dracut
ユーティリティーは失敗する前に DHCP cnt 回接続を試みます。デフォルトでは 1 回です。rd.net.timeout.dhcp=arg
: このオプションを設定すると、dhclient コマンドは-timeout arg
オプションで呼び出されます。rd.net.timeout.iflink=seconds
: リンクが表示されるまで待機する 秒数。デフォルトは 60 秒です。rd.net.timeout.ifup=seconds
: リンクがUP
状態になるまでの 秒数 待機します。デフォルトは 40 秒です。rd.net.timeout.route=seconds
: ルートがアップになるまでの 秒数 を待機します。デフォルトは 40 秒です。rd.net.timeout.ipv6dad=seconds
: IPv6 DAD が終了するまでの 秒数 を待機します。デフォルトは 50 秒です。rd.net.timeout.ipv6auto=seconds
: IPv6 自動アドレスが割り当てられるまで待機する 秒数。デフォルトは 40 秒です。rd.net.timeout.carrier=seconds
: サイバーが認識されるまでの 秒数 待機します。デフォルトは 5 秒です。