所有機器通用的選項
aslr.disable=<bool>
預設: false
如果設定這個選項,系統就不會使用位址空間版面配置 隨機化。
aslr.entropy_bits=<uint8_t>
預設: 0x1e
針對使用 ASLR 的位址空間,這項配置可控管 IP 中 熵越多,就會產生稀疏位址空間,並使用 為頁面表格分配更多記憶體有效值的範圍介於 0 至 36 之間。
kernel.cprng-reseed-require.hw-rng=<bool>
預設: false
啟用後,如果硬體 RNG 無法在重新轉播時失敗,CPRNG 就會造成恐慌。
kernel.cprng-reseed-require.jitterentropy=<bool>
預設: false
啟用後,如果抖動器在重新尋找時故障,CPRNG 就會恐慌。
kernel.cprng-seed-require.hw-rng=<bool>
預設: false
啟用後,如果 HW RNG 在初始種子時失敗,CPRNG 會發生恐慌。
kernel.cprng-disable.jitterentropy=<bool>
預設: false
決定是否使用抖動器做為測試用的熵來源
kernel.cprng-disable.hw-rng=<bool>
預設: false
決定是否將 HW RNG 用做熵來源 (用於測試)
kernel.cprng-seed-require.jitterentropy=<bool>
預設: false
啟用時,如果抖動器無法初始種子,CPRNG 就會造成恐慌。
kernel.cprng-seed-require.cmdline=<bool>
預設: false
啟用之後,如果您未提供核心指令的熵輸入內容 CPRNG 恐慌
kernel.entropy-mixin=<hexadecimal>
提供混入核心 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.raw
為 false
,則
抖動器會選擇循環次數,隨機選擇。
kernel.jitterentropy.ll=<uint32_t>
預設: 0x1
設定「LFSR 迴圈」參數值。時間
時基誤差正在執行耗用大量 CPU 的 LFSR 作業,以便增加
),控制 LFSR 常式重複的次數。這個
參數只有在 kernel.jitterentropy.raw
為 true 時才能使用。如果
這個參數是 0
,如果 kernel.jitterentropy.raw
是 false
,則
抖動器會選擇循環次數,隨機選擇。
kernel.jitterentropy.raw=<bool>
預設: true
設為 true 時,抖動熵收集器會傳回原始 未處理的樣本設為 false 時,系統會透過下列方式處理原始樣本 時基誤差,產生更接近隨機隨機狀態的輸出資料。注意事項 即使設為 False,CPRNG 仍會重新處理樣本 時基誤差內部的處理程序,也有多餘的情況。
kernel.lockup-detector.critical-section-threshold-ms=<uint64_t>
預設: 0xbb8
特定關鍵區塊的 CPU 停留在 就會發出 KERNEL OOPS。
另請參閱k lockup status
和
鎖定偵測工具
如果設為 0,系統會停用重要區塊鎖定偵測功能。
當 kernel.lockup-detector.heartbeat-period-ms 為 0 時,關鍵區段鎖定 偵測功能已停用
kernel.lockup-detector.critical-section-fatal-threshold-ms=<uint64_t>
預設: 0x2710
當 CPU 停留在指定的重要區塊時
系統會產生當機記錄,並重新啟動,表示發生
重新啟動 SOFTWARE_WATCHDOG
的原因。
另請參閱k lockup status
和
鎖定偵測工具
如果設為 0,系統會停用產生及重新啟動重要部分當機記錄的功能。
當 kernel.lockup-detector.heartbeat-period-ms 為 0 時,關鍵區段鎖定 偵測功能已停用
kernel.lockup-detector.heartbeat-period-ms=<uint64_t>
預設: 0x3e8
次要 CPU 透過核心計時器發出活動訊號的頻率。這個 值應夠大,不會影響系統效能,但應是 未達到的心率門檻值1000 是合理的值。
另請參閱鎖定偵測工具一文。
如果值為 0,則會停用活動訊號偵測功能。
kernel.lockup-detector.heartbeat-age-threshold-ms=<uint64_t>
預設: 0xbb8
次要 CPU 最後一次活動訊號的時間上限,即判定為 電腦則會鎖定這個值應大於心跳週期,但最小值 才不會錯過短期的鎖定圖文標誌活動3000 是合理的值。
另請參閱鎖定偵測工具一文。
如果值為 0,則會停用活動訊號偵測功能。
kernel.lockup-detector.heartbeat-age-fatal-threshold-ms=<uint64_t>
預設: 0x2710
CPU 最後一次活動訊號的時間上限,即視為鎖定。
觸發系統發出的當機記錄,指出重新啟動的原因
SOFTWARE_WATCHDOG
,然後重新啟動。
另請參閱鎖定偵測工具一文。
如果設為 0,系統會停用活動訊號產生並重新啟動功能。
kernel.lockup-detector.diagnostic-query-timeout-ms=<uint64_t>
預設: 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=<uint32_t>
預設: 0xc350
這個選項會設定核心在重新啟動前需等待多久
才有可能遇到記憶體不足 (OOM) 的情況。這個選項
只有在 kernel.oom.behavior
設為 reboot
時才會產生關聯。
kernel.mexec-force-high-ramdisk=<bool>
預設: false
這個選項僅供測試使用。如果設為 true
,系統會強制使用
Mexec syscall 將下列核心的 ramdisk 放在高記憶體中
(64 位元位址空間,>= 4 GiB 的偏移值)。
kernel.mexec-pci-shutdown=<bool>
預設: true
如果為 false,此選項會在呼叫 Mexec 時讓 PCI 裝置持續執行。
kernel.oom.enable=<bool>
預設: 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-mb
的 kernel.oom.critical-mb
,
kernel.oom.warning-mb
和 zx_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-mb
、kernel.oom.critical-mb
和
kernel.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=<bool>
預設: false
這個選項會在警告壓力狀態時觸發移除檔案頁面 除了預設的行為外,系統會在重大事件和 OOM 時將這類行為剔除 州。
kernel.oom.evict-continuous=<bool>
預設: false
這個選項會將核心撤銷設定設為在背景持續執行,以嘗試 避免系統的記憶體壓力 記憶體壓力水平轉換
kernel.oom.hysteresis-seconds=<uint64_t>
預設: 0xa
這個選項會指定記憶體之間的幕後作業間隔 (以秒為單位) 壓力狀態轉換。請注意,繡球體僅適用於 從可用記憶體較少的狀態轉換為可用記憶體更多的狀態; 反向轉換則不會延遲。
kernel.oom.imminent-oom-delta-mb=<uint64_t>
預設: 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=<bool>
預設: true
這個選項會控制使用者能否因 記憶體會觸發 OOM 回應
kernel.phys.next=<string>
預設: physboot
系統將載入核心儲存檔案系統 physload 中的檔案名稱。
kernel.phys.verbose=<bool>
預設: true
這會控制在核心早期登入序列主控台的程度 啟動階段;如果為 false,系統只會執行錯誤相關記錄,
這個選項的其中一個公用程式是執行基準測試:同步、單一執行緒 截至目前為止,UART 寫入成本可能相對成本 (10 個半形字元/毫秒) 則建議將這類作業排除在 更全面地衡量時間
kernel.phys.backtrace-max=<uint32_t>
預設: 0x40
如果核心早期啟動階段發生當機情形,系統可能會輸出 序列主控台上的反向追蹤;模型會根據影格 指標、使用陰影呼叫堆疊時,也會是平行返回追蹤 產生 3D 物件每次回溯追蹤顯示的上限為 影格速率限制(大多數的反向追蹤會在使用者按下前最外層的影格結束 。將限制設為 0 張無上限的列印畫面, 影格指標返回追蹤可能會進入無限迴圈,包含一些錯誤。
kernel.phys.print-stack-max=<uint32_t>
預設: 0x400
如果核心的早期啟動階段發生當機情形,系統可能會輸出堆疊 從序列控制台獲取內容這是堆疊的大小上限 (以位元組為單位) 很容易被傾印實際傾印量取決於堆疊深度。 每個 16 個位元組的堆疊會以一行顯示,長度上限為 75 個半形字元。
kernel.ppb.borrow-in-supplypages=<bool>
預設: 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=<bool>
預設: false
這項政策可控管是否要以已借出的網頁替代未瀏覽的網頁 ( 有任何貸款頁面) 移至 MRU 佇列。在正常情況下,這件事會稍微延後完成,但在 OOM 附近 撤銷程序後,應位於 MRU 佇列的所有頁面都會移至 MRU 佇列。
kernel.ppb.loan=<bool>
預設: false
這項設定可控管是否要在連續 VMO 上啟用 ZX_VMO_OP_DECOMMIT。如果 true,在連續 VMO 上執行解構作業可以正常運作並傳回 ZX_OK。這些網頁 向系統的其他成員借款。如果為 false,請解構 會傳回 ZX_ERR_NOT_SUPPORTED。
kernel.ppb.replace-on-unloan=<bool>
預設: false
這會控管將借出的網頁重新提交至原始網頁時的處理方式 連續 VMO如果傳回 false,則會從提供該貸款的網頁中移除 導致系統要求錯誤的內容如為 true,則會複製內容。 並用來取代已借出的網頁。
kernel.render-dlog-to-crashlog=<bool>
預設: false
設為 true 時,系統會將近期的核心偵錯紀錄 附加在核心錯誤期間產生的當機記錄中,以協助偵錯。
kernel.serial=[無 |舊版 |qemu |<type>,<base>,<irq>]
預設: none
以便控管使用的序列埠。如有提供,則會覆寫序號 系統開機資料中描述的通訊埠核心偵錯序列埠是 預留的資源,且不能在核心外部使用。
如果設為「無」,核心偵錯序列埠就會停用,且不會 ,因此可在核心外部使用預設序列埠。
設定字串格式如下: MMIO UART: 「kernel.serial=UART_MODEL,MMIO_ADDR,IRQ,FLAGS」 PIO UART: 「kernel.serial=UART_MODEL,IOPORT,IRQ」
kernel.vdso.always_use_next=<bool>
預設: false
如果設定此選項,核心將提供「next」使用者空間vDSO 而非「穩定」vDSO 為預設的 vDSO。
vdso.ticks_get_force_syscall=<bool>
預設: false
如果設定此選項,系統將強制 zx_ticks_get
vDSO 呼叫為 true
syscall,即使從伺服器存取硬體循環計數器暫存器
使用者模式
vdso.clock_get_force_syscall=<bool>
預設: false
如果設定此選項,zx_clock_get_monotonic
和 zx_clock_get_boot
vDSO 呼叫將
強製成為真正的系統呼叫,而不只是執行刻度轉換
計數器。
kernel.userpager.overtime_wait_seconds=<uint64_t>
預設: 0x14
這個選項會設定使用者呼叫器故障前可能的封鎖時間長度 並將資訊訊息輸出至偵錯記錄檔 繼續等待如果值為 0,表示等候時間一律不會視為等待時間 時間。
kernel.userpager.overtime_timeout_seconds=<uint64_t>
預設: 0x12c
這個選項會設定使用者呼叫器故障前可能的封鎖時間長度
已取消。如果是硬體頁面錯誤,錯誤執行緒會終止,並顯示
嚴重例外狀況。如果是 syscall 觸發的軟體頁面錯誤,
Syscall 將會失敗,並顯示 ZX_ERR_TIMED_OUT
。0 表示網頁
因為逾時而無法取消。
kernel.heap-max-size-mb=<uint64_t>
預設: 0x800
這個選項會設定堆積的大小上限。只有核心才會生效 並使用虛擬堆積進行編譯
kernel.heap.alloc_fill_threshold=<uint64_t>
預設: 0x0
設定之後,核心堆積會填滿低於這個大小 (以位元組為單位) 的配置。
kernel.bufferchain.reserve-pages=<uint64_t>
預設: 0x20
指定每個 CPU 要保留給緩衝區鏈分配的頁面數量 (管道訊息)。如果 但系統負載增加時,就需要使用更多記憶體 閒置中。
TODO(https://fxbug.dev/42147481):決定要防止這個值的上限 因此會耗用太多記憶體
kernel.bypass-debuglog=<bool>
預設: false
啟用後,系統會強制輸出至控制台,而不是緩衝處理。原因 都有 compile 參數和 cmdline 參數 ,強制進入控制台。 編譯切換設定會覆寫 cmdline 參數 (如果兩者同時存在)。 請注意,編譯切換按鈕和 cmdline 參數都會有副作用 就是要停用 irq 驅動 uart Tx
kernel.debug_uart_poll=<bool>
預設: false
如果為 true,系統會定期輪詢 UART 並將內容轉送至控制台。
kernel.enable-debugging-syscalls=<bool>
預設: 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_ID
的zx_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_INVALIDATE
的zx_vmo_op_range()
kernel.enable-serial-syscalls=[false |是 |(僅限輸出)]
預設: false
如果 false
,zx_debug_read()
和 zx_debug_write()
都會失敗,並傳回以下值:
ZX_ERR_NOT_SUPPORTED
。
如果 output-only
,zx_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=<bool>
預設: false
設定完成後,系統會嘗試停用所有已啟動的硬體監控計時器計時器 並盡快傳送到系統啟動載入程式傳送。 假設系統啟動載入程式提供了足夠的資訊,以瞭解如何停用 WDT 檔案。
kernel.halt-on-panic=<bool>
預設: false
如果設定這個選項,系統會停止執行核心錯誤
而不是重新啟動如要啟用「停在恐慌」時,請傳遞核心指令列
引數 kernel.halt-on-panic=true
。
在 GPU 啟用時,核心無法穩定繪製到影格緩衝區, 在預設情況下,如果核心當機或發生恐慌時,系統將重新啟動。
如果核心當機且系統重新啟動,核心錯誤記錄將
出現在 /boot/log/last-panic.txt
,適合觀看、下載等。
請將
last-panic.txt
和zircon.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=<bool>
預設: true
這個選項會啟用記憶體限制資料庫中的詳細記錄。
kernel.memory-limit-mb=<uint64_t>
預設: 0x0
這個選項可設定系統記憶體的上限 (以 MB 為單位)。 如果設為 0,表示未設定上限。
例如,選擇足夠的值可讓使用者模擬系統 實體記憶體會比實際擁有的少 33%
kernel.page-scanner.enable-eviction=<bool>
預設: 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=<uint32_t>
預設: 0x2710
設定掃描頁面表格的速率 (以毫秒為單位)。在此期間未使用的任何頁面表格 兩項連續掃描可撤銷。
只有在 kernel.page-scanner.page-table-eviction-policy=always
時,這個選項才會生效。
kernel.page-scanner.min-aging-interval-ms=<uint32_t>
預設: 0x7d0
設定連續事件之間的最短時間 (以毫秒為單位)。這裡的值如果越高 提供更穩定的運動組合,減少出現行為 (例如行為) 和減少時間的機率 收集網頁存取資訊。值越小,有效組合越小越好 降低風險
這個值應小於或等於 kernel.page-scanner.max-aging-interval-ms
。
kernel.page-scanner.max-aging-interval-ms=<uint32_t>
預設: 0x3a98
設定連續事件之間的時間上限 (以毫秒為單位)。這次 網頁年齡資訊較差的情況,如果值較高, 充足的年齡資訊,以在系統行為快速變化時移除使用者。值較低 就會累積在最舊值區中, 使用者要是被剔除網頁,認為網頁品質欠佳
這個值必須大於或等於 kernel.page-scanner.min-aging-interval-ms
。
kernel.page-scanner.accessed-scan-interval-ms=<uint32_t>
預設: 0xbb8
設定收集網頁存取資訊之間的時間間隔 (以毫秒為單位)。值越低 提高年齡保真度,並能提高網頁收回選項的正確性,但 增加了 CPU 作業時間
將此值設為低於
kernel.page-scanner.min-aging-interval-ms
。
kernel.page-scanner.active-ratio-multiplier=<uint32_t>
預設: 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=<bool>
預設: true
這個選項會使核心使用中的記憶體掃描器初始為 啟用時啟用您也可以使用核心啟用及停用這個 API 控制台。如果停用掃描器, 因為可預測性,因為可減少根據時間及背景記憶體遭到剔除。
您可以個別設定及停用掃描工具執行的每個動作。 如果停用所有動作,啟用掃描器就不會有任何作用。
kernel.page-scanner.zero-page-scans-per-second=<uint64_t>
預設: 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=<bool>
預設: 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=<bool>
預設: false
這個選項控制是否應執行網頁壓縮以回應記憶體壓力。
如要選取這個選項,您必須啟用任何效果 kernel.page-scanner.enable-eviction,且同時採用這兩種做法 必須設定 kernel.compression.strategy 和 kernel.compression.storage-strategy。
kernel.compression.reclaim_anonymous=<bool>
預設: false
這個選項可控制是否要將匿名網頁置於可回收網頁佇列中,且 相關的年齡資訊啟用這項功能後,匿名網頁會增加一些負擔,方便使用者追蹤年齡, 但對於「kernel.compression.at_memory_pressure」等選項來說是必要項目會產生任何影響
kernel.compression.reclaim_zero_forks=<bool>
預設: 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=<uint64_t>
預設: 0x1000
這個選項會指定在每個免費網頁中填入或檢查的位元組數 就會啟用 PMM 的「使用釋放後使用」檢查工具。有效值為 8 的倍數、 介於 8 到 PAGE_SIZE 之間 (含首尾)。
kernel.pmm.alloc-random-should-wait=<bool>
預設: 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=<string>
若選擇此選項,即可在根工作終止或沒有任何工作時顯示通知 且沒有任何程序
kernel.shell=<bool>
預設: false
指示核心在核心主控台上啟動自己的殼層,而非使用者空間斜線。
kernel.shell.script=<string>
指示核心執行 kernel.shell
指令的罐頭指令碼。如果
此外,也指定了 kernel.shell
,此時核心殼層命令提示字元
,除非指令碼關閉系統。
由於核心指令列上的空白字元會分隔不同的啟動選項,
指令碼中的 +
字元會替換為空格,以便執行指令
加上 ;
字元,即可在指令碼中分隔指令。
kernel.smp.ht=<bool>
預設: true
這個選項會指定是否應啟用 HyperThreading (HT) 邏輯 CPU。
kernel.test.ram.reserve=<std::optional>
指定要為測試預留的實體 RAM 範圍。 這應該只寫 SIZE (整數位元組數量, 對齊頁面),但在核心後方會讀取為 SIZE,ADDRESS 會在早期啟動階段指派位址。
kernel.port.max-observers=<uint64_t>
預設: 0xc350
指定單一通訊埠可觀察者數量上限。達到此上限時,系統會 系統會在超過限制的程序中引發 Zircon 例外狀況。這個值必須夠高 行為良好的程式不會達到限制,但過低會終止不正常的計畫 避免發生這類情況
kernel.select=<string>
預設: zircon
要從 ZBI 中 STORAGE_KERNEL 項目啟動的核心套件名稱。
kernel.scheduler.prefer-little-cpus=<bool>
預設: 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=<uint32_t>
預設: 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=<bool>
預設: true
MDS (微架構資料取樣) 是一系列推測性執行程序 資訊外洩錯誤,導致近期載入或商店的內容 由惡意代碼推論,無論權限等級為何 (CVE-2019-11091、 CVE-2018-12126、CVE-2018-12130、CVE-2018-12127)。舉例來說 讀取最近核心載入/儲存庫的使用者程式碼。
為了避免這種錯誤,所有微架構結構都需要 確保在信任層級轉換時,可能遺漏的資料都會遭到清除。此外, 必須確保信任層級不會同時對單一實體 和處理器核心
這個選項控制是否要清除微架構結構 使用者離開路徑的核心 (如果有的話)可能會導致成效不佳 這種做法
- 如果設為 True (預設值),當處理器 變得越來越容易
- 如果設為 False,系統就不會在結構上執行清除作業。
kernel.x86.spec_store_bypass_disable=<bool>
預設: 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 版本中選擇特定時鐘。