Zircon 核心指令列選項

所有機器通用的選項

aslr.disable=<bool>

預設: false

如果設定這個選項,系統就不會使用位址空間版面配置 隨機化。

aslr.entropy_bits=<uint8_t>

預設: 0x1e

針對使用 ASLR 的位址空間,這項配置可控管 IP 中 熵越多,就會產生稀疏位址空間,並使用 為頁面表格分配更多記憶體有效值的範圍介於 0 至 36 之間。

kernel.cprng-reseed-require.hw-rng=&lt;bool&gt;

預設: false

啟用後,如果硬體 RNG 無法在重新轉播時失敗,CPRNG 就會造成恐慌。

kernel.cprng-reseed-require.jitterentropy=&lt;bool&gt;

預設: false

啟用後,如果抖動器在重新尋找時故障,CPRNG 就會恐慌。

kernel.cprng-seed-require.hw-rng=&lt;bool&gt;

預設: false

啟用後,如果 HW RNG 在初始種子時失敗,CPRNG 會發生恐慌。

kernel.cprng-disable.jitterentropy=&lt;bool&gt;

預設: false

決定是否使用抖動器做為測試用的熵來源

kernel.cprng-disable.hw-rng=&lt;bool&gt;

預設: false

決定是否將 HW RNG 用做熵來源 (用於測試)

kernel.cprng-seed-require.jitterentropy=&lt;bool&gt;

預設: false

啟用時,如果抖動器無法初始種子,CPRNG 就會造成恐慌。

kernel.cprng-seed-require.cmdline=&lt;bool&gt;

預設: false

啟用之後,如果您未提供核心指令的熵輸入內容 CPRNG 恐慌

kernel.entropy-mixin=&lt;hexadecimal&gt;

提供混入核心 CPRNG 的熵。值必須是 小寫十六進制數字字串。

系統會盡快從記憶體中清除原始值,且 都會遮蓋到所有診斷結果中。

kernel.jitterentropy.bs=<uint32_t>

預設: 0x40

設定 [記憶體區塊大小]參數值。時基誤差 執行記憶體作業 (為了增加 CPU 作業時間的變化)、記憶體 會以這個大小的區塊存取

kernel.jitterentropy.bc=<uint32_t>

預設: 0x200

設定「記憶體區塊數量」參數值。抖動時 正在執行記憶體作業 (為了增加 CPU 作業時間的變化), 控制存取的區塊數量 (大小為 kernel.jitterentropy.bs)。

kernel.jitterentropy.ml=<uint32_t>

預設: 0x20

設定「記憶體迴圈」參數值。時基誤差 (為了增加 CPU 時間碼的變化), 控制重複記憶體存取常式的次數。這個參數 只有在 kernel.jitterentropy.raw 為 true 時才會使用。如果 參數是 0,如果 kernel.jitterentropy.rawfalse,則 抖動器會選擇循環次數,隨機選擇。

kernel.jitterentropy.ll=<uint32_t>

預設: 0x1

設定「LFSR 迴圈」參數值。時間 時基誤差正在執行耗用大量 CPU 的 LFSR 作業,以便增加 ),控制 LFSR 常式重複的次數。這個 參數只有在 kernel.jitterentropy.raw 為 true 時才能使用。如果 這個參數是 0,如果 kernel.jitterentropy.rawfalse,則 抖動器會選擇循環次數,隨機選擇。

kernel.jitterentropy.raw=&lt;bool&gt;

預設: true

設為 true 時,抖動熵收集器會傳回原始 未處理的樣本設為 false 時,系統會透過下列方式處理原始樣本 時基誤差,產生更接近隨機隨機狀態的輸出資料。注意事項 即使設為 False,CPRNG 仍會重新處理樣本 時基誤差內部的處理程序,也有多餘的情況。

kernel.lockup-detector.critical-section-threshold-ms=&lt;uint64_t&gt;

預設: 0xbb8

特定關鍵區塊的 CPU 停留在 就會發出 KERNEL OOPS。

另請參閱k lockup status鎖定偵測工具

如果設為 0,系統會停用重要區塊鎖定偵測功能。

當 kernel.lockup-detector.heartbeat-period-ms 為 0 時,關鍵區段鎖定 偵測功能已停用

kernel.lockup-detector.critical-section-fatal-threshold-ms=&lt;uint64_t&gt;

預設: 0x2710

當 CPU 停留在指定的重要區塊時 系統會產生當機記錄,並重新啟動,表示發生 重新啟動 SOFTWARE_WATCHDOG 的原因。

另請參閱k lockup status鎖定偵測工具

如果設為 0,系統會停用產生及重新啟動重要部分當機記錄的功能。

當 kernel.lockup-detector.heartbeat-period-ms 為 0 時,關鍵區段鎖定 偵測功能已停用

kernel.lockup-detector.heartbeat-period-ms=&lt;uint64_t&gt;

預設: 0x3e8

次要 CPU 透過核心計時器發出活動訊號的頻率。這個 值應夠大,不會影響系統效能,但應是 未達到的心率門檻值1000 是合理的值。

另請參閱鎖定偵測工具一文。

如果值為 0,則會停用活動訊號偵測功能。

kernel.lockup-detector.heartbeat-age-threshold-ms=&lt;uint64_t&gt;

預設: 0xbb8

次要 CPU 最後一次活動訊號的時間上限,即判定為 電腦則會鎖定這個值應大於心跳週期,但最小值 才不會錯過短期的鎖定圖文標誌活動3000 是合理的值。

另請參閱鎖定偵測工具一文。

如果值為 0,則會停用活動訊號偵測功能。

kernel.lockup-detector.heartbeat-age-fatal-threshold-ms=&lt;uint64_t&gt;

預設: 0x2710

CPU 最後一次活動訊號的時間上限,即視為鎖定。 觸發系統發出的當機記錄,指出重新啟動的原因 SOFTWARE_WATCHDOG,然後重新啟動。

另請參閱鎖定偵測工具一文。

如果設為 0,系統會停用活動訊號產生並重新啟動功能。

kernel.lockup-detector.diagnostic-query-timeout-ms=&lt;uint64_t&gt;

預設: 0x64

嘗試從 但沒有回應。

如果值為 0,則無法查詢診斷資料。

kernel.oom.behavior=[重新啟動 |jobkill]

預設: reboot

這個選項可用於設定核心行為, 遇到記憶體不足 (OOM) 問題。有效值為 jobkill,以及 reboot

如果設為 jobkill,當遇到 OOM 時,核心會嘗試終止 並使 ZX_PROP_JOB_KILL_ON_OOM 位元設定復原記憶體。

如果設為 reboot,當遇到 OOM 時,核心會發出記憶體不足的信號 事件 (請參閱 zx_system_get_event()),等待一段時間,然後重新啟動 有些人會將 Cloud Storage 視為檔案系統 但實際上不是等候期長度是由 「kernel.oom.reboot-timeout-ms」啟動選項。

kernel.oom.reboot-timeout-ms=&lt;uint32_t&gt;

預設: 0xc350

這個選項會設定核心在重新啟動前需等待多久 才有可能遇到記憶體不足 (OOM) 的情況。這個選項 只有在 kernel.oom.behavior 設為 reboot 時才會產生關聯。

kernel.mexec-force-high-ramdisk=&lt;bool&gt;

預設: false

這個選項僅供測試使用。如果設為 true,系統會強制使用 Mexec syscall 將下列核心的 ramdisk 放在高記憶體中 (64 位元位址空間,>= 4 GiB 的偏移值)。

kernel.mexec-pci-shutdown=&lt;bool&gt;

預設: true

如果為 false,此選項會在呼叫 Mexec 時讓 PCI 裝置持續執行。

kernel.oom.enable=&lt;bool&gt;

預設: true

這個選項會開啟記憶體不足 (OOM) 核心執行緒,藉此終止 當 PMM 採用以下方法時,系統 (根據kernel.oom.behavior) 會處理或重新啟動系統 少於 kernel.oom.outofmemory-mb 可用記憶體。

可使用 k pmm oom 指令手動觸發 OOM, 可用記憶體低於 kernel.oom.outofmemory-mb 門檻一個 您可以使用 k pmm oom <rate> 提供分配率,其中 <rate> 是以 MB 為單位。 這會導致系統每秒分配指定的記憶體量 很適合用來觀察記憶體壓力狀態轉換

請參閱 kernel.oom.outofmemory-mbkernel.oom.critical-mbkernel.oom.warning-mbzx_system_get_event(),進一步瞭解 記憶體壓力狀態轉換

您可以使用下列指令查詢目前的記憶體可用性狀態。 k mem dump

kernel.oom.outofmemory-mb=<uint64_t>

預設: 0x32

這個選項可指定記憶體不足 (OOM) 的可用記憶體門檻 會觸發「記憶體不足」事件,並開始終止程序, 重新啟動系統。

kernel.oom.strict-mb=<uint64_t>

預設: 0x96

這個選項可指定記憶體不足的可用記憶體門檻 (OOM) 執行緒會觸發重大記憶體壓力事件,表示 資源應會釋放記憶體

kernel.oom.warning-mb=<uint64_t>

預設: 0x12c

這個選項可指定記憶體不足的可用記憶體門檻 (OOM) 執行緒會觸發警告記憶體壓力事件,表示 就應降低記憶體配置速度

kernel.oom.debounce-mb=<uint64_t>

預設: 0x1

這個選項會指定計算記憶體時使用的記憶體去彈值 根據可用記憶體門檻計算的壓力狀態 (kernel.oom.outofmemory-mbkernel.oom.critical-mbkernel.oom.warning-mb)。記憶體可用性狀態之間的轉換 除非可用記憶體達到一定數量,否則系統不會離開狀態 超過該狀態的 kernel.oom.debounce-mb

舉例來說,假設 kernel.oom.critical-mb 設為 100 MB 並將 kernel.oom.debounce-mb 設為 5 MB。如果我們目前有 90 MB 的免費空間 系統處於「重要」狀態 這時可用記憶體必須 增加至少 105 MB (100 MB + 5 MB),以便讓狀態變更 警告關鍵。

kernel.oom.evict-at-warning=&lt;bool&gt;

預設: false

這個選項會在警告壓力狀態時觸發移除檔案頁面 除了預設的行為外,系統會在重大事件和 OOM 時將這類行為剔除 州。

kernel.oom.evict-continuous=&lt;bool&gt;

預設: false

這個選項會將核心撤銷設定設為在背景持續執行,以嘗試 避免系統的記憶體壓力 記憶體壓力水平轉換

kernel.oom.hysteresis-seconds=<uint64_t>

預設: 0xa

這個選項會指定記憶體之間的幕後作業間隔 (以秒為單位) 壓力狀態轉換。請注意,繡球體僅適用於 從可用記憶體較少的狀態轉換為可用記憶體更多的狀態; 反向轉換則不會延遲。

kernel.oom.imminent-oom-delta-mb=&lt;uint64_t&gt;

預設: 0xa

這個選項用於指定高於記憶體不足門檻值的差異 (以 MB 為單位), 系統就會發出「記憶體不足」事件的信號。這個信號的作用是 會擷取接近 OOM 的診斷記憶體資訊,因為擷取狀態 可能無法在 OOM 中完成

舉例來說,如果 kernel.oom.outofmemory-mb 設為 50,且 kernel.oom.imminent-oom-delta-mb 設為 20,會在 70 MB (也就是 50 MB + 20 MB) 時收到「記憶體不足」事件的信號 可用記憶體不足,則「記憶體不足」則會以 50 MB 可用記憶體發出訊號。

kernel.oom.trigger-on-alloc-failure=&lt;bool&gt;

預設: true

這個選項會控制使用者能否因 記憶體會觸發 OOM 回應

kernel.phys.next=&lt;string&gt;

預設: physboot

系統將載入核心儲存檔案系統 physload 中的檔案名稱。

kernel.phys.verbose=&lt;bool&gt;

預設: true

這會控制在核心早期登入序列主控台的程度 啟動階段;如果為 false,系統只會執行錯誤相關記錄,

這個選項的其中一個公用程式是執行基準測試:同步、單一執行緒 截至目前為止,UART 寫入成本可能相對成本 (10 個半形字元/毫秒) 則建議將這類作業排除在 更全面地衡量時間

kernel.phys.backtrace-max=<uint32_t>

預設: 0x40

如果核心早期啟動階段發生當機情形,系統可能會輸出 序列主控台上的反向追蹤;模型會根據影格 指標、使用陰影呼叫堆疊時,也會是平行返回追蹤 產生 3D 物件每次回溯追蹤顯示的上限為 影格速率限制(大多數的反向追蹤會在使用者按下前最外層的影格結束 。將限制設為 0 張無上限的列印畫面, 影格指標返回追蹤可能會進入無限迴圈,包含一些錯誤。

kernel.phys.print-stack-max=&lt;uint32_t&gt;

預設: 0x400

如果核心的早期啟動階段發生當機情形,系統可能會輸出堆疊 從序列控制台獲取內容這是堆疊的大小上限 (以位元組為單位) 很容易被傾印實際傾印量取決於堆疊深度。 每個 16 個位元組的堆疊會以一行顯示,長度上限為 75 個半形字元。

kernel.ppb.borrow-in-supplypages=&lt;bool&gt;

預設: false

這會控制 zx_pager_supply_pages 是否能藉用已借用的網頁。如果為 true zx_pager_supply_pages 會將所提供的網頁內容複製到借用的頁面 (如果 有任何已貸款的頁面,且這些頁面都未借貸 否則 zx_pager_supply_pages 則會將提供的頁面安裝到 VMO。如果 false,zx_pager_supply_pages 會將提供的頁面安裝到 VMO (無論是否已借貸)。

kernel.ppb.borrow-on-mru=&lt;bool&gt;

預設: false

這項政策可控管是否要以已借出的網頁替代未瀏覽的網頁 ( 有任何貸款頁面) 移至 MRU 佇列。在正常情況下,這件事會稍微延後完成,但在 OOM 附近 撤銷程序後,應位於 MRU 佇列的所有頁面都會移至 MRU 佇列。

kernel.ppb.loan=&lt;bool&gt;

預設: false

這項設定可控管是否要在連續 VMO 上啟用 ZX_VMO_OP_DECOMMIT。如果 true,在連續 VMO 上執行解構作業可以正常運作並傳回 ZX_OK。這些網頁 向系統的其他成員借款。如果為 false,請解構 會傳回 ZX_ERR_NOT_SUPPORTED。

kernel.ppb.replace-on-unloan=&lt;bool&gt;

預設: false

這會控管將借出的網頁重新提交至原始網頁時的處理方式 連續 VMO如果傳回 false,則會從提供該貸款的網頁中移除 導致系統要求錯誤的內容如為 true,則會複製內容。 並用來取代已借出的網頁。

kernel.render-dlog-to-crashlog=&lt;bool&gt;

預設: false

設為 true 時,系統會將近期的核心偵錯紀錄 附加在核心錯誤期間產生的當機記錄中,以協助偵錯。

kernel.serial=[無 |舊版 |qemu |&lt;type&gt;,&lt;base&gt;,&lt;irq&gt;]

預設: none

以便控管使用的序列埠。如有提供,則會覆寫序號 系統開機資料中描述的通訊埠核心偵錯序列埠是 預留的資源,且不能在核心外部使用。

如果設為「無」,核心偵錯序列埠就會停用,且不會 ,因此可在核心外部使用預設序列埠。

設定字串格式如下: MMIO UART: 「kernel.serial=UART_MODEL,MMIO_ADDR,IRQ,FLAGS」 PIO UART: 「kernel.serial=UART_MODEL,IOPORT,IRQ」

kernel.vdso.always_use_next=&lt;bool&gt;

預設: false

如果設定此選項,核心將提供「next」使用者空間vDSO 而非「穩定」vDSO 為預設的 vDSO。

vdso.ticks_get_force_syscall=&lt;bool&gt;

預設: false

如果設定此選項,系統將強制 zx_ticks_get vDSO 呼叫為 true syscall,即使從伺服器存取硬體循環計數器暫存器 使用者模式

vdso.clock_get_force_syscall=&lt;bool&gt;

預設: false

如果設定此選項,zx_clock_get_monotoniczx_clock_get_boot vDSO 呼叫將 強製成為真正的系統呼叫,而不只是執行刻度轉換 計數器。

kernel.userpager.overtime_wait_seconds=&lt;uint64_t&gt;

預設: 0x14

這個選項會設定使用者呼叫器故障前可能的封鎖時間長度 並將資訊訊息輸出至偵錯記錄檔 繼續等待如果值為 0,表示等候時間一律不會視為等待時間 時間。

kernel.userpager.overtime_timeout_seconds=&lt;uint64_t&gt;

預設: 0x12c

這個選項會設定使用者呼叫器故障前可能的封鎖時間長度 已取消。如果是硬體頁面錯誤,錯誤執行緒會終止,並顯示 嚴重例外狀況。如果是 syscall 觸發的軟體頁面錯誤, Syscall 將會失敗,並顯示 ZX_ERR_TIMED_OUT。0 表示網頁 因為逾時而無法取消。

kernel.heap-max-size-mb=&lt;uint64_t&gt;

預設: 0x800

這個選項會設定堆積的大小上限。只有核心才會生效 並使用虛擬堆積進行編譯

kernel.heap.alloc_fill_threshold=&lt;uint64_t&gt;

預設: 0x0

設定之後,核心堆積會填滿低於這個大小 (以位元組為單位) 的配置。

kernel.bufferchain.reserve-pages=<uint64_t>

預設: 0x20

指定每個 CPU 要保留給緩衝區鏈分配的頁面數量 (管道訊息)。如果 但系統負載增加時,就需要使用更多記憶體 閒置中。

TODO(https://fxbug.dev/42147481):決定要防止這個值的上限 因此會耗用太多記憶體

kernel.bypass-debuglog=&lt;bool&gt;

預設: false

啟用後,系統會強制輸出至控制台,而不是緩衝處理。原因 都有 compile 參數和 cmdline 參數 ,強制進入控制台。 編譯切換設定會覆寫 cmdline 參數 (如果兩者同時存在)。 請注意,編譯切換按鈕和 cmdline 參數都會有副作用 就是要停用 irq 驅動 uart Tx

kernel.debug_uart_poll=&lt;bool&gt;

預設: false

如果為 true,系統會定期輪詢 UART 並將內容轉送至控制台。

kernel.enable-debugging-syscalls=&lt;bool&gt;

預設: false

如果停用,特定偵錯相關 sys 呼叫將失敗,並顯示 ZX_ERR_NOT_SUPPORTED。這兩種網址格式分別如下:

  • zx_debug_send_command()
  • zx_ktrace_control()
  • zx_ktrace_init()
  • zx_ktrace_read()
  • zx_ktrace_write()
  • zx_mtrace_control()
  • 附有 ZX_PROP_PROCESS_HW_TRACE_CONTEXT_IDzx_object_get_property()
  • zx_process_write_memory()
  • zx_system_mexec()
  • zx_system_mexec_payload_get()
  • zx_thread_write_state() (使用 ZX_THREAD_STATE_DEBUG_REGS 種類時)。
  • 附有 ZX_VMO_OP_CACHE_INVALIDATEzx_vmo_op_range()

kernel.enable-serial-syscalls=[false |是 |(僅限輸出)]

預設: false

如果 falsezx_debug_read()zx_debug_write() 都會失敗,並傳回以下值: ZX_ERR_NOT_SUPPORTED

如果 output-onlyzx_debug_read() 將因 ZX_ERR_NOT_SUPPORTED 失敗,但 zx_debug_write() 正常運作。

true 時,兩者皆可正常運作。

kernel.entropy-test.src=[hw_rng |時基誤差]

預設: hw_rng

執行熵收集器品質測試時,請使用系統提供的熵來源。 除非核心是使用 ENABLE_ENTROPY_COLLECTOR_TEST=1 建構,否則系統會忽略此選項。

kernel.entropy-test.len=<uint64_t>

預設: 0x100000

執行熵收集器品質測試時,請先收集 一個位元組

定義 ENTROPY_COLLECTOR_TEST_MAXLEN 這類的值即可提高最大值。

kernel.force-watchdog-disabled=&lt;bool&gt;

預設: false

設定完成後,系統會嘗試停用所有已啟動的硬體監控計時器計時器 並盡快傳送到系統啟動載入程式傳送。 假設系統啟動載入程式提供了足夠的資訊,以瞭解如何停用 WDT 檔案。

kernel.halt-on-panic=&lt;bool&gt;

預設: false

如果設定這個選項,系統會停止執行核心錯誤 而不是重新啟動如要啟用「停在恐慌」時,請傳遞核心指令列 引數 kernel.halt-on-panic=true

在 GPU 啟用時,核心無法穩定繪製到影格緩衝區, 在預設情況下,如果核心當機或發生恐慌時,系統將重新啟動。

如果核心當機且系統重新啟動,核心錯誤記錄將 出現在 /boot/log/last-panic.txt,適合觀看、下載等。

請將 last-panic.txtzircon.elf 檔案附加至任何核心 您提出的恐慌錯誤。

如果有 last-panic.txt,表示這是第一個成功 才能啟動。

非「固定式」-- 如果您乾淨地重新啟動,變更不會刪除,且如果當機 就會再次被取代

ktrace.bufsize=<uint32_t>

預設: 0x20

這個選項會指定分配用於 ktrace 記錄的 MB 數。

ktrace.grpmask=<uint32_t>

預設: 0x0

這個選項會指定要發出的 ktrace 記錄。 這個值是 zircon/ktrace.h 中 KTRACE_GRP_* 值的位元遮罩。 十六進位值可指定為 0xNNN。

kernel.memory-limit-dbg=&lt;bool&gt;

預設: true

這個選項會啟用記憶體限制資料庫中的詳細記錄。

kernel.memory-limit-mb=&lt;uint64_t&gt;

預設: 0x0

這個選項可設定系統記憶體的上限 (以 MB 為單位)。 如果設為 0,表示未設定上限。

例如,選擇足夠的值可讓使用者模擬系統 實體記憶體會比實際擁有的少 33%

kernel.page-scanner.enable-eviction=&lt;bool&gt;

預設: true

設定後,網頁掃描器就會從使用者的網頁掃描器中移除受支援的頁面。剔除可以 減少記憶體用量並防止記憶體不足 系統行為的時間可預測性

kernel.page-scanner.page-table-eviction-policy=[一律 |從未 |on_request]

預設: always

針對不存取的使用者頁面資料表設定宣告政策。

如果是 on_request 時,只會針對要求執行移除作業,例如回應 記憶體容量不足的情況。

如果設為 never,一律不會移除頁面資料表。

設為 always 時,系統會定期移除未使用的頁面資料表。經期可由 kernel.page-scanner.page-table-eviction-period

kernel.page-scanner.page-table-eviction-period-ms=&lt;uint32_t&gt;

預設: 0x2710

設定掃描頁面表格的速率 (以毫秒為單位)。在此期間未使用的任何頁面表格 兩項連續掃描可撤銷。

只有在 kernel.page-scanner.page-table-eviction-policy=always 時,這個選項才會生效。

kernel.page-scanner.min-aging-interval-ms=&lt;uint32_t&gt;

預設: 0x7d0

設定連續事件之間的最短時間 (以毫秒為單位)。這裡的值如果越高 提供更穩定的運動組合,減少出現行為 (例如行為) 和減少時間的機率 收集網頁存取資訊。值越小,有效組合越小越好 降低風險

這個值應小於或等於 kernel.page-scanner.max-aging-interval-ms

kernel.page-scanner.max-aging-interval-ms=&lt;uint32_t&gt;

預設: 0x3a98

設定連續事件之間的時間上限 (以毫秒為單位)。這次 網頁年齡資訊較差的情況,如果值較高, 充足的年齡資訊,以在系統行為快速變化時移除使用者。值較低 就會累積在最舊值區中, 使用者要是被剔除網頁,認為網頁品質欠佳

這個值必須大於或等於 kernel.page-scanner.min-aging-interval-ms

kernel.page-scanner.accessed-scan-interval-ms=&lt;uint32_t&gt;

預設: 0xbb8

設定收集網頁存取資訊之間的時間間隔 (以毫秒為單位)。值越低 提高年齡保真度,並能提高網頁收回選項的正確性,但 增加了 CPU 作業時間

將此值設為低於 kernel.page-scanner.min-aging-interval-ms

kernel.page-scanner.active-ratio-multiplier=&lt;uint32_t&gt;

預設: 0x2

控制是否在觸發偵測前,有效網頁與閒置網頁比較的比率。 這個比率以調節係數表示,藉此簡化核心演算法, should_age = active_page_count * active_ratio_multiplier > inactive_page_count。調節係數 會導致偵測事件發生頻率增加,進而減少傳送至主動集合的網頁數量。調節係數 若為 0,則會根據使用中頁面比例停用連線偵測 (ping)。

有效比率只會觸發介於 《kernel.page-scanner.min-aging-interval-ms》和《kernel.page-scanner.max-aging-interval-ms》 因此如果間隔相等,就不會產生任何影響

kernel.page-scanner.start-at-boot=&lt;bool&gt;

預設: true

這個選項會使核心使用中的記憶體掃描器初始為 啟用時啟用您也可以使用核心啟用及停用這個 API 控制台。如果停用掃描器, 因為可預測性,因為可減少根據時間及背景記憶體遭到剔除。

您可以個別設定及停用掃描工具執行的每個動作。 如果停用所有動作,啟用掃描器就不會有任何作用。

kernel.page-scanner.zero-page-scans-per-second=&lt;uint64_t&gt;

預設: 0x4e20

這個選項會將候選網頁數量上限設為 0 網頁掃描器每秒都會考慮進去

如果設為 0,系統就不會掃描任何網頁。這可讓您 以便實現基準化或其他工作負載的可預測性。

必須執行網頁掃描器,這個選項才會生效。可以 透過 kernel.page-scanner.start-at-boot 選項在啟動時啟用。

這個值獲選為消耗。在最糟糕的情況下,5% 的 CPU 在較低端中使用 啟動裝置。個別設定可能需調整此層級 (或較低) 將物件的使用中版本還原為舊版 或依需要永久刪除封存版本

kernel.page-scanner.lru-action=[無 |evict_only |compress_only |evict_and_compress]

預設: none

設定要對 LRU 佇列中舊頁面採取的任何宣告動作。無論 記憶體壓力如果指定 none 動作,系統就不會收回頁面,原因為 雖說是老舊,

支援的動作如下: - none - evict_only - compress_only - evict_and_compress

kernel.compression.random-debug-compress=&lt;bool&gt;

預設: false

啟用測試選項,讓 VM 立即隨機壓縮頁面,無論如何 孩子們的年齡此設定是為了便於測試壓縮路徑,而不需等待 並使系統進入低記憶體狀態啟用這個選項時發生錯誤 如果核心未使用偵錯斷言建構,或者壓縮和儲存 未設定策略。

kernel.compression.strategy=[無 |LZ4]

預設: none

支援的壓縮策略如下: - none - lz4

這個選項會選取需要壓縮網頁時所需的壓縮策略。 如果設定了 none,則 kernel.compression.storage-strategy 也必須為 none。正在選取「none」 可有效停用壓縮

kernel.compression.storage-strategy=[無 |tri_page]

預設: none

支援的壓縮儲存空間策略如下: - none - tri_page

這個選項會根據您所需的儲存策略,儲存現有的資料 壓縮後的版本。如果設定了 none,則 kernel.compression.strategy 也必須為 none

kernel.compression.threshold=<uint32_t>

預設: 0x46

這個選項可控制壓縮網頁必須達到的壓縮門檻 儲存。未達這個門檻的網頁會繼續在未壓縮的情況下儲存。

選項是百分比,值為 100 代表網頁只要壓縮到最少 值 0 表示網頁必須壓縮為零大小。

有效值介於 1 到 100 (含首尾) 之間。

kernel.compression.lz4.acceleration=<uint32_t>

預設: 0xb

這個選項會控制提供給 LZ4 壓縮實作的加速因數。推薦 到目前 LZ4 實作中,瞭解這個值的解讀方式。

kernel.compression.at_memory_pressure=&lt;bool&gt;

預設: false

這個選項控制是否應執行網頁壓縮以回應記憶體壓力。

如要選取這個選項,您必須啟用任何效果 kernel.page-scanner.enable-eviction,且同時採用這兩種做法 必須設定 kernel.compression.strategy 和 kernel.compression.storage-strategy。

kernel.compression.reclaim_anonymous=&lt;bool&gt;

預設: false

這個選項可控制是否要將匿名網頁置於可回收網頁佇列中,且 相關的年齡資訊啟用這項功能後,匿名網頁會增加一些負擔,方便使用者追蹤年齡, 但對於「kernel.compression.at_memory_pressure」等選項來說是必要項目會產生任何影響

kernel.compression.reclaim_zero_forks=&lt;bool&gt;

預設: false

這個選項類似於「kernel.compression.reclaim_anonymous」但僅適用於 匿名網頁啟用後,「kernel.page-scanner.zero-page-scans-per-second」就會產生「kernel.page-scanner.zero-page-scans-per-second」選項 沒有效果,如果未啟用「kernel.compression.reclaim_anonymous」,就會發生錯誤。

kernel.pmm-checker.action=[糟糕 |panic]

預設: oops

這個選項會指定 PMM 檢查工具偵測到時要採取的動作 損毀。必須是下列其中一個值: * oops - 偵測到損毀時,就會發出非嚴重核心 OOPS。 * panic - 偵測到損毀時會發生嚴重核心錯誤。

kernel.pmm-checker.enable=[true |錯誤 |自動]

預設: false

這項操作會控管是否要啟用 PMM 的「使用釋放後記憶體」檢查工具。 PMM 檢查工具可能相當昂貴,適合用於偵錯和 開發建構作業必須是下列其中一個值: * true - 檢查工具一律啟用。 * false - 檢查工具一律未啟用。 * auto - 核心會根據環境及其成效,決定啟用檢查工具 在管理程序下執行是考量的因素之一。 另請參閱「K pmm 檢查工具」。

kernel.pmm-checker.fill-size=&lt;uint64_t&gt;

預設: 0x1000

這個選項會指定在每個免費網頁中填入或檢查的位元組數 就會啟用 PMM 的「使用釋放後使用」檢查工具。有效值為 8 的倍數、 介於 8 到 PAGE_SIZE 之間 (含首尾)。

kernel.pmm.alloc-random-should-wait=&lt;bool&gt;

預設: false

啟用測試選項,讓 PMM 在使用可等候的頁面分配時,隨機失敗 不論目前的記憶體等級為何,ZX_ERR_SHOULD_WAIT。此做法是為了協助測試 不必將系統設為低記憶體狀態未將 如果核心未使用啟用偵錯斷言功能建構,請啟用這個選項。

kernel.portobserver.reserve-pages=<uint64_t>

預設: 0x8

指定每個 CPU 要保留給通訊埠觀察器 (非同步) 的頁面數量 等待) 分配。值越高,代表系統對 PMM 系統的爭用程度就越低 容量不足以在系統閒置時耗用更多記憶體。

kernel.portpacket.reserve-pages=<uint64_t>

預設: 0x1

指定每個 CPU 要預留給通訊埠封包 (port_queue) 的頁面數 分配作業。若系統 導致系統處於閒置狀態時耗用更多記憶體。

kernel.root-job.behavior=[暫停 |重啟 |系統啟動載入程式 |復原 |關機]

預設: reboot

這個選項會指定當根工作處於執行狀態時,核心應採取的動作 終止、沒有任何工作和程序

如果 halt,系統會停止系統。

reboot 時,系統會重新啟動系統。

bootloader 時,系統會重新啟動系統並啟動系統啟動載入程式。

recovery 時,系統會將系統重新啟動進入復原分區。

shutdown 時,將關閉系統。

kernel.root-job.notice=&lt;string&gt;

若選擇此選項,即可在根工作終止或沒有任何工作時顯示通知 且沒有任何程序

kernel.shell=&lt;bool&gt;

預設: false

指示核心在核心主控台上啟動自己的殼層,而非使用者空間斜線。

kernel.shell.script=&lt;string&gt;

指示核心執行 kernel.shell 指令的罐頭指令碼。如果 此外,也指定了 kernel.shell,此時核心殼層命令提示字元 ,除非指令碼關閉系統。 由於核心指令列上的空白字元會分隔不同的啟動選項, 指令碼中的 + 字元會替換為空格,以便執行指令 加上 ; 字元,即可在指令碼中分隔指令。

kernel.smp.ht=&lt;bool&gt;

預設: true

這個選項會指定是否應啟用 HyperThreading (HT) 邏輯 CPU。

kernel.test.ram.reserve=&lt;std::optional&gt;

指定要為測試預留的實體 RAM 範圍。 這應該只寫 SIZE (整數位元組數量, 對齊頁面),但在核心後方會讀取為 SIZE,ADDRESS 會在早期啟動階段指派位址。

kernel.port.max-observers=<uint64_t>

預設: 0xc350

指定單一通訊埠可觀察者數量上限。達到此上限時,系統會 系統會在超過限制的程序中引發 Zircon 例外狀況。這個值必須夠高 行為良好的程式不會達到限制,但過低會終止不正常的計畫 避免發生這類情況

kernel.select=&lt;string&gt;

預設: zircon

要從 ZBI 中 STORAGE_KERNEL 項目啟動的核心套件名稱。

kernel.scheduler.prefer-little-cpus=&lt;bool&gt;

預設: false

搜尋要用來計算工作的 CPU 時,建議核心核心數,而非大型核心。啟用中 這個選項權衡改善效能,同時降低耗電量。

已淘汰 - 已排定在即將推出的版本中移除這個選項。請勿接受任何 重要的依附關係

kernel.ubsan.action=[糟糕 |panic]

預設: panic

使用 UndefinedBehaviorSanitizer 檢測核心時,會發生問題 則會回報至序列控制台無論問題是否嚴重, 必須是下列其中一個值: * oops - 偵測到未定義的行為會導致一般核心 OOPS。 * panic - 偵測到未定義的行為會導致嚴重錯誤。

只有 arm64 機器提供選項

kernel.arm64.disable_spec_pairs=<bool>

預設: false

如果設定,系統會停用所有推測執行資訊外洩緩解措施。

如未設定,系統會使用每個因應措施的預設值。

kernel.arm64.event-stream.enable=<bool>

預設: true

啟用之後,每個 ARM CPU 都會啟用事件串流產生器 (每個 CPU 資源) 設定隱藏事件旗標的速率。這就是踢球的效果 這些使用者可能處於任何 WFE 狀態的 CPU 使用率。

kernel.arm64.event-stream.freq-hz=&lt;uint32_t&gt;

預設: 0x2710

如果事件串流已啟用,請指定嘗試頻率 執行。由於解析度有限,因此驅動程式庫只能選擇 最接近 2 次方的 CPU 計時器。

kernel.arm64.debug.dap-rom-soc=<字串>

如果設定的話,會嘗試在特定的硬式編碼位址上,初始化 dap 偵錯光圈 晶片系統目前可接受的值為 amlogic-t931g、amlogic-s905d2、 amlogic-s905d3g 和 amlogic-a311d。

kernel.smp.maxcpus=<uint32_t>

預設: 0x10

這個選項會限制初始化的 CPU 數量,不得大於 SMP_MAX_CPUS 比較適合特定架構的工作負載

kernel.phys.psci-reset=[disabled |關機 |重啟 |開機載入器 |重新啟動]

預設: reboot

這個選項會決定哪種 PSCI 重設作業 (如有) 需要恐慌及當機時,早期啟動核心就會使用。 如果設為「停用」,則電腦可能會進入無限迴圈。

kernel.arm64.phys.mmu=<bool>

預設: true

這樣即可在核心的早期啟動階段使用 MMU 和快取。

kernel.arm64.enable-asid=<bool>

預設: true

這會啟用 ASID。如果基礎硬體支援 16 位元 ASID,則預設為 True。

kernel.arm64.alternate-vbar=[無 |自動 |arch3 |arch1 |psci |Smccc10]

預設: auto

這會選取用來因應的替代例外狀況向量 EL0 到 EL1 時與項目相關的 CPU 問題。可能的值包括: * none:在早期的 EL0 例外狀況路徑中未執行任何緩解措施。 * auto (預設) - 根據可用性選取 SMCCC 函式 ID SMCCC / PSCI 介面回報的安全漏洞。然後每個 CPU 使用率 向韌體查詢,瞭解是否需要變通方法。如果 韌體並非 SMCCC >= 1.1,表示其支援 SMCCC_ARCH_WORKAROUND_3 和/或 SMCCC_ARCH_WORKAROUND_1 函式 ID, 這與 none 的效果相同。如果韌體支援 則每個 CPU 會選擇是否使用韌體替代方案 表示該 CPU 的必要性無論您選擇哪種方式,替代規格 這些緩解措施,因為韌體解決方法具有備援選項,或不具有備援 不需要用到韌體解決方法,但會停用。 * arch3:一律在每個 CPU 上使用 SMCCC_ARCH_WORKAROUND_3。 無法預測的影響 (若韌體不支援 SMCCC 1.1 或不支援 SMCCC 1.1) 支援 SMCCC_ARCH_WORKAROUND_3。讓每個 CPU 都會執行 auto 的內容 選擇韌體 韌體支援這項功能這麼做也會停用替代規格 SMCCC_ARCH_WORKAROUND_3 提供的因應措施。 * arch1:一律在每個 CPU 上使用 SMCCC_ARCH_WORKAROUND_1。 無法預測的影響 (若韌體不支援 SMCCC 1.1 或不支援 SMCCC 1.1) 支援 SMCCC_ARCH_WORKAROUND_1。讓每個 CPU 都會執行 auto 的內容 選擇韌體 韌體支援「1」但不是「3」函式。這也 停用多餘的替代規格緩解措施 SMCCC_ARCH_WORKAROUND_1. * psci - 一律使用 PSCI_VERSION 搭配 SMCCC 1.1 呼叫慣例 每組 CPU 的延遲時間都很久如果韌體沒有 支援 SMCCC 1.1目前 auto 從未為任何 也就是 CPU * smccc10 - 一律使用 PSCI_VERSION 搭配 SMCCC 1.0 呼叫慣例 每組 CPU 的延遲時間都很久這在所有系統上都很安全,但負擔高於 SMCCC 1.1 選項,且不一定適用於所有 CPU。目前需時 auto 一律不得為任何 CPU 選取這項行為 如同使用異質核心的 SoC,應針對不同核心進行其他選擇 因此建議只在測試時使用 auto 以外的值。

選項僅適用於 riscv64 機器

kernel.smp.maxcpus=<uint32_t>

預設: 0x10

這個選項會限制初始化的 CPU 數量,不得大於 SMP_MAX_CPUS 比較適合特定架構的工作負載

kernel.riscv64.enable-asid=<bool>

預設: true

這會啟用 ASID。如果基礎硬體支援 16 位元 ASID,則預設為 True。

kernel.riscv64.phys.mmu=<bool>

預設: true

這樣即可在核心的早期啟動階段使用 MMU。

僅適用於 x86 機器的選項

kernel.x86.disable_spec_pairs=<bool>

預設: false

如果設定,系統會停用所有推測執行資訊外洩緩解措施。

如未設定,系統會使用每個因應措施的預設值。

kernel.x86.hwp=<bool>

預設: true

你可以透過這項設定在支援的晶片上啟用 HWP (硬體 P 狀態)。這項功能 讓 Intel CPU 可自動調整自己的時鐘速度。

kernel.x86.hwp_policy=[bios-specified |成效 |平衡 |省電功能 |穩定效能]

預設: bios-specified

設定 CPU 的電源/效能取捨政策。x86 CPU 搭配 HWP (硬體 P 狀態) 支援可以設為自主擴充 持續遵守不同政策。

目前支援的政策如下:

  • bios-specified:使用電源/效能取捨政策 並在韌體/BIOS 設定中指定。如果沒有政策可用,系統會改回採用 至 balanced
  • performance:提升成效。
  • balanced:在效能 / 省電之間取得平衡。
  • power-save:減少耗電量,但效能較低。
  • stable-performance:使用可確保系統效能一致的設定。 舉例來說,如果能確保成效 可預測比爭取最高成效更重要。

kernel.x86.md_clear_on_user_return=&lt;bool&gt;

預設: true

MDS (微架構資料取樣) 是一系列推測性執行程序 資訊外洩錯誤,導致近期載入或商店的內容 由惡意代碼推論,無論權限等級為何 (CVE-2019-11091、 CVE-2018-12126、CVE-2018-12130、CVE-2018-12127)。舉例來說 讀取最近核心載入/儲存庫的使用者程式碼。

為了避免這種錯誤,所有微架構結構都需要 確保在信任層級轉換時,可能遺漏的資料都會遭到清除。此外, 必須確保信任層級不會同時對單一實體 和處理器核心

這個選項控制是否要清除微架構結構 使用者離開路徑的核心 (如果有的話)可能會導致成效不佳 這種做法

  • 如果設為 True (預設值),當處理器 變得越來越容易
  • 如果設為 False,系統就不會在結構上執行清除作業。

kernel.x86.spec_store_bypass_disable=&lt;bool&gt;

預設: false

光譜儲存機制 (Spectre V4) 是一種推測執行資訊外洩 影響許多 Intel 和 AMD x86 CPU 的安全漏洞它鎖定記憶體 消歧硬體,用來推斷最近商店的內容。攻擊事件 只會影響相同權限層級的處理中資料。

這個指令列選項可控管是否要啟用緩解措施。 緩解措施會對效能造成負面影響。

  • 如為 true,則已在有需要的 CPU 上啟用緩解功能。
  • 如果值為 False (預設值),則不啟用緩解功能。

kernel.x86.turbo=<bool>

預設: true

強化型提升或 Core Performance Boost 機制可讓處理者 應用程式執行階段的效能,會根據可用的熱源和 電費預算這樣或許可以改善互動效能,但您仍須支付費用 效能變異數停用 Turbo 或許對某些工作負載有所助益;如果 將此指令列旗標設為 false,因此系統會針對 有些人會將 Cloud Storage 視為檔案系統 但實際上不是

kernel.x86.enable_pcid=<bool>

預設: true

這個選項會控制是否使用 PCID (如果有足夠的 CPU 支援)。 啟用這個選項後,如果沒有足夠的 CPU 支援情形,則 則不會有任何影響。

kernel.smp.maxcpus=<uint32_t>

預設: 0x20

這個選項會限制初始化的 CPU 數量,不得大於 SMP_MAX_CPUS 比較適合特定架構的工作負載

kernel.wallclock=[自動 |tsc |小巴 |hpet]

預設: auto

這個選項可用於強制在 PC 版本中選擇特定時鐘。