第5章 外部カーネルパラメーターへの重要な変更
この章では、システム管理者向けに、Red Hat Enterprise Linux 9.3 で配布されるカーネルの重要な変更点を概説します。これらの変更には、たとえば、追加または更新された proc
エントリー、sysctl
エントリー、および sysfs
のデフォルト値、ブートパラメーター、カーネル設定オプション、または注目すべき動作の変更などが含まれます。
新しいカーネルパラメーター
- amd_pstate=[X86]
このカーネルパラメーターを使用すると、AMD CPU のパフォーマンスを拡張できます。利用可能な値は次のとおりです。
-
disable
- サポートされているプロセッサーのデフォルトのスケーリングドライバーとしてamd_pstate
を有効にしないでください。 -
passive
- スケーリングドライバーとしてパッシブモードでamd_pstate
を使用します。このモードでは、自律的な選択は無効化されています。ドライバーは必要なパフォーマンスレベルを要求します。プラットフォームはそのパフォーマンスレベルに一致させようとします (保証されたパフォーマンスレベルによって満たされる場合)。 -
active
-amd_pstate_epp
ドライバーインスタンスをスケーリングドライバーとして使用します。ソフトウェアが CPPC ファームウェアに対してパフォーマンス (0x0) またはエネルギー効率 (0xff) に偏りたい場合、ドライバーはハードウェアにヒントを提供します。次に、CPPC 電力アルゴリズムがランタイムワークロードを計算し、リアルタイムコア周波数を調整します。 -
guided
- ガイド付き自律モードを有効にします。ドライバーは最小および最大のパフォーマンスレベルを要求し、プラットフォームはこの範囲内で現在のワークロードに適したパフォーマンスレベルを自律的に選択します。
-
- arm64.nosve=[ARM64]
- このカーネルパラメーターを使用すると、Scalable Vector Extension のサポートを無条件に無効化できます。
- arm64.nosme=[ARM64]
- このカーネルパラメーターを使用すると、Scalable Matrix Extension のサポートを無条件に無効にすることができます。
- gather_data_sampling=[X86,INTEL]
このカーネルパラメーターを使用すると、Gather Data Sampling (GDS) の軽減策を制御できます。
GDS は、ベクトルレジスターに以前に格納されていたデータへの特権のない投機的アクセスを許可するハードウェアの脆弱性です。
この問題は、更新されたマイクロコードではデフォルトで軽減されています。軽減策はパフォーマンスに影響を与える可能性がありますが、無効にすることができます。マイクロコード軽減策のないシステムが、軽減策として AVX を無効にしています。利用可能な値は次のとおりです。
-
force
- AVX を無効にして、マイクロコード軽減策を使用せずにシステムを軽減します。マイクロコード軽減策が存在する場合は効果がありません。バグのある AVX 列挙によりユーザー空間でクラッシュが発生することが知られています。 -
off
- GDS 軽減策を無効化します。
-
- nospectre_bhb=[ARM64]
- このカーネルパラメーターを使用すると、Spectre-BHB (ブランチ履歴インジェクション) の脆弱性に対するすべての軽減策を無効化できます。このオプションを使用すると、システムによりデータ漏洩が発生する可能性があります。
- trace_clock=[FTRACE]
このカーネルパラメーターを使用すると、起動時のイベントのトレースに使用されるクロックを設定できます。利用可能な値は次のとおりです。
-
local
- CPU ごとのタイムスタンプカウンターを使用します。 -
global
- イベントのタイムスタンプは CPU 全体で同期されます。ローカルクロックよりも遅い可能性がありますが、一部の競合状態には適しています。 -
counter
- イベントの単純なカウント (1、2、...)。インフラストラクチャーがイベントごとに複数回クロックを取得するため、一部のカウントがスキップされる可能性があることに注意してください。 -
uptime
- タイムスタンプとして jiffies を使用します。 -
perf
- perf が使用するのと同じクロックを使用します。 -
mono
- タイムスタンプにktime_get_mono_fast_ns()
関数を使用します。 -
mono_raw
- タイムスタンプにktime_get_raw_fast_ns()
関数を使用します。 boot
- タイムスタンプにktime_get_boot_fast_ns()
関数を使用します。アーキテクチャーによっては、さらに多くのクロックが追加される場合があります。詳細は、
Documentation/trace/ftrace.rst
を参照してください。
-
更新されたカーネルパラメーター
- cgroup.memory=[KNL]
このカーネルパラメーターを使用すると、
cgroup
メモリーコントローラーにオプションを渡すことができます。このパラメーターの形式は次のとおりです:
<string>
利用可能な値は次のとおりです。
-
nosocket
- ソケットメモリーアカウンティングを無効にします。 -
nokmem
- カーネルメモリーアカウンティングを無効にします。 -
[新規]
nobpf
- BPF メモリーアカウンティングを無効にします。
- hugetlb_free_vmemmap=[KNL]
このカーネルパラメーターは、ブート時に各 hugetlb ページに関連付けられた未使用の
vmemmap
ページを解放する機能を有効にします。このパラメーターが機能するには、CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP
設定オプションを有効にする必要があります。このパラメーターの形式は次のとおりです:
{ on | off (default) }
利用可能な値は次のとおりです。
-
on
- この機能を有効にします。 off
- この機能を無効にします。注記memory_hotplug.memmap_on_memory
モジュールパラメーターが有効な場合、vmemmap
ページは追加されたメモリーブロック自体から割り当てられる場合があります。この機能が有効になっている場合でも、これらのvmemmap
ページは最適化できません。追加されたメモリーブロック自体から割り当てられていない他のvmemmap
ページは影響を受けません。
-
- intel_pstate=[X86]
このカーネルパラメーターを CPU パフォーマンスのスケーリングに使用できます。利用可能な値は次のとおりです。
-
disable
- サポートされているプロセッサーのデフォルトのスケーリングドライバーとしてintel_pstate
を有効にしないでください。 -
[新規]
active
-intel_pstate
ドライバーを使用して、cpufreq
のスケーリングガバナー層をバイパスし、p-state 選択用の独自のアルゴリズムを提供します。アクティブモードでintel_pstate
によって提供される P-state 選択アルゴリズムには、powersave と performance の 2 つがあります。両方の動作方法は、プロセッサーで、そして場合によってはプロセッサーモデルで、ハードウェア管理 P-state (HWP) 機能が有効になっているかどうかによって異なります。 -
パッシブ
-intel_pstate
をスケーリングドライバーとして使用しますが、(内部ガバナーを有効にするのではなく) 汎用のcpufreq
ガバナーと連携して動作するように設定します。このモードは、ハードウェア管理の P-state (HWP) 機能と一緒に使用することはできません。 -
force
-acpi-cpufreq
を優先してintel_pstate
をデフォルトで禁止しているシステムで、これを有効化します。acpi-cpufreq
の代わりにintel_pstate
ドライバーを強制すると、OSPM に示される ACPI P-States 情報に依存するプラットフォーム機能 (温度制御や電力制限など) が無効になる可能性があるため、注意して使用する必要があります。このオプションは、intel_pstate
ドライバーでサポートされていないプロセッサーや、acpi-cpufreq
の代わりにpcc-cpufreq
を使用するプラットフォームでは機能しません。 -
no_hwp
- ハードウェア P ステートコントロール (HWP) が利用可能な場合は有効にしません。 -
hwp_only
- ハードウェア P state コントロール (HWP) が利用可能な場合は、それをサポートするシステムにのみintel_pstate
をロードします。 -
support_acpi_ppc
-ACPI _PPC
パフォーマンス制限を強制します。Fixed ACPI Description Table で優先電源管理プロファイルを "エンタープライズサーバー" または "パフォーマンスサーバー" として指定している場合、この機能はデフォルトでオンになります。 -
per_cpu_perf_limits
-cpufreq sysfs
インターフェイスを使用して、論理 CPU ごとの P-State パフォーマンス制御の制限を許可します。
-
- kvm-arm.mode=[KVM,ARM]
このカーネルパラメーターを使用すると、KVM/arm64 の動作モードの 1 つを選択できます。利用可能な値は次のとおりです。
-
none
- KVM を強制的に無効にします。 -
nvhe
- 標準の nVHE ベースのモード。protected ゲストはサポートされません。 -
protected
- 状態がホストからプライベートに保たれるゲストをサポートする nVHE ベースのモード。モードをprotected
に設定すると、ホストのkexec
と休止状態が無効になります。 [新規]
nested
- ネストされた仮想化をサポートする VHE ベースのモード。少なくとも ARMv8.3 ハードウェアが必要です。nested
オプションは実験的なものであるため、細心の注意を払って使用する必要があります。ハードウェアのサポートに基づいて、デフォルトは VHE/nVHE になります。
-
- libata.force=[LIBATA]
このカーネルパラメーターを使用すると、設定を強制できます。
形式は "[ID:]VAL" のコンマ区切りリストで、この場合の ID は PORT[.DEVICE] になります。PORT と DEVICE は、ポート、リンク、またはデバイスに一致する 10 進数です。基本的に、これは
libata
によってコンソールに出力される ATA ID 文字列と一致します。-
ID 部分全体が省略された場合は、最後の
PORT
とDEVICE
の値が使用されます。 - ID がまだ指定されていない場合、設定はすべてのポート、リンク、デバイスに適用されます。
-
DEVICE
値のみを省略した場合、パラメーターはポートとその背後にあるすべてのリンクおよびデバイスに適用されます。DEVICE 番号 0 は、最初のデバイスまたは PMP デバイスの背後にある最初のファンアウトリンクを選択します。ホストリンクは選択しません。DEVICE 番号 15 は、ホストリンクとそれに接続されているデバイスを選択します。 VAL は、強制する設定を指定します。曖昧さがない限り、ショートカット表記が許可されます。たとえば、1.5 と 1.5G はどちらも 1.5Gbps で動作します。
libata.force=
パラメーターを使用すると、次の設定を強制できます。- ケーブルタイプ: 40c、80c、short40c、unk、ign、sata。一致する PORT を持つ任意の ID が使用されます。
- SATA リンク速度制限: 1.5Gbps または 3.0Gbps。
- 転送モード: pio[0-7]、mwdma[0-4] および udma[0-7]。udma[/][16,25,33,44,66,100,133] 表記も使用可能です。
-
nohrst
、nosrst
、norst
: ハード、ソフト、および両方のリセットを抑制します。 -
rstonce
: ホットアンプラグリンクリカバリー中にリセットを 1 回だけ試行します。 -
新規
[no]dbdelay
: リンク PHY とデバイス存在検出をデバウンスする前に、追加の 200 ミリ秒の遅延を有効または無効にします。 -
[no]ncq
: NCQ をオンまたはオフにします。 -
[no]ncqtrim
: キューに入れられた DSM TRIM を有効または無効にします。 -
[新規]
[no]ncqati
: ATI チップセットの NCQ トリムを有効または無効にします。 -
[新規]
[no]trim
: TRIM を有効または無効 (キューから外す) にします。 -
[新規]
trim_zero
: TRIM コマンドがデータをゼロ化することを示します。 -
[新規]
max_trim_128m
: 最大トリムサイズ制限を 128M に設定します。 -
[新規]
[no]dma
: DMA 転送をオンまたはオフにします。 -
atapi_dmadir
: ATAPI DMADIR ブリッジのサポートを有効にします。 -
atapi_mod16_dma
: 16 バイトの倍数ではないコマンドに対する ATAPI DMA の使用を有効にします。 -
[no]dmalog
: ログにアクセスするための READ LOG DMA EXT コマンドの使用を有効または無効にします。 -
[no]iddevlog
: デバイスの識別データログへのアクセスを有効または無効にします。 -
[no]logdir
: 汎用ログディレクトリーへのアクセスを有効または無効にします。 -
[新規]
max_sec_128
: 転送サイズ制限を 128 セクターに設定します。 -
[新規]
max_sec_1024
: 転送サイズ制限を 1024 セクターに設定またはクリアします。 -
[新規]
max_sec_lba48
: 転送サイズ制限を 65535 セクターに設定またはクリアします。 -
[新規]
[no]lpm
: リンク電源管理を有効または無効にします。 -
[新規]
[no]setxfer
: 転送速度モード設定をスキップするかどうかを示します。 -
[新規]
[no]fua
: この機能をサポートするデバイスの FUA (Force Unit Access) サポートを無効または有効にします。 -
dump_id
: IDENTIFY データをダンプします。 disable
: このデバイスを無効にします。注記同じ属性を変更する設定が複数一致する場合は、最後のものが使用されます。
-
ID 部分全体が省略された場合は、最後の
- mitigations=[X86,PPC,S390,ARM64]
このカーネルパラメーターを使用すると、CPU の脆弱性に対するオプションの軽減策を制御できます。これは、既存のアーキテクチャー固有のオプションの集約となる、一連の、アーキテクチャーに依存しないオプションです。利用可能な値は次のとおりです。
off
- オプションの CPU 軽減策をすべて無効にします。これによりシステムパフォーマンスが向上しますが、ユーザーを複数の CPU の脆弱性にさらす可能性もあります。off
値は以下と同等です。- nokaslr の場合、kpti=0 [ARM64]
- gather_data_sampling=off [X86]
- kvm.nx_huge_pages=off [X86]
- l1tf=off [X86]
- mds=off [X86]
- mmio_stale_data=off [X86]
- no_entry_flush [PPC]
- no_uaccess_flush [PPC]
- nobp=0 [S390]
- nopti [X86,PPC]
- nospectre_bhb [ARM64]
- nospectre_v1 [X86,PPC]
- nospectre_v2 [X86,PPC,S390,ARM64]
- retbleed=off [X86]
- spec_store_bypass_disable=off [X86,PPC]
- spectre_v2_user=off [X86]
- srbds=off [X86,INTEL]
- ssbd=force-off [ARM64]
tsx_async_abort=off [X86]
例外:
kvm.nx_huge_pages=force
の場合、これはkvm.nx_huge_pages
には影響しません。
-
auto
(デフォルト) - すべての CPU の脆弱性を軽減しますが、脆弱であっても SMT を有効のままにします。これは、カーネルのアップグレードで SMT が自動的に無効化されないようにしたいユーザーや、SMT ベースの攻撃を他の方法で回避できるユーザーを対象にしています。 auto
、nosmt
- すべての CPU の脆弱性を軽減し、必要に応じて SMT を無効にします。これは、SMT が失われることを意味する場合でも、常に完全な軽減を求めるユーザーを対象としています。auto
、nosmt
オプションは以下と同等です。- l1tf=flush,nosmt [X86]
- mds=full,nosmt [X86]
- tsx_async_abort=full,nosmt [X86]
- mmio_stale_data=full,nosmt [X86]
- retbleed=auto,nosmt [X86]
- nomodeset
このカーネルパラメーターを使用すると、カーネル modesetting を無効にすることができます。ほとんどのシステムのファームウェアは表示モードをセットアップし、出力用のフレームバッファーメモリーを提供します。
nomodeset
を使用すると、事前初期化された出力を置き換える可能性がある場合、DRM ドライバーとfbdev
ドライバーはロードされません。システムフレームバッファーのみが使用可能になります。ドライバーは、表示モードの変更や高速レンダリングを実行しません。このパラメーターは、エラーのフォールバックとして、またはテストとデバッグに特に役立ちます。
- rdt=[HW,X86,RDT]
このカーネルパラメーターを使用すると、個々の RDT 機能をオンまたはオフにすることができます。リストには、
cmt
、mbmtotal
、mbmlocal
、l3cat
、l3cdp
、l2cat
、l2cdp
、mba
、smba
、bmec
が含まれます。たとえば、
cmt
をオンにしてmba
をオフにするには、次を使用します。rdt=cmt,!mba
- rodata=[KNL]
このカーネルパラメーターを使用すると、読み取り専用カーネルマッピングを無効にすることができます。利用可能なオプションは次のとおりです。
-
on
- 読み取り専用カーネルメモリーを読み取り専用としてマークします (デフォルト)。 -
off
- デバッグ用に読み取り専用カーネルメモリーを書き込み可能のままにします。 -
[新規]
full
- 読み取り専用カーネルメモリーとエイリアスを読み取り専用としてマークします [arm64]。
-
削除されたカーネルパラメーター
- nobats=[PPC]
- このカーネルパラメーターを使用すると、"クラシック" PPC コアでカーネル lowmem をマッピングするための BAT の使用を禁止できます。
- noltlbs=[PPC]
- このカーネルパラメーターを使用すると、PPC40x および PPC8xx でのカーネル lowmem マッピングで huge page および tlb エントリーの使用を禁止できます。
- swapaccount=[0|1]=[KNL]
-
このカーネルパラメーターを使用すると、メモリーリソースコントローラーでのスワップのアカウンティングを有効または無効にできます。詳細は、
Documentation/admin-guide/cgroup-v1/memory.rst
を参照してください。