成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Devyn的Linux內(nèi)核專題:配置內(nèi)核(2)

系統(tǒng) Linux
這一部分我們講配置內(nèi)核IRQ子系統(tǒng)。中斷請求(IRQ)是硬件發(fā)給處理器的一個信號,它暫時停止一個正在運行的程序并允許一個特殊的程序占用CPU運行。

這一部分我們講配置內(nèi)核IRQ子系統(tǒng)。中斷請求(IRQ)是硬件發(fā)給處理器的一個信號,它暫時停止一個正在運行的程序并允許一個特殊的程序占用CPU運行。

這個目錄中的第一個問題屬于內(nèi)核特性(Expose hardware/virtual IRQ mapping via debugfs (IRQ_DOMAIN_DEBUG))(通過debugfs來顯示硬件/虛擬的IRQ映射),它詢問是否可以使用虛擬的調(diào)試文件系統(tǒng)來映射硬件及Linux上對應(yīng)的IRQ中斷號。這個用作調(diào)試目的,大多數(shù)用戶不需要用到,所以我選擇了"no"。

下一個標題顯示"Timers subsystem"(計時器子系統(tǒng))。第一個有關(guān)定時器子系統(tǒng)的問題是“Tickless System (Dynamic Ticks) (NO_HZ)”(無滴答系統(tǒng))。我選擇了“yes”,這會啟用一個無滴答系統(tǒng)。這意味著定時器中斷將會按需使用,定時器中斷允許任務(wù)以特定的時間間隔執(zhí)行。下一個問題(High Resolution Timer Support (HIGH_RES_TIMERS))問是否支持高精度定時器。并不是所有的硬件支持這個,通常地說,如果硬件很慢或很舊,那么選擇"no",否則像我一樣選擇"yes"。

下一個標題"CPU/Task time and stats accounting"(CPU/任務(wù)用時與狀態(tài)統(tǒng)計),這個是關(guān)于進程的追蹤。第一個問題看上去像這樣:

Cputime accounting (CPU用時統(tǒng)計)

  1. Simple tick based cputime accounting (TICK_CPU_ACCOUNTING) (簡單基于滴答的用時統(tǒng)計)
  2. Full dynticks CPU time accounting (VIRT_CPU_ACCOUNTING_GEN) (NEW) (全動態(tài)滴答的用時統(tǒng)計)
  3. Fine granularity task level IRQ time accounting (IRQ_TIME_ACCOUNTING) (細粒度的任務(wù)級IRQ用時統(tǒng)計)

TICKCPUACCOUNTING會在每個CPU滴答中檢測/proc/stat。這是默認的選項,這個記賬方法非常簡單。

注意:CPU滴答是抽象測量CPU時間的方式。每個處理器、操作系統(tǒng)和安裝的系統(tǒng)都不同,比如說,一個更強大的處理器會比老的處理器擁有更多的CPU滴答。如果你安裝了一個Linux系統(tǒng),然后接著在同一塊磁盤上重新安裝了它,你可能會得到一個更快或更慢的CPU滴答時間(至少一些計算機技術(shù)書上這么說)。通常來講,一個更快的時鐘速度意味著更多的CPU滴答。

如果啟用了VIRT_CPU_ACCOUNTING_GEN,任務(wù)和CPU時間統(tǒng)計將由監(jiān)視內(nèi)核-用戶邊界實現(xiàn)。這個選擇的代價是會增加額外的開銷。

IRQ_TIME_ACCOUNTING記賬方式則通過檢測IRQ狀態(tài)間的時間戳工作,這個性能開銷很小。

我選擇了"1"并被詢問有關(guān)BSD記賬"BSD Process Accounting (BSD_PROCESS_ACCT)"(BSD進程記賬)的問題。這個內(nèi)核特性會記錄每個進程不同的關(guān)閉信息。為了得到一個更小和更快的內(nèi)核,我選擇了"no".

下一組問題看上去就像下面這樣。

  • Export task/process statistics through netlink (TASKSTATS) (通過netlink導(dǎo)出任務(wù)/進程統(tǒng)計數(shù)據(jù))
  • Enable per-task delay accounting (TASK_DELAY_ACCT) (啟用針對每個任務(wù)的延遲統(tǒng)計)
  • Enable extended accounting over taskstats (TASK_XACCT) (啟用taskstats的擴展統(tǒng)計)

TASKSTATS使內(nèi)核可以通過網(wǎng)絡(luò)套接字導(dǎo)出進程統(tǒng)計。網(wǎng)絡(luò)套接字是內(nèi)核和用戶空間進程間IPC通信的一種形式。TASKDELAY\ACCT監(jiān)視進程并注意資源訪問的延遲。比如,TASKDELAYACCT可以看到X進程正在為了CPU時間而等待,如果TASK_DELAY_ACCT觀察到進程已經(jīng)等待了太長時間,這個進程接著就會被給予一些CPU時間。TASK_XACCT會收集額外的統(tǒng)計數(shù)據(jù),為了更小的內(nèi)核負載我會禁用這個。

現(xiàn)在接下來的目錄就會顯示RCU子系統(tǒng):讀取-復(fù)制-更新子系統(tǒng)是一種低負載的同步機制,它允許程序查看到正在被修改/更新的文件。配置工具已經(jīng)回答了第一個問題。

RCU Implementation (RCU 實現(xiàn)方式)

> 1. Tree-based hierarchical RCU (TREE_RCU) (樹形分層結(jié)構(gòu)的RCU)

choice[1]: 1

這里就選擇“1”。除了TREE_RCU,還有classic RCU(更老的實現(xiàn))。下一個問題(Consider userspace as in RCU extended quiescent state (RCU_USER_QS) [N/y/?])(是否在用戶空間記錄擴展的quiescent狀態(tài))問RCU是否可以在CPU運行在用戶空間時設(shè)置一個特殊的quiescent狀態(tài)。這個選項通常被禁用,因為這會增加太多消耗。下面是另一個RCU問題(Tree-based hierarchical RCU fanout value (RCU_FANOUT) [64])(樹形分層結(jié)構(gòu)的RCU端點數(shù)),問的是關(guān)于端點數(shù)。下一個問題(Tree-based hierarchical RCU leaf-level fanout value (RCU_FANOUT_LEAF) [16])(樹形分層結(jié)構(gòu)的RCU葉級端點數(shù)),是另外一個關(guān)于端點數(shù)的問題,但它只處理葉級。還有另外一個RCU問題(Disable tree-based hierarchical RCU auto-balancing (RCU_FANOUT_EXACT) [N/y/?])(是否禁用樹形分層結(jié)構(gòu)的RCU的自動平衡),詢問是否禁用RCU自動平衡樹,而采用上述的端點數(shù)。

接下來,配置腳本將會詢問"Accelerate last non-dyntick-idle CPU's grace periods (RCU_FAST_NO_HZ)"(加速最后的非dyntick-idle CPU的RCU寬限期)。在這之后會顯示"Offload RCU callback processing from boot-selected CPUs (RCU_NOCB_CPU)"(從選擇引導(dǎo)的CPU里面卸載RCU回調(diào))。(譯注:此處作者沒做解釋。前一個能夠節(jié)省電力,但是降低了性能;后一個用于調(diào)試。)

下一個問題非常重要(Kernel .config support (IKCONFIG))(內(nèi)核的.config支持)。開發(fā)人員可以選擇保存由這個配置工具生成的設(shè)置到一個文件中。這個文件可以放在內(nèi)核中,也可在一個模塊中,或者完全不保存。這個文件可以被想要編譯一個完全跟某人相同內(nèi)核的開發(fā)者使用。這個文件還可以幫助開發(fā)人員使用一個更新的編譯器重新編譯一個內(nèi)核。舉例來說,開發(fā)人員配置并編譯了一個內(nèi)核,然而編譯器有一些bug,但開發(fā)人員仍然需要一個使用這些設(shè)置的內(nèi)核。而值得慶幸的是,開發(fā)人員可以升級他們的編譯器,并使用設(shè)置文件來節(jié)省他們重新配置內(nèi)核的時間。開發(fā)人員也可以在另一臺計算機上保存源代碼和配置文件并編譯內(nèi)核。至于另一個目的,開發(fā)人員可以加載該文件,并根據(jù)需要調(diào)整設(shè)置。我選擇保存配置文件在一個模塊中,這個問題 "Enable access to .config through /proc/config.gz (IKCONFIG_PROC)"(啟用通過/proc/config.gz來訪問.config的功能)是詢問這個文件是否是可以通過這次方式訪問的,我選擇了"yes"。

下一個問題是內(nèi)核使用多大的log緩沖區(qū)(Kernel log buffer size (16 => 64KB, 17 => 128KB) (LOG_BUF_SHIFT) [17])(內(nèi)核日志緩沖區(qū)大小)。小的緩沖區(qū)意味著它無法像更大的緩沖區(qū)那樣保持日志更長的時間。這個選擇取決于開發(fā)者想要日志保持的時間,我選擇的是"12"。

接著,出現(xiàn)了另外一個問題。該問題詢問關(guān)于是否啟用NUMA(非一致性內(nèi)存訪問)的內(nèi)存/任務(wù)的均衡(Automatically enable NUMA aware memory/task placement (NUMA_BALANCING_DEFAULT_ENABLED))(自動啟用NUMA的內(nèi)存/任務(wù)均衡)。如果在NUMA的機器上設(shè)置了該選項,那么NUMA自動平衡就會啟用。在NUMA下,處理器可以比非本地內(nèi)存(內(nèi)存分配給另外一個處理器或在處理器之間共享的內(nèi)存)更快地訪問它的本地內(nèi)存。如果上面啟用了(我啟用了),那么最好對這個問題"Memory placement aware NUMA scheduler (NUMA_BALANCING)"(由NUMA調(diào)度器進行內(nèi)存分配)回答"yes",這是一個NUMA調(diào)度器。

在新的標題"Control Group support"(Cgroup支持)下,因為先前的選擇,"Control Group support (CGROUPS)"(Cgroup支持)被自動地回答了"yes"。

以下設(shè)定(Example debug cgroup subsystem (CGROUP_DEBUG))(導(dǎo)出Cgroup子系統(tǒng)的調(diào)試信息)是啟用一個用于調(diào)試cgroup框架的一個簡單cgroup子系統(tǒng)。下一個選項(Freezer cgroup subsystem (CGROUP_FREEZER))(凍結(jié)Cgroup子系統(tǒng))可以讓程序員可以凍結(jié)或解凍cgroup內(nèi)的任務(wù)。

注意:cgroup是一組進程。

下面我們要求回答"Device controller for cgroups (CGROUP_DEVICE)"(Cgroup的設(shè)備控制器)。cgroup(控制組)是一種用來控制資源使用的特性。回答"yes"可以允許設(shè)備cgroup的白名單可以使用open和mknod系統(tǒng)調(diào)用(用來創(chuàng)建文件系統(tǒng)節(jié)點的系統(tǒng)調(diào)用)。

下一個問題(Cpuset support (CPUSETS))(CPU分組支持)詢問的是內(nèi)核是否可以創(chuàng)建和管理CPU分組。這允許管理員可以在一個系統(tǒng)上動態(tài)分配各組內(nèi)存節(jié)點,并分配任務(wù)在這些內(nèi)存上運行。這通常用于SMP和NUMA系統(tǒng)中。我這個問題回答的是"no"。

注意:請記住,如果我沒有指定我選的是什么,那么我選的就是默認選項。

啟用cgroup統(tǒng)計子系統(tǒng)(Simple CPU accounting cgroup subsystem (CGROUP_CPUACCT))(Cgroup子系統(tǒng)的簡單CPU統(tǒng)計)會生成一個資源控制器來監(jiān)控在一個cgroup組內(nèi)的獨立任務(wù)的CPU使用情況。我選擇了"no"。

資源計數(shù)器(Resource counters (RESOURCE_COUNTERS))使控制器的獨立資源統(tǒng)計功能能夠統(tǒng)計cgroup。我選擇了"no"。

下一個問題(Enable perf_event per-cpu per-container group (cgroup) monitoring (CGROUP_PERF))(啟用每個CPU、每個容器組的pref_event監(jiān)控)允許開發(fā)者擴展每個CPU的模式,使它可以只監(jiān)控運行在特定CPU上的一個特別的cgroup組的線程。

下一章節(jié)是"Group CPU Scheduler"(CPU分組調(diào)度器)。前兩個已經(jīng)回答的問題包括:

Group CPU scheduler (CGROUPSCHED)(CPU分組調(diào)度器) Group scheduling for SCHEDOTHER (FAIRGROUP\SCHED)(SCHED_OTHER分組調(diào)度)

第一個已回答的問題(CPU bandwidth provisioning for FAIR_GROUP_SCHED (CFS_BANDWIDTH))(CPU帶寬分配)詢問的是內(nèi)核是否允許用戶設(shè)置在公平組調(diào)度器內(nèi)執(zhí)行的任務(wù)的CPU帶寬限制。沒有限制的組會被認為不受約束,并會沒有限制地運行。

注意:并不是所有內(nèi)核選項都在這里。我這里提到的組只是為了便于閱讀,并挑出那些新的和大的部分。并不需要了解所有的分組。分組有助于使用圖形工具配置內(nèi)核,這樣開發(fā)者可以在搜索特定的設(shè)置時,直接通過分組菜單找到。

開發(fā)者可以通過回答"Group scheduling for SCHED_RR/FIFO (RT_GROUP_SCHED)"(SCHED_RR/FIFO分組調(diào)度)這個問題為"yes"來讓用戶可以分配CPU帶寬到任務(wù)組中。

下一個問題是"Block IO controller (BLK_CGROUP)"(阻塞IO控制器)。任務(wù)組可以被識別,并且它們的磁盤帶寬是由使用塊IO控制器實現(xiàn)的CFQ IO調(diào)度器分配的。BIO在塊級的限制邏輯使用塊IO控制器來提供設(shè)備上的IO速率上限。

這里有一個調(diào)試問題(Enable Block IO controller debugging (DEBUGBLKCGROUP) [N/y/?])(啟用阻塞IO控制器的調(diào)試)詢問是否啟用塊IO控制器的調(diào)試。為了制作一個精簡的內(nèi)核,最好禁用這個特性。

為了啟用內(nèi)核中的檢查點和還原特性。這個問題“Checkpoint/restore support (CHECKPOINT_RESTORE)”(檢查點及還原支持)可以選擇“yes”,不過為了更低的負載這里我選擇了“n”。啟用這個特性會增加輔助的進程控制代碼來設(shè)置進程的代碼段、數(shù)據(jù)段和堆的大小,并增加了一些額外的程序入口。

下面我們就要配置命名空間的支持了。命名空間是一組標識符的容器。比如,/usr/lib/python3/dist-packages/re.py就是一個標識符,/usr/lib/python3/dist-packages/就是一個命名空間。而re.py是這個命名空間下的本地名稱。

第一個命名空間問題(Namespaces support (NAMESPACES))詢問的是是否啟用命名空間。這允許可以使用相同的PID但在不同的命名空間內(nèi)(譯注:原文為" This will allow the same PIDs (Process ID) to be used but indifferent namespaces",這里indiffernt根據(jù)上下文應(yīng)該是少了空格),否則PID永遠不會重復(fù)。

下一個問題(UTS namespace (UTS_NS))詢問是否可以讓UTS命名空間內(nèi)的任務(wù)可以在uname()系統(tǒng)調(diào)用中看到不同的信息。uname()系統(tǒng)調(diào)用提供查看機器和操作系統(tǒng)的信息。

啟用IPC命名空間(IPC namespace (IPC_NS))將允許在這個命名空間內(nèi)的任務(wù)與其他命名空間內(nèi)相對應(yīng)IPC ID的對象協(xié)同工作。

PID命名空間(PID Namespaces (PID_NS))就是進程ID命名空間。這可以使不同的進程在不同的PID命名空間使用相同的PID。這是一個容器的構(gòu)建塊。

接下來,啟用網(wǎng)絡(luò)命名空間(Network namespace (NET_NS))可以使用戶創(chuàng)建一個擁有多個實例的網(wǎng)絡(luò)棧。

當啟用后,自動進程分組調(diào)度(SCHED_AUTOGROUP)會填充并創(chuàng)建任務(wù)組來優(yōu)化桌面程序的調(diào)度。它將把占用大量資源的應(yīng)用程序放在它們自己的任務(wù)組,這有助于性能提升。

這里是一個調(diào)試特性,除非你有特別的需求否則應(yīng)該禁用它。這個問題(Enable deprecated sysfs features to support old userspace tools (SYSFS_DEPRECATED))(啟用不推薦的sysfs功能來支持舊式的用戶空間工具)詢問是否啟用sysfs,這是調(diào)試內(nèi)核時用的虛擬文件系統(tǒng)。

接下來,因為當前的配置需要它,所以"Kernel->user space relay support (formerly relayfs) (RELAY)"(內(nèi)核->用戶空間的中繼支持,即relayfs)已經(jīng)被設(shè)成"yes"了。最好啟用initrd支持(Initial RAM filesystem and RAM disk (initramfs/initrd) support (BLK_DEV_INITRD))(初始化內(nèi)存文件系統(tǒng)和內(nèi)存盤(initramfs/initrd))。

用戶會被問及哪里放置initramfs源文件。如果沒有需要,請留空。

接下來,開發(fā)人員會被詢問關(guān)于初始虛擬磁盤(Linux的內(nèi)核映像文件)所支持的壓縮格式。你可以啟用所有支持的壓縮格式。

Support initial ramdisks compressed using gzip (RD_GZIP)

Support initial ramdisks compressed using bzip2 (RD_BZIP2)

Support initial ramdisks compressed using LZMA (RD_LZMA)

Support initial ramdisks compressed using XZ (RD_XZ)

Support initial ramdisks compressed using LZO (RD_LZO)

這里設(shè)置了內(nèi)核的編譯內(nèi)核編譯選項(Optimize for size (CC_OPTIMIZE_FOR_SIZE))(優(yōu)化大小)。開發(fā)者可以讓編譯器在編譯時優(yōu)化代碼。我選擇了"yes"。

用戶想要配置更多的內(nèi)核特性,那么下個問題就回答"yes"(Configure standard kernel features (expert users) (EXPERT))(配置標準內(nèi)核特性(專家級用戶))。

要啟用過時的16位UID系統(tǒng)調(diào)用封裝器,這個問題設(shè)成"yes"(Enable 16-bit UID system calls (UID16))。系統(tǒng)調(diào)用就會使用16位UID。

推薦啟用"sysctl syscall"(Sysctl syscall support (SYSCTL_SYSCALL))支持。這使/proc/sys成為二進制路徑的接口。

接下來的兩個問題已經(jīng)被預(yù)先回答了"yes",它們是"Load all symbols for debugging/ksymoops (KALLSYMS)"(載入所以的調(diào)試符號)和"“Include all symbols in kallsyms (KALLSYMS_ALL)"(包括所有的kallsyms符號)。這些都是啟用調(diào)試標志。

下一步,開發(fā)者應(yīng)該啟用printk支持( (Enable support for printk (PRINTK))),這會輸出內(nèi)核消息到內(nèi)核日志中。這在內(nèi)核出錯時是很重要的。編譯一個"啞巴"內(nèi)核并不是一個好主意。然而,如果我們啟用了這個支持,就會被一些開發(fā)者看到這些出錯,要么就不要啟用。

除非有必要,開發(fā)者可以禁用bug支持(BUG() support (BUG))。禁用這項將會不支持WARN信息和BUG信息。這會減小內(nèi)核的體積。

via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-2.4318/

責任編輯:奔跑的冰淇淋 來源: Linux中國
相關(guān)推薦

2013-11-07 13:59:56

Linux內(nèi)核

2013-11-25 14:07:11

Linux內(nèi)核內(nèi)核特性

2013-11-05 09:58:39

Linux內(nèi)核

2013-11-12 11:01:46

Linux內(nèi)核

2013-10-31 14:09:14

Linux內(nèi)核

2013-12-18 14:44:10

2013-11-05 09:55:37

2013-11-25 17:39:17

Linux內(nèi)核PCIACPI

2013-10-31 14:15:10

2013-10-31 16:29:10

Linux內(nèi)核

2013-12-18 11:14:57

Linux內(nèi)核Linux Kerne

2013-12-20 13:08:12

Linux內(nèi)核服務(wù)器

2009-12-09 09:27:35

linux內(nèi)核

2021-02-20 06:08:07

LinuxWindows內(nèi)核

2011-01-14 16:23:46

Linux內(nèi)核

2010-03-02 09:17:32

Linux local

2013-05-13 09:52:52

Windows內(nèi)核Linux內(nèi)核

2010-01-13 09:58:42

2021-05-19 07:56:26

Linux內(nèi)核搶占

2011-01-11 13:45:06

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久国产精品亚洲 | 国产美女网站 | 黄色一级免费观看 | 日本欧美视频 | 免费v片 | 国产精品一区三区 | 国产精品亚洲片在线播放 | 99视频在线播放 | 亚洲成人免费视频 | 精品久久久久久一区二区 | 欧美一区二区三区,视频 | 91欧美激情一区二区三区成人 | 伊人网站视频 | 九九久久国产 | 羞羞视频免费观看入口 | 麻豆精品国产91久久久久久 | 成人午夜免费福利视频 | 成人乱人乱一区二区三区软件 | 亚洲狠狠 | 色黄网站 | 国产免费一区二区三区最新6 | 国产精品国产亚洲精品看不卡15 | 五月天婷婷狠狠 | 亚洲精品v | 韩国精品一区二区三区 | 色综合网站 | 日韩在线中文字幕 | 九九久久国产精品 | av永久| 一本一道久久a久久精品综合蜜臀 | av网站在线看 | 电影午夜精品一区二区三区 | 亚洲精品www| 国产一区二区日韩 | 少妇一级淫片免费播放 | 亚洲成人一区二区 | 91视频在线| 日韩aⅴ视频 | 欧美 日韩精品 | 久久国产一区二区 | 日韩一区在线播放 |