第5章 外部カーネルパラメーターへの重要な変更

この章では、システム管理者向けに、Red Hat Enterprise Linux 9.2 で配布されるカーネルの重要な変更点の概要を提供します。変更には、たとえば、proc エントリー、sysctl および sysfs のデフォルト値、ブートパラメーター、カーネル設定オプション、または重要な動作の変更などが含まれます。

新しいカーネルパラメーター

nomodeset

このカーネルパラメーターを使用すると、カーネルモード設定を無効にすることができます。DRM ドライバーは、表示モードの変更や高速レンダリングを実行しません。システムフレームバッファーがファームウェアまたはブートローダーによって設定されている場合、システムフレームバッファーのみが使用可能になります。

nomodeset は、フォールバックとして、またはテストとデバッグに役立ちます。

printk.console_no_auto_verbose

このカーネルパラメーターを使用すると、oops、パニック、または lockdep で検出された問題 (ロックデバッグがオンの場合のみ) でのコンソールログレベルの上昇を無効にすることができます。シリアルコンソールでボーレートが低いセットアップを除き、より多くのデバッグ情報を提供するには、このパラメーターを 0 に設定します。

  • 形式: <bool>
  • デフォルトは 0 (auto_verbose が有効)
rcupdate.rcu_exp_cpu_stall_timeout=[KNL]

このカーネルパラメーターを使用すると、RCU CPU ストールの緊急警告メッセージのタイムアウトを設定できます。値はミリ秒単位で、最大許容値は 21000 ミリ秒です。

この値は、アーキテクチャーのタイマーティック解像度に合わせて調整されることに注意してください。これをゼロに設定すると、rcupdate.rcu_cpu_stall_timeout の値が使用されます (秒からミリ秒への変換後)。

rcupdate.rcu_task_stall_info=[KNL]

このパラメーターを使用すると、RCU タスクストール情報メッセージの初期タイムアウトを数秒で設定できます。これは、10 分間待つのに十分な忍耐力がない人に問題の兆候を示すものです。情報メッセージは、特定の猶予期間中、ストール警告メッセージの前のみに出力されます。ゼロ以下の値を指定すると無効になります。

  • デフォルトは 10 秒です。
  • 値の変更は、次の猶予期間が始まるまで有効になりません。
rcupdate.rcu_task_stall_info_mult=[KNL]

このパラメーターは、特定の RCU タスク猶予期間における連続する RCU タスクストール情報メッセージ間の時間間隔の乗数です。この値は 1 〜 10 に固定されます。

デフォルト値は 3 です。そのため、最初の情報メッセージは猶予期間に入って 10 秒で出力され、2 番目は 40 秒で、3 番目は 160 秒で出力され、600 秒でのストール警告によって 640 秒で 4 番目のメッセージが出力されなくなります。

smp.csd_lock_timeout=[KNL]

このパラメーターを使用すると、smp_call_function() とその仲間が CPU が CSD ロックを解放するまで待機する時間をミリ秒単位で指定できます。これは、長時間にわたって割り込みを無効にする CPU に関連するバグを診断するときに役立ちます。

  • デフォルトは 5,000 ミリ秒です。
  • 値をゼロに設定すると、この機能が無効になります。
  • この機能は、csdlock_debugkernel パラメーターを使用してより効率的に無効にすることができます。
srcutree.big_cpu_lim=[KNL]

このパラメーターを使用すると、srcu_struct 構造体が srcu_node 配列を即座に割り当てるように、大規模システムを設定する CPU の数を指定できます。

  • デフォルトは 128 です。
  • srcutree.convert_to_big の下位 4 ビットが 3 に等しい場合のみ、有効になります (ブート時に決定)。
srcutree.convert_to_big=[KNL]

このパラメーターを使用すると、SRCU ツリー srcu_struct 構造体を大きな形式、つまり rcu_node ツリーに変換する条件を指定できます。

  • 0: まったくなし。
  • 1: init_srcu_struct() 時。
  • 2: rcutorture で決定されたとき。
  • 3: 起動時に決定 (デフォルト)。
  • 0x1X: 競合が多い場合は、上記に加えます。

    いずれの場合も、srcu_node ツリーのサイズは、コンパイル時の CONFIG_NR_CPUS ではなく、実際の実行時の CPU 数 (nr_cpu_ids) に基づいて設定されます。

srcutree.srcu_max_nodelay=[KNL]
このパラメーターを使用すると、SRCU 猶予期間ワーカースレッドが遅延ゼロで再スケジュールされる、1 秒あたりの遅延なしインスタンスの数を指定できます。この制限を超えると、ワーカースレッドは 1 時間のスリープ遅延を伴って再スケジュールされます。
srcutree.srcu_max_nodelay_phase=[KNL]
このパラメーターを使用すると、猶予期間ごとのフェーズ、リーダーの非スリープポーリングの数を指定できます。この制限を超えると、猶予期間ワーカースレッドは、猶予期間フェーズの間、リーダーの各再スキャンの間に 1 ジフイのスリープ遅延を設けて再スケジュールされます。
srcutree.srcu_retry_check_delay=[KNL]
このパラメーターを使用すると、リーダーの各非スリープポーリング間の非スリープ遅延のマイクロ秒数を指定できます。
srcutree.small_contention_lim=[KNL]

このパラメーターを使用すると、srcu_struct 構造体の大きな形式への変換を開始する前に許容される 1 ジフィーあたりの更新側競合イベントの数を指定できます。

注記

競合ベースの変換を行うには、srcutree.convert_to_big の値に 0x10 ビットが設定されている必要があります。

更新されたカーネルパラメーター

crashkernel=size[KMG][@offset[KMG]]

[KNL] kexec を使用すると、Linux はパニック時にクラッシュカーネルに切り替えることができます。このパラメーターは、そのカーネルイメージの物理メモリー領域 [offset, offset + size] を予約します。@offset を省略すると、適切なオフセットが自動的に選択されます。

[KNL, X86-64, ARM64] 最初に 4G 未満の領域を選択し、@offset が指定されていない場合は 4G を超える予約領域にフォールバックします。

詳細については、Documentation/admin-guide/kdump/kdump.rst を参照してください。

crashkernel=size[KMG],low
  • [KNL, X86-64, ARM64] このパラメーターを使用すると、2 番目のカーネルに 4G 未満の低範囲を指定できます。crashkernel=X,high が渡されると、ある程度の低メモリーが必要になります。たとえば、swiotlb には少なくとも 64M+32K の低メモリーが必要です。また、32 ビットデバイスの DMA バッファーが不足しないようにするために十分な追加の低メモリーも必要です。カーネルは、4G 未満のデフォルトサイズのメモリーを自動的に割り当てようとします。デフォルトサイズはプラットフォームによって異なります。

    • x86: max(swiotlb_size_or_default() + 8MiB, 256MiB)
    • arm64: 128MiB

      0: 低割り当てを無効にします。

      crashkernel=X,high が使用されない場合、または予約されたメモリーが 4G 未満の場合、このパラメーターは無視されます。

  • [KNL, ARM64] このパラメーターを使用すると、クラッシュダンプカーネルの DMA ゾーンの下限範囲を指定できます。

    crashkernel=X,high が使用されていない場合、このパラメーターは無視されます。

deferred_probe_timeout=[KNL]

このパラメーターを使用すると、遅延プローブのタイムアウトを秒単位で設定して、依存関係のプローブの待機を放棄できます。オプトインされている特定の依存関係 (サブシステムまたはドライバー) のみは無視されます。

タイムアウトを 0 にすると、initcall の終了時にタイムアウトになります。タイムアウトが経過していない場合、ドライバーの登録が成功するたびにオプションが再起動されます。このオプションは、再試行後に遅延プローブリストに残っているデバイスもダンプします。

driver_async_probe=[KNL]

このパラメーターを使用すると、非同期的にプローブされるドライバー名のリストを作成できます。* (アスタリスク) はすべてのドライバー名に一致します。

  • * が指定されている場合、リストされている残りのドライバー名は * に一致しないものになります。

    形式: <driver_name1>,<driver_name2>…​

hugetlb_cma=[HW,CMA]

このパラメーターを使用すると、巨大なヒュージページの割り当てに使用される CMA 領域のサイズを指定できます。または、ノード形式を使用して、ノードごとの CMA エリアのサイズを指定します。

形式: nn[KMGTPE] or (node format) <node>:nn[KMGTPE][,<node>:nn[KMGTPE]]

指定されたサイズの CMA 領域を予約し、CMA アロケーターを使用して巨大なヒュージページを割り当てます。有効にすると、起動時の巨大な hugepage の割り当てがスキップされます。

hugepages=[HW]

このパラメーターを使用すると、起動時に割り当てる HugeTLB ページの数を指定できます。

  • hugepagesz に続く場合は、割り当てる hugepagesz のページ数を指定します。
  • これがコマンドラインの最初の HugeTLB パラメーターである場合、デフォルトの巨大ページサイズに割り当てるページ数を指定します。
  • ノード形式を使用する場合、ノードごとに割り当てるページ数を指定できます。

    Documentation/admin-guide/mm/hugetlbpage.rst も参照してください。

    形式: <integer> or (node format) <node>:<integer>[,<node>:<integer>]

hugetlb_free_vmemmap=[KNL]

このパラメーターを使用するには、CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP を有効にする必要があります。hugetlb のヘビーユーザーがさらにメモリーを解放できるようにします (2MB hugetlb ページごとに 7 * PAGE_SIZE)。

  • 形式: { [oO][Nn]/Y/y/1 | [oO][Ff]/N/n/0 (default) }
  • [oO][Nn]/Y/y/1: 機能を有効にする
  • [oO][Ff]/N/n/0: 機能を無効にする

    CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON=y で構築されており、

    デフォルトは on です。

    注記

    このパラメーターは、memory_hotplug.memmap_on_memory と互換性がありません。両方のパラメーターが有効な場合、hugetlb_free_vmemmapmemory_hotplug.memmap_on_memory より優先されます。

ivrs_ioapic=[HW,X86-64]

このパラメーターは、IVRS ACPI テーブルで提供される IOAPIC-ID <-> DEVICE-ID マッピングをオーバーライドします。

デフォルトでは、PCI セグメントは 0 であり、省略できます。以下に例を示します。

  • IOAPIC-ID 10 進数 10 を PCI デバイス 00:14.0 にマッピングするには、パラメーターを次のように記述します。

    ivrs_ioapic[10]=00:14.0
  • IOAPIC-ID 10 進数 10 を PCI セグメント 0x1 および PCI デバイス 00:14.0 にマッピングするには、パラメーターを次のように記述します。

    ivrs_ioapic[10]=0001:00:14.0
ivrs_hpet=[HW,X86-64]

このパラメーターは、IVRS ACPI テーブルで提供される HPET-ID <-> DEVICE-ID マッピングをオーバーライドします。

デフォルトでは、PCI セグメントは 0 であり、省略できます。以下に例を示します。

  • HPET-ID 10 進数 0 を PCI デバイス 00:14.0 にマッピングするには、パラメーターを次のように記述します。

    ivrs_hpet[0]=00:14.0
  • HPET-ID 10 進数 10 を PCI セグメント 0x1 および PCI デバイス 00:14.0 にマッピングするには、パラメーターを次のように記述します。

    ivrs_ioapic[10]=0001:00:14.0
ivrs_acpihid=[HW,X86-64]

このパラメーターは、IVRS ACPI テーブルで提供される ACPI-HID:UID <-> DEVICE-ID マッピングをオーバーライドします。

たとえば、UART-HID:UID AMD0020:0 を PCI セグメント 0x1 および PCI デバイス ID 00:14.5 にマッピングするには、パラメーターを次のように記述します。

ivrs_acpihid[0001:00:14.5]=AMD0020:0

デフォルトでは、PCI セグメントは 0 であり、省略できます。たとえば、PCI デバイス 00:14.5 の場合、パラメーターを次のように記述します。

ivrs_acpihid[00:14.5]=AMD0020:0
kvm.eager_page_split=[KVM,X86]

このパラメーターを使用すると、KVM がダーティーロギング中にすべての巨大ページを積極的に分割しようとするかどうかを制御できます。

積極的なページ分割により、巨大なページを遅延分割するために必要となる書き込み保護エラーと MMU ロック競合が排除され、vCPU 実行の中断が軽減されます。書き込みをほとんど実行しない VM ワークロード、または VM メモリーの小さな領域のみに書き込みを行う VM ワークロードでは、Eager Page Splitting を無効にして、巨大なページを引き続き読み取りに使用できるようにすると、メリットが得られる場合があります。

積極的なページ分割の動作は、KVM_DIRTY_LOG_INITIALLY_SET が有効か無効かによって異なります。

  • 無効にすると、その mems スロットでダーティーロギングが有効になったときに、mems スロット内のすべての巨大ページが積極的に分割されます。
  • 有効にすると、KVM_CLEAR_DIRTY ioctl 中に、クリアされるページのみに、積極的なページ分割が実行されます。

    積極的なページ分割は、kvm.tdp_mmu=Y の場合のみ、サポートされます。

    デフォルトは Y (オン) です。

kvm-arm.mode=[KVM,ARM]

このパラメーターを使用すると、KVM/arm64 の動作モードの 1 つを選択できます。

  • none: KVM を強制的に無効にします。
  • nvhe: 標準の nVHE ベースのモード。保護されたゲストはサポートされません。
  • protected: 状態がホストからプライベートに保たれるゲストをサポートする nVHE ベースのモード。

    ハードウェアのサポートに基づいて、デフォルトは VHE/nVHE になります。

nosmep=[X86,PPC64s]

このパラメーターを使用すると、プロセッサーでサポートされている場合でも SMEP (スーパーバイザーモード実行防止) を無効にすることができます。

形式: pci=option[,option…​] [PCI] various_PCI_subsystem_options

ここでの一部のオプションは、特定のデバイスまたはデバイスセット (<pci_dev>) 上で動作します。これは、以下のいずれかの形式で指定されます。

[<domain>:]<bus>:<dev>.<func>[/<dev>.<func>]*
pci:<vendor>:<device>[:<subvendor>:<subdevice>]
注記
  • 最初の形式は、新しいハードウェアが挿入された場合、マザーボードのファームウェアが変更された場合、または他のカーネルパラメーターによる変更により変更される可能性がある PCI バス/デバイス/機能アドレスを指定します。ドメインを指定しないと、ゼロになります。オプションで、複数のデバイスおよび機能アドレスを介したデバイスへのパスをベースアドレスの後に指定できます (これにより、再番号付けの問題に対してより堅牢になります)。
  • 2 つ目の形式は、設定領域から ID を使用してデバイスを選択します。これは、システム内の複数のデバイスに一致する可能性があります。
  • earlydump: カーネルが何かを変更する前に PCI 設定スペースをダンプします。
  • off: [X86] PCI バスをプローブしません。
  • bios: [X86-32] PCI BIOS の使用を強制します。ハードウェアに直接アクセスしません。マシンに非標準の PCI ホストブリッジがある場合は、これを使用します。
  • nobios: [X86-32] PCI BIOS の使用を禁止し、ハードウェアへの直接アクセス方法のみが許可されます。起動時にクラッシュが発生し、BIOS が原因であると思われる場合は、これを使用します。
  • conf1: [X86] PCI コンフィギュレーションアクセスメカニズム 1 (IO ポート 0xCF8 のコンフィギュレーションアドレス、IO ポート 0xCFC のデータ、両方とも 32 ビット) の使用を強制します。
  • conf2: [X86] PCI コンフィギュレーションアクセスメカニズム 2 の使用を強制します (IO ポート 0xCF8 はこの機能用の 8 ビットポートであり、IO ポート 0xCFA も 8 ビットで、バス番号を設定します。その後、設定スペースにはポート 0xC000-0xCFFF を通じてアクセスされます。

  • noaer: [PCIE] PCIEAER カーネル設定パラメーターが有効な場合、このカーネルブートオプションを使用して、PCIE 高度なエラーレポートの使用を無効にすることができます。
  • nodomains: [PCI] 複数の PCI ルートドメイン (ACPI 用語では PCI セグメントとも呼ばれます) のサポートを無効にします。
  • nommconf: [X86] PCI 設定での MMCONFIG の使用を無効にします。
  • check_enable_amd_mmconf: [X86] AMD ファミリー 10h CPU 上の PCI 設定スペースへの適切に設定された MMIO アクセスをチェックして有効にします。
  • nomsi: [MSI] PCI_MSI カーネル設定パラメーターが有効な場合、このカーネルブートオプションを使用して、システム全体で MSI 割り込みの使用を無効にすることができます。
  • noioapicquirk: [APIC] すべてのブート割り込みの Quirk を無効にします。ブート IRQ を有効にしておくための安全オプション。これは決して必要ではありません。
  • ioapicreroute: [APIC] ブート IRQ を無効にできないブリッジのプライマリー IO-APIC へのブート IRQ の再ルーティングを有効にします。これにより、システムが IRQ をマスクする場合のスプリアス IRQ の原因が修正されます。
  • noioapicreroute [APIC] ブート IRQ を無効にできないチップセットに接続する IRQ と同等のブート IRQ を使用する回避策を無効にします。ioapicreroute の逆。
  • biosirq: [X86-32] PCI BIOS 呼び出しを使用して割り込みルーティングテーブルを取得します。これらの呼び出しはいくつかのマシンでバグがあることが知られており、使用するとマシンがハングしますが、他のコンピューターではこれが割り込みルーティングテーブルを取得する唯一の方法です。カーネルが IRQ を割り当てられない場合、またはマザーボード上のセカンダリー PCI バスを検出できない場合は、このオプションを試してください。
  • rom: [X86] 拡張 ROM にアドレス空間を割り当てます。特定のデバイスは ROM と他のリソース間でアドレスデコーダを共有するため、使用には注意してください。
  • norom: [X86] BIOS にアドレス範囲が割り当てられていない拡張 ROM にはアドレス空間を割り当てないでください。
  • nobar: [X86] BIOS によって割り当てられていない BAR にアドレス空間を割り当てないでください。
  • irqmask=0xMMMM: [X86] PCI デバイスへの自動割り当てを許可する IRQ のビットマスクを設定します。この方法で、カーネルに ISA カードの IRQ を除外させることができます。
  • pirqaddr=0xAAAAA: [X86] PIRQ テーブル (通常 BIOS によって生成される) の物理アドレスが F0000h ~ 100000h の 範囲外の場合に指定します。
  • lastbus=N: [X86] バス #N を介してすべてのバスをスキャンします。カーネルがセカンダリーバスを見つけられず、どのバスであるかをカーネルに明示的に伝えたい場合に便利です。
  • assign-busses: [X86] すべての PCI バス番号を常に自分で割り当て、ファームウェアが行ったものを上書きします。
  • usepirqmask: [X86] BIOS $PIR テーブルに保存されている可能な IRQ マスクを尊重します。これは、BIOS が壊れている一部のシステム、特に一部の HP Pavilion N5400 および Omnibook XE3 ノートブックで必要です。ACPI IRQ ルーティングが有効な場合、これは効果がありません。
  • noacpi: [X86] IRQ ルーティングまたは PCI スキャンに ACPI を使用しないでください。
  • use_crs: [X86] ACPI からの PCI ホストブリッジウィンドウ情報を使用します。2008 年以降の BIOS では、これはデフォルトで有効になっています。これを使用する必要がある場合は、バグを報告してください。
  • nocrs: [X86] ACPI からの PCI ホストブリッジウィンドウを無視します。これを使用する必要がある場合は、バグを報告してください。
  • use_e820: [X86] E820 予約を使用して、PCI ホストブリッジウィンドウの一部を除外します。これは、ホストブリッジ _CRS メソッドにおける BIOS の欠陥に対する回避策です。これを使用する必要がある場合は、バグを linux-pci@vger.kernel.org に報告してください。
  • no_e820: [X86] PCI ホストブリッジウィンドウの E820 予約を無視します。これは最新のハードウェアのデフォルトです。これを使用する必要がある場合は、バグを linux-pci@vger.kernel.org に報告してください。
  • routeirq: すべての PCI デバイスに対して IRQ ルーティングを実行します。これは通常、pci_enable_device() で行われるため、このオプションは、それを呼び出さない壊れたドライバーに対する一時的な回避策です。
  • Skip_isa_align: [X86] IO 開始アドレスを調整しないため、より多くの PCI カードを処理できます。
  • oearly: [X86] 初期のタイプ 1 スキャンを実行しません。これは、一部のデバイスの設定スペースが読み取られるときにマシンがチェックする壊れたボードで役立つ可能性があります。ただし、さまざまな回避策が無効になっており、一部の IOMMU ドライバーは機能しません。
  • bfsort: PCI デバイスを幅優先順にソートします。この並べ替えは、古い (⇐ 2.4) カーネルに対応するデバイスの順番となります。
  • nobfsort: PCI デバイスを幅優先順にソートしません。
  • pcie_bus_tune_off: PCIe MPS (最大ペイロードサイズ) チューニングを無効にし、BIOS で設定された MPS のデフォルトを使用します。
  • pcie_bus_safe: すべてのデバイスの MPS をルートコンプレックス以下のすべてのデバイスでサポートされる最大値に設定します。
  • pcie_bus_perf: デバイスの MPS をその親バスに基づいて最大許容 MPS に設定します。また、最高のパフォーマンスを得るために、MRRS (最大読み取り要求サイズ) をサポートされている最大の値 (デバイスまたはバスがサポートできる MPS を超えない値) に設定します。
  • pcie_bus_peer2peer: すべてのデバイスの MPS を 128B に設定します。これはすべてのデバイスがサポートすることが保証されています。この設定により、デバイスの任意のペア間でピアツーピア DMA が可能になりますが、パフォーマンスは低下する可能性があります。これにより、ホットアドされたデバイスが動作することも保証されます。
  • cbiosize=nn[KMG]: CardBus ブリッジの IO ウィンドウ用に予約される固定量のバススペース。デフォルト値は 256 バイト です。
  • cbmemsize=nn[KMG]: CardBus ブリッジのメモリーウィンドウ用に予約される固定量のバススペース。デフォルト値は 64 メガバイト です。
  • resource_alignment=

    • 形式: [<order of align>@]<pci_dev>[; …​]
    • アライメント、およびアライメントされたメモリーリソースを再割り当てするデバイスを指定します。デバイスの指定方法は上記で説明しました。<order of align> が指定されていない場合は、PAGE_SIZE がアライメントとして使用されます。リソースウィンドウを拡張する必要がある場合は、PCI-PCI ブリッジを指定できます。デバイスの複数のインスタンスのアライメントを指定するには、PCI ベンダー、デバイス、サブベンダー、およびサブデバイスを指定できます (4096 バイトアライメントの場合は、12@pci:8086:9c22:103c:198f など)。
  • ecrc=: PCIe ECRC (トランザクション層のエンドツーエンド CRC チェック) を有効/無効にします。

    • bios: BIOS/ファームウェア設定を使用します。これはデフォルトになります。
    • off: ECRC をオフにします。
    • on: ECRC をオンにします。
  • hpiosize=nn[KMG]: ホットプラグブリッジの IO ウィンドウ用に予約される固定量のバススペース。デフォルトサイズは 256 バイト です。
  • hpmmiosize=nn[KMG]: ホットプラグブリッジの MMIO ウィンドウ用に予約される固定量のバススペース。デフォルトサイズは 2 メガバイト です。
  • hpmmioprefsize=nn[KMG]: ホットプラグブリッジの MMIO_PREF ウィンドウ用に予約される固定量のバススペース。デフォルトサイズは 2 メガバイト です。
  • hpmemsize=nn[KMG]: ホットプラグブリッジの MMIO および MMIO_PREF ウィンドウ用に予約される固定量のバススペース。デフォルトサイズは 2 メガバイト です。
  • hpbussize=nn: ホットプラグブリッジの下のバス用に予約される追加バス番号の最小数。デフォルトは 1 です。
  • realloc=: BIOS による割り当てが小さすぎてすべての子デバイスに必要なリソースを収容できない場合に、PCI ブリッジリソースの再割り当てを有効または無効にします。

    • off: リアロックをオフにします。
    • on: リアロックをオンにします。
  • realloc: realloc=on と同じです。
  • noari: PCIe ARI を使用しません。
  • noats: [PCIE, Intel-IOMMU, AMD-IOMMU] PCIe ATS (および IOMMU デバイス IOTLB) を使用しません。
  • pcie_scan_all: 考えられるすべての PCIe デバイスをスキャンします。それ以外の場合は、PCIe ダウンストリームポートの下にある 1 つのデバイスのみが検索されます。
  • big_root_window: AMD CPU 上の PCIe ルートコンプレックスに大きな 64 ビットメモリーウィンドウを追加してみます。一部の GFX ハードウェアは、すべての VRAM にアクセスできるように BAR のサイズを変更できます。ウィンドウの追加には若干の危険が伴います (報告されていないデバイスと競合する可能性があります)。そのため、これによりカーネルがテイントされます。
  • disable_acs_redir=<pci_dev>[; …​]: 1 つ以上の PCI デバイスを (上で指定した形式で) セミコロンで区切って指定します。指定された各デバイスでは、PCI ACS リダイレクト機能が強制的にオフになり、アップストリームを強制することなくブリッジを介したデバイス間の P2P トラフィックが許可されます。注記: これにより、デバイス間の分離が解除され、より多くのデバイスが IOMMU グループに追加される可能性があります。
  • force_floating: [S390] フローティング割り込みの使用を強制します。
  • nomio: [S390] MIO 命令を使用しません。
  • norid: S390 RID フィールドを無視し、PCI 機能ごとに 1 つの PCI ドメインの使用を強制します。
rcupdate.rcu_cpu_stall_timeout=[KNL]
RCU CPU ストール警告メッセージのタイムアウトを設定します。値は秒単位で、最大許容値は 300 秒です。
rcupdate.rcu_task_stall_timeout=[KNL]

このパラメーターを使用すると、RCU タスクストール警告メッセージのタイムアウトを数秒で設定できます。ゼロ以下の値を指定すると無効になります。

デフォルトは 10 分です。

値の変更は、次の猶予期間が始まるまで有効になりません。

retbleed=[X86]

このパラメーターを使用すると、RETBleed (リターン命令による任意の投機的コード実行) 脆弱性の緩和策を制御できます。

AMD ベースの UNRET および IBPB の緩和策だけでは、兄弟スレッドが他の兄弟スレッドの予測に影響を与えることを防ぐことはできません。そのため、STIBP はそれをサポートするプロセッサーで使用され、STIBP をサポートしないプロセッサーでは SMT を緩和します。

  • オフ - 緩和策なし
  • auto - 緩和策を自動的に選択します。
  • auto,nosmt - 緩和策を自動的に選択し、完全な緩和策に必要な場合は SMT を無効にします (STIBP のない Zen1 以前のみ)。
  • ibpb - AMD では、基本ブロック境界での短い推測ウィンドウも緩和します。安全で最高のパフォーマンスの衝撃。STIBP が存在する場合は、それも有効になります。Intel には適していません。
  • ibpb,nosmt - 上記の ibpb と似ていますが、STIBP が使用できない場合は SMT を無効にします。これは、STIBP を持たないシステムの代替手段です。
  • unret - トレーニングされていないリターンサンクを強制的に有効にします。AMD f15h-f17h ベースのシステムのみで有効です。
  • unret,nosmt - unret と似ていますが、STIBP が利用できない場合は SMT を無効にします。これは、STIBP を持たないシステムの代替手段です。

    auto を選択すると、CPU に応じて実行時に緩和策が選択されます。

    このオプションを指定しないことは、retbleed=auto と同等です。

swiotlb=[ARM,IA-64,PPC,MIPS,X86]

形式: { <int> [,<int>] | force | noforce }

  • <int> - I/O TLB スラブの数。
  • <int> - コンマの後の 2 番目の整数。独自のロックを持つ swiotlb エリアの数。2 の累乗に切り上げられます。
  • force - カーネルによって自動的に使用されない場合でも、バウンスバッファーの使用を強制します。
  • noforce - バウンスバッファーを使用しません (デバッグ用)。

新しい sysctl パラメーター

kernel.nmi_wd_lpm_factor (PPC only)

この係数は、LPM 中に NMI ウォッチドッグタイムアウトを計算するときに watchdog_thresh に追加されるパーセンテージを表します。ソフトロックアップのタイムアウトは影響を受けません。この係数を使用して、NMI ウォッチドッグタイムアウトに適用します (nmi_watchdog が 1 に設定されている場合のみ)。

  • 0 は変化がないことを意味します。
  • デフォルトは 200 です。これは、NMI ウォッチドッグが 30 秒 に設定されていることを意味します (watchdog_thresh10 に等しいことに基づく)。
net.core.txrehash

このパラメーターを使用すると、SO_TXREHASH オプションが SOCK_TXREHASH_DEFAULT に設定されている (つまり、setsockopt によってオーバーライドされていない) 場合に、リスニングソケットでのデフォルトのハッシュ再考動作を制御できます。

  • 1 (デフォルト) に設定すると、リスニングソケットでハッシュの再考が実行されます。
  • 0 に設定すると、ハッシュの再考は実行されません。
net.sctp.reconf_enable - BOOLEAN

この拡張機能を使用すると、RFC6525 で規定されている Stream Reconfiguration 機能の拡張機能を有効または無効にすることができます。この拡張機能はストリームをリセットする機能を提供し、Outcoming/Incoming SSN ResetSSN/TSN Reset、および Add Outcoming/Incoming Streams のパラメーターを含みます。

  • 1: 拡張機能を有効にします。
  • 0: 拡張機能を無効にします。
  • デフォルトは 0 です。
net.sctp.intl_enable - BOOLEAN

この拡張機能を使用すると、RFC8260 で規定されている User Message Interleaving 機能の拡張機能を有効または無効にすることができます。この拡張機能により、異なるストリームで送信されるユーザーメッセージのインターリーブが可能になります。この機能を有効にすると、ピアでもサポートされている場合、I-DATA チャンクが DATA チャンクを置き換えてユーザーメッセージを伝送します。この機能を使用するには、このオプションを 1 に設定し、ソケットオプション SCTP_FRAGMENT_INTERLEAVE2 に、SCTP_INTERLEAVING_SUPPORTED1 に設定する必要があることに注意してください。

  • 1: 拡張機能を有効にします。
  • 0: 拡張機能を無効にします。
  • デフォルトは 0 です。
net.sctp.ecn_enable - BOOLEAN

この拡張機能を使用すると、SCTP による明示的輻輳通知 (ECN) の使用を制御できます。TCP と同様、ECN は、SCTP 接続の両端がサポートを示している場合のみ、使用されます。この機能は、サポートしているルーターがパケットをドロップする前に輻輳を通知できるようにすることで、輻輳による損失を回避するのに役立ちます。

  • 1: ECN を有効にします。
  • 0: ECN を無効にします。
  • デフォルトは 1 です。
vm.hugetlb_optimize_vmemmap

このノブは、memory_hotplug.memmap_on_memory カーネルパラメーターが設定されている場合、または 構造体ページ (include/linux/mm_types.h で定義されている構造体) のサイズが 2 のべき乗ではない場合には使用できません (異常なシステム設定によりこの結果が生じる可能性があります)。

各 HugeTLB ページに関連付けられた vmemmap ページを最適化する機能を有効 (1 に設定) または無効 (0 に設定) できます。

  • 有効にすると、バディアロケーターからの後続の HugeTLB ページ割り当ての vmemmap ページが最適化されます (2MB HugeTLB ページあたり 7 ページ、1GB HugeTLB ページあたり 4095 ページ)。一方、すでに割り当てられている HugeTLB ページは最適化されません。これらの最適化された HugeTLB ページが HugeTLB プールからバディアロケーターに解放されると、その範囲を表す vmemmap ページを再度マッピングし、以前に破棄された vmemmap ページを再度再配置する必要があります。
  • HugeTLB ページが即興で割り当てられるユースケースの場合 (たとえば、nr_hugepages で HugeTLB ページを明示的に割り当てるのではなく、nr_overcommit_hugepages のみを設定すると、オーバーコミットされた HugeTLB ページは即興で割り当てられます)、HugeTLB プールから取得するのではなく、HugeTLB プールとバディアロケーター間の HugeTLB ページの割り当てまたは解放によるオーバーヘッドの増加 (以前よりも約 2 倍遅い) に対するメモリーの節約という利点を比較検討する必要があります。注意すべきもう 1 つの動作は、システムのメモリー負荷が高い場合、vmemmap ページの割り当てが失敗する可能性があるため、ユーザーが HugeTLB ページを HugeTLB プールからバディアロケータに解放できなくなる可能性があることです。システムがこの状況に遭遇する場合は、後で再試行する必要があります。
  • 無効にすると、バディアロケータからの後続の HugeTLB ページの割り当ての vmemmap ページは最適化されなくなり、バディアロケータからの割り当て時の余分なオーバーヘッドがなくなりますが、すでに最適化された HugeTLB ページは影響を受けません。最適化された HugeTLB ページがないことを確認したい場合は、まず nr_hugepages0 に設定してから、これを無効にします。nr_hugepages0 を書き込むと、使用中 の HugeTLB ページが余剰ページになることに注意してください。したがって、これらの余剰ページは、使用されなくなるまで最適化され続けます。システム内に最適化されたページがなくなる前に、余剰ページが解放されるまで待つ必要があります。
net.core.rps_default_mask
新しく作成されたネットワークデバイスで使用されるデフォルトの RPS CPU マスク。空のマスクは、デフォルトで RPS が無効になっていることを意味します。

変更された sysctl パラメーター

kernel.numa_balancing

このパラメーターを使用すると、自動ページフォールトベースの NUMA メモリーバランシングを有効、無効、および設定できます。メモリーは、頻繁にアクセスするノードに自動的に移動されます。設定する値は、次の論理和をとった結果になります。

= =================================
0 NUMA_BALANCING_DISABLED
1 NUMA_BALANCING_NORMAL
2 NUMA_BALANCING_MEMORY_TIERING
= =================================

または、NUMA_BLANCING_NORMAL を使用して、異なる NUMA ノード間でのページ配置を最適化し、リモートアクセスを削減します。NUMA マシンでは、CPU がリモートメモリーにアクセスするかどうかについてパフォーマンスのペナルティーがあります。この機能が有効になっている場合、カーネルは定期的にページのマッピングを解除し、後でページフォールトをトラップすることによって、どのタスクスレッドがメモリーにアクセスしているかをサンプリングします。ページフォールトの発生時に、アクセス中のデータをローカルメモリーノードに移行する必要があるかどうかが決定されます。

または、NUMA_BLANCING_MEMORY_TIERING を使用して、異なるタイプのメモリー (異なる NUMA ノードとして表される) 間でページ配置を最適化し、高速メモリーにホットページを配置します。これもアンマッピングとページフォールトに基づいて実装されています。

net.ipv6.route.max_size
ガベージコレクションがキャッシュされたルートエントリーを管理するため、これは ipv6 では非推奨になりました。
net.sctp.sctp_wmem

この調整パラメーターは以前、何の効果もないことが文書化されていました。現在は、最初の値 (min) のみが使用され、defaultmax は無視されます。

  • min: SCTP ソケットで使用できる送信バッファーの最小サイズ。適度なメモリー負荷下でも、各 SCTP ソケットに対して保証されます (関連付けは保証されません)。
  • デフォルトは 4K です。