公告

Gentoo交流群:87709706 欢迎您的加入

#1 2024-02-11 17:11:05

batsom
管理团队
注册时间: 2022-08-03
帖子: 594
个人网站

Linux/x86 6.6.13 内核配置选项 -- Memory Management options

[ ] Support for paging of anonymous memory (swap)  --->
翻译:支持匿名内存分页(交换)
说明:使你的内核支持虚拟内存,即是交换分区(swap)

     SLAB allocator options  ---> 
翻译:SLAB 分配器选项
说明:slab allocator背后的思想是缓存经常使用的object并保持在初始状态供kernel使用

[ ] Page allocator randomization 
翻译:页面分配器随机化
说明:页面分配器的随机化提高了直接映射的内存侧缓存的平均利用率。请参阅ACPI 6.2a规范中的第5.2.27节异构内存属性表(HMAT),以了解平台如何通告memory-side-cache的存在。还有一些附带的安全好处,因为它降低了页面分配的可预测性,以补充SLAB_FREELIST_RANDOM,但是在“MAX_ORDER-1”上混洗(shufffle)的默认粒度,即页面的第10个顺序是基于x86上的缓存利用率优势选择的。

虽然随机化提高了缓存利用率,但它可能会对没有缓存的平台上的工作负载产生负面影响。出于这个原因,默认情况下,只有在运行时检测到直接映射的内存侧缓存后,才会启用随机化。否则,可以使用“page_alloc.shuffle”内核命令行参数强制启用随机化。

如果不确定,选择Y

[ ] Disable heap randomization
翻译:禁用堆随机化
说明:随机放置堆使堆利用更加困难,但它也打破了古老的二进制(包括任何基于libc5的二进制)。此选项将引导默认设置更改为堆随机化禁用,并且可以在运行时通过将/proc/sys/kernel/randomize_va_saspace设置为2来覆盖。
在非古代发行版(2000年后发行版)上,N通常是一个安全的选择

                     
- - Sparse Memory virtual memmap
翻译:稀疏内存虚拟内存映射
说明:SPARSEMEM_VMEMMAP使用虚拟映射的memmap来优化pfn_to_page和page_to_pfn操作。当有足够的内核资源可用时,这是最有效的选项

[ ] Memory hotplug  --->
翻译:内存热插拔
说明:内存热插拔支持. Device ID: PNP0C80 (find /sys/devices/ -name "PNP0C80*")

[ ] Allow for balloon memory compaction/migration
翻译:允许气球内存压缩/迁移
说明:通过膨胀(ballooning)引入的内存碎片可能显著减少可以在客户机内使用的2MB连续内存块的数量,从而施加与访客工作负载可以使用的透明(内存)大页的数量减少相关联的性能惩罚。允许对作为内存balloon设备的一部分登记的内存页进行压缩和迁移,可以避免上述情况,并有助于改进内存碎片整理。

- - Allow for memory compaction
翻译:
说明:压缩是唯一可靠地形成高阶(较大的物理连续)内存块的内存管理组件。页面分配器严重依赖于压缩,而缺少该功能可能会导致对高阶内存请求的意外OOM killer调用。除非确实有充分的理由,否则不应该禁用此选项,并且我们真的很有兴趣在linux-mm@kvack.org得到反馈

[ ] Free page reporting
翻译:
说明:自由页面报告允许从伙伴分配器增量获取自由页面,以便向另一实体报告那些页面,诸如hypervisor,从而可以在主机内释放内存以用于其它用途

- - Page migration
翻译:
说明:允许在不更改虚拟地址的情况下迁移进程页面的物理位置。这在两种情况下有用:第一种情况是在NUMA系统上,将页面放在离所访问处理器更近的位置;第二种情况是当分配大页时,作为迁移可以重新定位页面以满足大页分配,而代替回收

[ ] Enable KSM for page merging
翻译:
说明:KSM核心设计思想是基于写时复制机制COW,也就是将内容相同的页面合并成一个只读页面,从而释放出空闲物理页面。
KSM的实现可以分为两部分:一是启动内核线程ksmd,等待唤醒进行页面扫描和合并;二是madvise唤醒内核线程ksmd。

(65536) Low address space to protect from user allocation
翻译:低地址空间,可防止用户分配
说明:这是低端虚拟内存的一部分,应该保护它不受用户空间分配的影响。防止用户向低页写入有助于减少内核NULL指针错误的影响。

对于大多数拥有大量地址空间的ia64、ppc64和x86用户来说,65536的值是合理的,应该不会造成任何问题。在arm及其它架构中其应该不高于32768。使用vm86功能或需要映射此低地址空间的程序将需要CAP_SYS_RAWIO,或者通过将值设置为0来禁用此保护。

[ ] Enable recovery from hardware memory errors
翻译:启用从硬件内存错误中恢复
说明:使代码能够通过MCA recovery从系统上的某些内存故障中恢复。这允许系统即使在某些内存存在未更正的错误时也能继续运行。这需要特殊的硬件支持,通常需要ECC存储器。

< >   HWPoison pages injector
翻译:HW毒页注射器
说明:此项只有选中和不选中两种状态,默认为不选中。只有当上一项“nable recovery from hardware memory errors”被选中时,此项才会出现。

[ ] Transparent Hugepage Support  --->
翻译:透明护垫支撑
说明:Transparent Hugepages允许内核在任何可能的时候对应用程序透明地使用巨页和巨页表。该特征可以提高某些应用程序的计算性能,通过在内存分配期间加速页面故障,通过减少tlb未命中的次数以及加快页表遍历

[ ] Contiguous Memory Allocator
翻译:连续内存分配器
说明:连续内存分配器(CMA)是一个框架,它允许为物理连续内存管理设置特定于计算机的配置。然后根据该配置分配设备的内存。该框架的主要作用不是分配内存,而是解析和管理内存配置,并充当设备驱动程序和可插拔分配器之间的中介。因此,它不依赖于任何内存分配方法或策略。

嵌入式系统上的各种设备不支持散点图和/或IO映射,因此需要连续的内存块才能运行。它们包括相机,硬件视频解码器和编码器等设备。此类设备通常需要大的内存缓冲区(例如,全高清帧的大小大于2兆像素,即,内存大小超过6 MB),这使得kmalloc()之类的机制无效。一些嵌入式设备对缓冲区提出了额外的要求,例如,它们只能在分配给特定位置/内存库(如果系统具有多个内存库)的缓冲区或与特定内存边界对齐的缓冲区上运行。嵌入式设备的开发最近出现了很大的增长(尤其是在V4L领域),许多这样的驱动程序都包含了自己的内存分配代码。他们中的大多数使用基于bootmem的方法

[ ]   CMA debug messages (DEVELOPMENT)
翻译:CMA调试消息
说明:

[ ]   CMA debugfs interface
翻译:CMA调试接口
说明:

[ ]   CMA information through sysfs interface
翻译:通过sysfs接口的CMA信息
说明:

( )   Maximum count of the CMA areas
翻译:CMA区域的最大计数
说明:

[ ] Track memory changes
翻译:跟踪内存更改
说明:此选项通过在pte-s上引入软脏位来使能内存改变跟踪。当有人在页面中写入时,它会设置这个位,就像普通的脏位一样,但与后者不同的是,它可以手动清除

[ ] Defer initialisation of struct pages to kthreads
翻译:将结构页的初始化推迟到k线程
说明:通常,所有的结构页都是在早期启动期间在单个线程中初始化的。在非常大的机器上,这可能需要相当长的时间。如果设置了此选项,大型机器将在启动时启动memmap的一个子集,然后并行初始化其余部分。这对系统生命周期早期运行的任务有潜在的性能影响,直到这些内核线程(kthread)完成初始化

[ ] Enable idle page tracking
翻译:启用空闲页面跟踪
说明:此功能允许估计在给定时间段内未被触及的用户页面的数量。此信息可用于调整内存组限制和/或用于计算集群内的作业布局。
有关更多详细信息,请参阅Documentation/admin guide/mm/idle_page_tracking.rst

[ ] Device memory (pmem, HMM, etc...) hotplug support
翻译:设备内存(pmem、HMM等)热插拔支持
说明:设备内存热插拔支持允许建立pmem,或其它设备驱动程序发现的存储器区域,在memmap中。这允许pfn_to_page()查找在O_DIRECT操作中使用DAX映射所需的其他“设备物理”地址

[ ] Unaddressable device memory (GPU memory, ...)
翻译:无法寻址的设备内存(GPU内存,…)
说明:允许创建结构页来表示不可调整的设备内存;举例来说,只能从设备(或设备组)访问的存储器。你可能还希望选择HMM_MIRROR

[ ] Collect percpu memory statistics
翻译:收集percpu内存统计信息
说明:此功能通过debugfs收集并公开统计信息。该信息包括全局和每块统计,其可用于帮助理解percpu存储器的使用

[ ] Enable infrastructure for get_user_pages()-related unit tests
翻译:为get_user_pages()相关的单元测试启用基础结构
说明:提供/sys/kernel/debug/gup_test,其反过来提供了一种进行ioctl调用的方法,该方法可以为get_user_pages*()和pin_user_page*()API调用族启动基于内核的单元测试。

这些测试包括get_user_pages*()和pin_user_pages*()快速变体的基准测试,以及非快速变体的烟雾测试。

还有一个子测试,允许在用户空间地址范围内的多达8个页面(由命令行参数选择)中的任何一个页面上运行dump_page()。这些页面要么通过pin_user_pages*()锁定,要么通过get_user_pages*()锁定,由其它命令行参数指定。

< > Enable a module to run time tests on dma_pool
翻译:启用模块在dma_pool上运行时间测试
说明:待确定作用

[ ] Anonymous VMA name support
翻译:匿名VMA名称支持
说明:允许命名匿名虚拟内存区域。
此特性允许为虚拟内存区域分配名称。指定的名称可以之后从/proc/pid/maps和/proc/pid/smaps检索,并且帮助识别各个匿名内存区域。
为匿名虚拟内存区域分配名称可以会阻止该区域由于名称不同而与相邻的虚拟内存区域合并

[ ] Enable userfaultfd() system call
翻译:
说明:使能userfaultfd()系统调用,该调用允许拦截和处理用户区域中的页面错误。

[ ] Userfaultfd write protection support for shmem/hugetlbfs
翻译:
说明:允许创建用于userfaultfd写入保护目的的标记PTE。需要对类似于shmem和hugetlbfs等文件支持的内存类型启用userfaultfd写保护

[ ] Multi-Gen LRU
翻译:
说明:用于过量使用内存的高性能LRU实现。有关详细信息,请参阅Documentation/admin guide/mm/multigen_lru.rst

[ ]   Enable by default
翻译:默认情况下启用
说明:此选项默认使能multi-gen LRU

[ ]   Full stats for debugging
翻译:
说明:除非打算查看被逐出的生成物的历史统计数据以进行调试,否则不要启用此选项。
此选项具有per-memcg和per-node的内存开销

离线

页脚

Powered by FluxBB

本站由XREA提供空间支持