当前位置:首页 > 内存 > 正文

内存调度

  • 内存
  • 2024-06-29 14:30:32
  • 9641

一、vivoS9的运行内存拓展技术,可以从内存当中挪几个G给运行内存?内存融合技术可以将存储空间分配给运行内存使用,大幅提升后台多应用场景下的体验,能够同时加载更多应用,进一步提升应用打开速度和响应速度;与1.0相比,内存融合2.0技术可以为运行内存使用安排更多的存储空间,带来更流畅的使用体验。8G/12G可扩展至4G,6G可根据存储内存扩展至2G或1G,4G可扩展至1G,3G可扩展至0.5G(512M)。
剩余存储空间要求:
3G/4G+64G机型:剩余10G+0.5G
3G/4G+128G机型:剩余16G+0.5G
3G/4G+256G型号:剩余25G+0.5G
6G+64G型号:10G+1G
6G+128G型号:剩余16G+2G
6G+256G型号:剩余25G+2G
8G/12G+128G型号:剩余16G+4G
8G/12G+256G型号:剩余25G+4G


二、Linux-NUMA架构之内存和调度

深入理解LinuxNUMA架构:内存管理和调度的要点


LinuxNUMA架构是一种旨在提高系统性能的内存和处理器优化。一个设计。本文重点介绍XLP832架构,并介绍2.6.32.9内核中内存管理和调度的关键要素。我们来看看节点分类、内存映射、CPU访问速度的细微差别,以及如何通过SMP和NUMA配置来优化系统性能。


内存物理地址空间的分配在XLP832架构中非常重要。PCIE配置空间由ECFG_BASE和ECFG_LIMIT定义,存储在PCIeBus0的Device0-23和Function0寄存器区域中。视频资源推荐Linux内存架构、进程调度CFS、服务器开发/后端架构师的学习资料,以便更全面的了解。


内存映射寄存器组每个节点分为四组,每组负责不同类型的DRAM。例如,DRAM_BAR0-7对应PCIeBus0的设备0-23和Function0的寄存器0x54-0x5B。了解这些地址和长度可以深入了解内存布局。


初始化流程


bootmem_init:每个节点都有独立的bootmem管理,为后续的内存分配奠定基础。
Buddy初始化:使用structnode_active_regionearly_node_map初始化区域大小和页集结构,为动态内存分配做准备。

NUMA架构的变化体现在pglist_data结构中,该结构记录了每个节点的zone信息和内存回收相关的变量。区域布局策略由启动参数或内核算法自动确定,有利于在具有足够内存的ZONE_DMA之外进行分配。


内存回收与调度


当节点之间的距离大于20时,NodeDistance对内存回收策略有显着影响。给定节点之间的距离,较近的节点执行ReclaimZone。zone_reclaim_mode允许调整内存回收模式,通过/proc/sys/vm/zone_reclaim_mode设置。


内存分配策略灵活多样,从显式分配的Buddy和SLAB到隐式分配的MPOL策略,都充分利用了NUMA架构的智能性。Buddy通过alloc_pages_node()选择节点,SLAB使用kmem_cache_alloc_node()对本地节点进行优先级排序。


引入CPUSET机制可以让您更好地控制任务的内存和CPU资源。但是,请注意,如果内核内存不足,CPUSET规则可能不再强制执行。系统动态调整,保证稳定运行。


最后,使用/libuma和umactl工具灵活操纵NUMA节点和任务与内存节点之间的关联,可以实现内存资源的灵活调度。


深入理解LinuxNUMA架构,包括掌握内存映射和节点分类,以及灵活运用内存管理和调度策略,最大限度地提高系统性能。现在您已经掌握了这些核心概念,您可以开始构建自己的高效NUMA系统。