Linux内核中内存管理相关配置项的详细解析5

这篇具有很好参考价值的文章主要介绍了Linux内核中内存管理相关配置项的详细解析5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接前一篇文章:Linux内核中内存管理相关配置项的详细解析4

三、Page allocator randomization

对应配置变量为:CONFIG_SHUFFLE_PAGE_ALLOCATOR。

此项只有选中和不选中两种状态,默认为选中。

此项的内核源码详细解释为:

Randomization of the page allocator improves the average

utilization of a direct-mapped memory-side-cache. See section

5.2.27 Heterogeneous Memory Attribute Table (HMAT) in the ACPI

6.2a specification for an example of how a platform advertises

the presence of a memory-side-cache. There are also incidental

security benefits as it reduces the predictability of page

allocations to compliment SLAB_FREELIST_RANDOM, but the

default granularity of shuffling on the "MAX_ORDER - 1" i.e,

10th order of pages is selected based on cache utilization

benefits on x86.

While the randomization improves cache utilization it may

negatively impact workloads on platforms without a cache. For

this reason, by default, the randomization is enabled only

after runtime detection of a direct-mapped memory-side-cache.

Otherwise, the randomization may be force enabled with the

'page_alloc.shuffle' kernel command line parameter.

Say Y if unsure.

页面分配器的随机化提高了直接映射的内存侧缓存的平均利用率。请参阅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

对应配置变量为:CONFIG_COMPAT_BRK。

此项只有选中和不选中两种状态,默认为不选中。

此项的内核源码详细解释为:

Randomizing heap placement makes heap exploits harder, but it

also breaks ancient binaries (including anything libc5 based).

This option changes the bootup default to heap randomization

disabled, and can be overridden at runtime by setting

/proc/sys/kernel/randomize_va_space to 2.

On non-ancient distros (post-2000 ones) N is usually a safe choice.

随机放置堆使堆利用更加困难,但它也打破了古老的二进制(包括任何基于libc5的二进制)。此选项将引导默认设置更改为堆随机化禁用,并且可以在运行时通过将/proc/sys/kernel/randomize_va_saspace设置为2来覆盖。

在非古代发行版(2000年后发行版)上,N通常是一个安全的选择。

五、Sparse Memory virtual memmap

对应配置变量为:CONFIG_SPARSEMEM_VMEMMAP。

此项默认选中。

此项的内核源码详细解释为:

SPARSEMEM_VMEMMAP uses a virtually mapped memmap to optimise

pfn_to_page and page_to_pfn operations. This is the most

efficient option when sufficient kernel resources are available.

SPARSEMEM_VMEMMAP使用虚拟映射的memmap来优化pfn_to_page和page_to_pfn操作。当有足够的内核资源可用时,这是最有效的选项。文章来源地址https://www.toymoban.com/news/detail-482065.html

到了这里,关于Linux内核中内存管理相关配置项的详细解析5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入理解Linux内核——内存管理(1)

    提要:本系列文章主要参考 MIT 6.828课程 以及两本书籍 《深入理解Linux内核》 《深入Linux内核架构》 对Linux内核内容进行总结。 内存管理的实现覆盖了多个领域: 内存中的物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab、slub、slob分配器 分配非连续内存块的

    2024年02月13日
    浏览(46)
  • 深入理解Linux内核——内存管理(2)

    提要:本系列文章主要参考 MIT 6.828课程 以及两本书籍 《深入理解Linux内核》 《深入Linux内核架构》 对Linux内核内容进行总结。 内存管理的实现覆盖了多个领域: 内存中的物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab、slub、slob分配器 分配非连续内存块的

    2024年02月13日
    浏览(40)
  • 深入理解Linux内核——内存管理(3)

    提要:本系列文章主要参考 MIT 6.828课程 以及两本书籍 《深入理解Linux内核》 《深入Linux内核架构》 对Linux内核内容进行总结。 内存管理的实现覆盖了多个领域: 内存中的物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab、slub、slob分配器 分配非连续内存块的

    2024年02月13日
    浏览(40)
  • 【嵌入式环境下linux内核及驱动学习笔记-(10-内核内存管理)】

    对于包含MMU(内存管理单元)的处理器而言,linux系统以虚拟内存的方式为每个进程分配最大4GB的内存。这真的4GB的内存空间被分为两个部分–用户空间 与 内核空间。用户空间地地址分布为0~3GB,剩下的3 ~ 4GB 为内核空间。如下图。 用户进程通常只能访问用户空间的虚拟地址

    2024年02月11日
    浏览(53)
  • 深入理解Linux内核——内存管理(4)——伙伴系统(1)

    提要:本系列文章主要参考 MIT 6.828课程 以及两本书籍 《深入理解Linux内核》 《深入Linux内核架构》 对Linux内核内容进行总结。 内存管理的实现覆盖了多个领域: 内存中的物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab、slub、slob分配器 分配非连续内存块的

    2024年02月10日
    浏览(50)
  • 【Linux 内核源码分析】内存管理——Slab 分配器

    在Linux内核中,伙伴分配器是一种内存管理方式,以页为单位进行内存的管理和分配。但是在内核中,经常会面临结构体内存分配问题,而这些结构体的大小通常是小于一页的。如果使用伙伴分配器来分配这些小内存,将造成很大的内存浪费。因此,为了解决这个问题,Sun公

    2024年02月22日
    浏览(56)
  • Linux 内核内存管理 virt_to_page 函数

    virt_to_page宏根据内核虚拟地址返回其struct page 结构体指针。 x86_64: virt_to_page(kaddr) 宏通过__pa宏将虚拟地址转换为物理地址,然后右移PAGE_SHIFT(12位)位将物理地址转换为页帧号pfn,最后调用pfn_to_page将页帧号pfn转换为struct page 结构体指针,实现了将虚拟地址转换为对应struc

    2024年02月12日
    浏览(34)
  • Linux内核(十四)Input 子系统详解 I —— 子系统介绍以及相关结构体解析

    input子系统就是管理输入的子系统 ,和Linux其他子系统一样,都是Linux内核针对某一类设备而创建的框架。 鼠标、键盘、触摸屏等都属于输入设备,Linux将这些设备的共同特性抽象出来,这就形成了input子系统的框架。 Linux内核只需要通过input框架向用户层上报输入事件 (如:

    2024年02月05日
    浏览(43)
  • Linux系统启动流程和内核管理详细介绍

    Linux系统启动流程和内核管理详细介绍 博客主要包含CentOS5 和 CentOS6的启动流程介绍、相关的系统服务管理、Grub启 动引导管理、自定义满足基本使用需求的Linux系统、Centos系统启动故障排错、源码 编译安装linux内核、BusyBox 介绍、Centos 7启动流程介绍、Centos 7 Unit介绍 Centos 7 服

    2024年02月13日
    浏览(39)
  • 驱动开发:内核解析内存四级页表

    当今操作系统普遍采用64位架构,CPU最大寻址能力虽然达到了64位,但其实仅仅只是用到了48位进行寻址,其内存管理采用了 9-9-9-9-12 的分页模式, 9-9-9-9-12 分页表示物理地址拥有四级页表,微软将这四级依次命名为PXE、PPE、PDE、PTE这四项。 关于内存管理和分页模式,不同的操

    2024年02月06日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包