对于64位CPU而言,开启此选项可以简化pfn_to_page/page_to_pfn的操作,从而提高内核的运行效率.但是在32位平台则建议关闭.更多细节可以参考这个帖子.
Enable to assign a node which has only movable memory CONFIG_MOVABLE_NODE
允许对一个完整的NUMA节点(CPU和对应的内存)进行热插拔.一般的服务器和个人电脑不需要这么高级的特性. Allow
for
memory
hot-add
CONFIG_MEMORY_HOTPLUG
支持向运行中的系统添加内存.也就是内存热插支持. Allow
for
memory
hot
remove
CONFIG_MEMORY_HOTREMOVE
支持从运行中的系统移除内存.也就是内存热拔支持. Allow
for
balloon
memory
compaction/migration
CONFIG_BALLOON_COMPACTION
允许 balloon memory 压缩/迁移.内存的Ballooning技术是指虚拟机在运行时动态地调整它所占用的宿主机内存资源,该技术在节约内存和灵活分配内存方面有明显的优势,目前所有主流虚拟化方案都支持这项技术(前提是客户机操作系统中必须安装有相应的balloon驱动).由于内存的动态增加和减少会导致内存过度碎片化,特别是对于2M尺寸的连续大内存页来说更加严重,从而严重降低内存性能.允许balloon内存压缩和迁移可以很好的解决在客户机中使用大内存页时内存过度碎片化问题.如果你打算在虚拟机中使用大内存页(huge page),那么建议开启,否则建议关闭. Allow
CONFIG_COMPACTION
允许对大内存页(huge pages)进行压缩.主要是为了解决大内存页的碎片问题.建议在使用大内存页的情况下开启此项,否则建议关闭. Page
CONFIG_MIGRATION
migration
for
memory
compaction
允许在保持虚拟内存页地址不变的情况下移动其所对应的物理内存页的位置.这主要是为了解决两个问题:(1)在NUMA系统上,将物理内存转移到相应的节点上,以加快CPU与内存之间的访问速度.(2)在分配大内存页的时候,可以避免碎片问题. Enable CONFIG_BOUNCE
为那些不能直接访问所有内存范围的驱动程序开启bounce buffer支持.当CONFIG_ZONE_DMA被开启后,这个选项会被默认开启(当然,你也可以在这里手动关闭).这主要是为了那些不具备IOMMU功能的PCI/ISA设备而设,但它对性能有些不利影响.在支持IOMMU的设备上,应该关闭它而是用IOMMU来代替. Enable CONFIG_KSM
KSM(Kernel Samepage Merging)支持:周期性的扫描那些被应用程序标记为\可合并\的地址空间,一旦发现有内容完全相同的页面,就将它们合并为同一个页面,这样就可以节约内存的使用,但对性能有不利影响.推荐和内核虚拟机KVM(Documentation/vm/ksm.txt)或者其他支持\特性的应用程序一起使用.KSM并不默认开启,仅在应用程序设置了\标记,并且 /sys/kernel/mm/ksm/run 被设为\的情况下才会生效. Low
address
space
to
protect
from
user
allocation
KSM
for
page
merging
bounce
buffers
CONFIG_DEFAULT_MMAP_MIN_ADDR
2009年,内核曾经爆过一个严重的NULL指针漏洞,由于其根源是将NULL指针映射到地址\所致,所以从2.6.32版本以后,为了防止此类漏洞再次造成严重后果,特别设置了此选项,用于指定受保护的内存低端地址范围(可以在系统运行时通过 /proc/sys/vm/mmap_min_addr 进行调整),这个范围内的地址禁止任何用户态程序的写入,以从根本上堵死此类漏洞可能对系统造成的损害.但内核这种强加的限制,对于需要使用vm86系统调用(用于在保护模式的进程中模拟8086的实模式)或者需要映射此低端地址空间的程序(bitbake,dosemu,qemu,wine,...)来说,则会造成不兼容,不过目前这些程序的
新版本都进行了改进,以适应内核的这种保护.一般情况下,\是个明智的选择,或者你也可以保持默认值. Enable
recovery
from
hardware
memory
errors
CONFIG_MEMORY_FAILURE
在具备MCA(Machine Check Architecture)恢复机制的系统上,允许内核在物理内存中的发生数据错误的情况下,依然坚强的纠正错误并恢复正常运行.这需要有相应的硬件(通常是ECC内存)支持.有ECC内存的选,没有的就别选了. HWPoison
CONFIG_HWPOISON_INJECT 仅用于调试. Transparent
CONFIG_TRANSPARENT_HUGEPAGE
大多数现代计算机体系结构都支持多种不同的内存页面大小(比如x86_64支持4K和2M以及1G[需要cpu-flags中含有\大于4K的内存页被称为\大页\Hugepage).TLB(页表缓存)是位于CPU内部的分页表(虚拟地址到物理地址的映射表)缓冲区,既高速又很宝贵(尺寸很小).如果系统内存很大(大于4G)又使用4K的内存页,那么分页表将会变得很大而难以在CPU内缓存,从而导致较高的TLB不命中概率,进而降低系统的运行效率.开启大内存页支持之后,就可以使用大页(2M或1G),从而大大缩小分页表的尺寸以大幅提高TLB的命中率,进而优化系统性能.传统上使用大内存页的方法是通过Hugetlbfs虚拟文件系统(CONFIG_HUGETLBFS),但是hugetlbfs需要专门进行配置以及应用程序的特别支持.所以从2.6.38版本开始引入了THP(Transparent Hugepages),目标是替代先前的Hugetlbfs虚拟文件系统(CONFIG_HUGETLBFS).THP允许内核在可能的条件下,透明的(对应用程序来说)使用大页(huge pages)与HugeTLB,THP不像hugetlbfs那样需要专门进行配置以及应用程序的特别支持.THP将这一切都交给操作系统来完成,也不再需要额外的配置,对于应用程序完全透明,因而可用于更广泛的应用程序.这对于数据库/KVM等需要使用大量内存的应用来说,可以提升其效能,但对于内存较小(4G或更少)的个人PC来说就没啥必要了.详见\Documentation/vm/transhuge.txt\文档.
Hugepage
Support
pages
injector
Transparent Hugepage Support sysfs defaults
设置 /sys/kernel/mm/transparent_hugepage/enabled 文件的默认值.\表示总是对所有应用程序启用透明大内存页支持,\表示仅对明确要求该特性的程序启用.建议选\Cross
CONFIG_CROSS_MEMORY_ATTACH
交叉内存支持,也就是process_vm_readv()和process_vm_writev()系统调用支持.从而允许有权限的进程直接读取/写入另外一个进程的地址空间.现在它们只用于openMPI快速进程通信,也可以用于调试程序.未来也许还会有其他用途. Enable cleancache driver to cache clean pages if tmem is present CONFIG_CLEANCACHE
Cleancache可以被看作是内存页的\Victim Cache\受害者缓存),当回收内存页时,先不把它清空,而是把其加入到内核不能直接访问的\transcendent memory\中,这样支持Cleancache的文件系统再次访问这个页时可以直接从\memory\加载它,从而减少磁盘IO的损耗.目前只有zcache和XEN支持\不过将来会有越来越多的应用支持.开启此项后即使此特性不能得到利用,也仅对性能有微小的影响,所以建议开启.更多细节请参考\Documentation/vm/cleancache.txt\文件.
Enable frontswap to cache swap pages if tmem is present CONFIG_FRONTSWAP
Frontswap是和Cleancache非常类似的东西,在传统的swap前加一道内存缓冲(同样位于\memory\中).目的也是减少swap时的磁盘读写.CONFIG_ZSWAP依赖于它,建议开启. Compressed CONFIG_ZSWAP
ZSWAP是一个放置在swap前面的压缩缓存,它可以将需要换出的页压缩存放在内存中的压缩池里,这样在压缩池没有满的时候,可以避免使用真正的swap设备.当压缩池满的时候,则把最老的页解压后写入swap设备.压缩池默认是内存总量的20%(/sys/module/zswap/parameters/max_pool_percent).ZSWAP不仅提升了
cache
for
swap
pages
Memory
Support
swap的整体性能,也变相的增加了swap空间.选中此项后,可以通过\内核引导参数开启此功能. Memory
allocator
for
compressed
pages
CONFIG_ZSMALLOC
zsmalloc压缩内存分配器主要用于给zram提供支持,建议与CONFIG_ZRAM同开关.参考:3种内存压缩方案对比. Use
page
table
mapping
to
access
object
in
zsmalloc
CONFIG_PGTABLE_MAPPING
zsmalloc默认使用基于内存复制的对象映射方法来访问跨越不同页面的区域,但如果某些架构(例如ARM)执行虚拟内存映射的速度快于内存复制,那么应该将此项选\这将导致zsmalloc使用页表映射而不是内存复制来进行对象的映
射
.
你
可
以
在
你
的
系
统
上
使
用
\脚本来测试这两种方法的速度差异.在x86_64平台上,UBUNTU此项默认选\但作者本人未经实验确认是否合理. Check
for
low
memory
corruption
CONFIG_X86_CHECK_BIOS_CORRUPTION
低位内存脏数据检查,即使开启此选项,默认也不会开启此功能(需要明确使用\内核引导选项).这些脏数据通常被认为是有bug的BIOS引起的,默认每60秒(可以通过memory_corruption_check_period内核参数进行调整)扫描一次0-64k(可以通过memory_corruption_check_size内核参数进行调整)之间的区域.这种检查所占用的开销非常小,基本可以忽略不计.如果始终检查到错误,则可以通过\内核引导参数来避免使用这段内存.一般没必要选中,如果你对BIOS不放心,带着它试运行一段时间,确认没问题之后再去掉. Set
the
default
setting
of
memory_corruption_check
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
设置memory_corruption_check的默认值,选中表示默认开启(相当于使用\内核引导选项),不选中表示默认关闭.
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Linux 3.10内核编译选项(8)在线全文阅读。
相关推荐: