戴文的Linux內核專題:10 配置內核(6)
這裡我們可以啟用由ACPI控制的擴展塢和可移動驅動器槽的支持(Dock)。記住,ACPI(Advanced Configuration and Power Management Interface)是一個電源管理系統。擴展塢是一種其他的設備通過額外的介面插入的設備。擴展塢可以容納許多不同的埠和連接器。一個ACPI控制的擴展塢是指其電源管理是通過ACPI進行的。驅動器槽是一套可以增加硬碟的設備,這也可以由ACPI管理。
下面,我們允許ACPI用來管理空閑的CPU(Processor)。這會讓處理器在空閑時進入ACPI C2或者C3狀態。這可以節省電源並降低CPU晶元的溫度。處理器只在100%沒有佔用時才進入空閑狀態。沒有程序必須請求一個特定時間的CPU資源。
CPU電源有四個狀態 - C0、C1、C2和C3。C0是操作激活狀態。C1(Halt)是一個不執行指令激活狀態,但是可以立刻執行指令。C2(Stop-Clock)是一種斷電狀態。C3(Sleep)是一種比C2更徹底的斷電狀態。在C3狀態中,現在緩存不再被同步或者管理,直到CPU離開這個狀態。第五個狀態稱作C1E(Enhanced Halt State),他擁有低功耗。
如果啟用了IPMI驅動,那麼ACPI可以訪問BMC控制器(IPMI)。基板管理控制器(BMC)是一種管理軟體和硬體間連接的微控制器。智能平台管理介面(IPMI)是一種框架,通過直接的硬體層面而不是登錄shell或者操作系統層面來管理計算機。
ACPI v4.0進程聚合器允許內核應用一個CPU配置到所有系統中的處理器中(Processor Aggregator)。截止到ACPI v4.0,只有idle狀態可以用這個方式配置。
接下來,可以啟用ACPI熱區(Thermal Zone)。多數硬體支持這個特性。這允許風扇的電源由ACPI管理。
如果啟用這個選項,自定義DSDT可以鏈接到內核。在這個設置中,開發者必須在文件中包含完整的路徑名。系統差異表(DSDT)是一個包含了系統支持的電源事件信息的文件。它不需要輸入路徑名,這些表存在於固件中。內核會幫你處理這些。這個主要的目的是用於如果開發者需要使用不同於設備內置的表時用到。
任意ACPI表都可以通過initrd來覆蓋(ACPI tables override via initrd)。ACPI表是指示如何控制並與硬體交互的基礎規則和指令。
像內核的其他部分一樣,ACPI系統也可以生成調試信息(Debug Statements)。像其他調試特性一樣,你或許希望禁用它並省下50KB。
啟用下面的特性會為系統檢測到的每個PCI插槽(PCI slot detection driver)創建文件(/sys/bus/pci/slots/)。一個PCI插槽是在PCI主板上的一個埠,它允許用戶接上其他的PC設備。PCI是主板的一種類型。PCI是指組件互相通信的方式。有些應用程序可能需要這些文件。
電源管理定時器是另外一種電源管理系統(Power Management Timer Support)。這是許多系統追蹤時間的方式。這個只需要很少的能源。處理器的空閑、電壓/頻率調節和節流都不會影響這個定時器。大量的系統需要使用這個特性。
下面,可以啟用ACPI模塊和容器設備驅動(Container and Module Devices)。這會啟用處理器、內存和節點的熱插拔支持。它需要NUMA系統。
下面的驅動提供對ACPI內存的熱插拔支持(Memory Hotplug)。有些設備甚至啟用這個驅動也不支持熱插拔。如果驅動以模塊形式加入,那麼模塊將會被acpi_memhotplug調用。
注意:對於內核某個特定的功能,硬體、BIOS和固件在必須支持時會有問題。有些系統的BIOS是不控制硬體的。這種類型的BIOS通常不會限制特性。如果內核確實有一個特定的功能,硬體必須有能力完成這樣的任務。
智能電源管理驅動提供訪問電池的狀態和信息(Smart Battery System)。
下面,我們有一個"Hardware Error Device"驅動。設備通過SCI報告硬體錯誤。通常上,大多數的錯誤會是已糾正的錯誤。
下面的是ACPI調試特性(Allow ACPI methods to be inserted/replaced at run time)。這允許ACPI AML方式不通過重啟系統管理。 AML代表的是ACPI機器語言(ACPI Machine Language)。AML代碼可以通過請求重啟來改變和測試。
APEI是ACPI的錯誤介面(ACPI Platform Error Interface (APEI))。APEI從晶元給操作系統報告錯誤。這個錯誤介面同樣提供錯誤注射的能力。
當"SFI (Simple Firmware Interface) Support" 啟用後,硬體固件可以發送消息給操作系統。固件與操作系統間的通信通過內存中的靜態表。SFI-only的計算機的內核工作需要這個特性。
想要改變處理器的時鐘速度和運行時,就啟用這個特性(CPU Frequency scaling)。CPU頻率調整意味著改變處理器的時鐘速度。這個驅動可以用於降低時鐘頻率以節能。
下面是另外一個電源管理子系統(CPU idle PM support)。當處理器不在活躍狀態時,它最好處在有效的空閑方式來減少電源消耗和減少CPU損耗。減少電源消耗同樣可以降低內部元件的發熱。
Linux內核提供了很多CPU空閑驅動。在多處理器系統上,一些用戶可能有一個理由在每個CPU上使用不同的驅動(Support multiple cpuidle drivers)。啟用這個驅動可以允許用戶給每個處理器設置不同的驅動。
對於Intel處理器,內核有一個特別為管理這類CPU晶元空閑的驅動(Cpuidle Driver for Intel Processors)。
當內存晶元空閑時,這些同樣可以處於低功耗狀態(Intel chipset idle memory power saving driver)。這個驅動是特別支持IO AT的Intel設備的。
不同的計算機使用不同類型的主板(PCI support)。其中一種類型是PCI。這個驅動允許內核運行在PCI主板上。
下面,我們可以啟用/禁用 "Support mmconfig PCI config space access"。
接下來,我們有一個選擇啟用/禁用主橋窗口驅動(Support mmconfig PCI config space access)。警告:這個驅動還沒有完成(至少在3.9.4中是這樣)。
像上面提到的主板,還有另一種類型的主板。寫一個選項是提供"PCI Express (PCIe) support"的驅動。PCIe是一種改進並且更快速的PCI。
在這之後,下面的驅動應該被啟用以支持PCIe主板上的熱插拔(PCI Express Hotplug driver)。
接著,我們可以啟用/禁用PCIe主板報錯(Root Port Advanced Error Reporting)。這就是PCIe AER驅動。
下一個特性允許用戶使用PCIe EREC(PCI Express ECRC settings control)覆蓋BIOS和固件設置。下一個選項,這是對PCIe的錯誤注射(PCIe AER error injector support)。
下面的設置提供了操作系統控制PCI的活躍狀態和時鐘電源管理(PCI Express ASPM control)。通常上,固件會控制ASPM,但是這個特性允許操作系統採取控制。
如前面一樣,像內核的許多組件一樣,這裡提供了ASPM的調試支持(Debug PCI Express ASPM)。
下面,在這個菜單選擇"Default ASPM policy"。
在這選項之後,下一個是關於允許設備驅動啟消息信號中斷(Message Signaled Interrupts (MSI))。通常上最好允許設備給CPU發送中斷。
為了在系統日誌中加入大量的調試信息,啟用"PCI Debugging"。
下一個選項允許PCI核心檢測是否有必要啟用PCI資源重分配(Enable PCI resource re-allocation detection)。
當在Linux上託管一個虛擬操作系統時,它有時可以用於為虛擬系統保留PCI設備(PCI Stub driver)。在系統虛擬化下,一個操作系統可能在另一個系統的內部或者並行。有時它們會競爭資源。可以為客戶機保留設備可以減小競爭和增加性能。
下面的驅動允許超傳輸設備(hypertransport devices)使用中斷(Interrupts on hypertransport devices)。HyperTransport是一種系統/協議匯流排用於處理器之間的高速通信。
下一個驅動用於PCI虛擬化,它允許虛擬設備間共享它們的物理資源(PCI IOV support)。
PCI頁面請求介面(PRI)使在IOMMU(輸入/輸出內存管理單元)之後的PCI設備能夠從頁錯誤中恢復(PCI PRI support)。頁錯誤不是一種錯誤;它指的是軟體嘗試訪問不在物理內存上的數據的事件。
再次說明,你會在之後的文章中看到更多的需要配置Linux內核特性。
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-6.4457/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive