性能测试之Kswapd

1.为什么要进行内存回收?
内核之所以要进行内存回收,主要原因有两个:
1)内核需要为任何时刻突发到来的内存申请提供足够的内存。所以一般情况下保证有足够的free空间对于内核来说是必要的。
2)另外,Linux内核使用cache的策略虽然是不用白不用,内核会使用内存中的page cache对部分文件进行缓存,以便提升文件的读写效率。
所以内核有必要设计一个周期性回收内存的机制,以便cache的使用和其他相关内存的使用不至于让系统的剩余内存长期处于很少的状态。
当真的有大于空闲内存的申请到来的时候,会触发强制内存回收。

2.内核在应对这两类回收的需求下,分别实现了两种不同的机制:
	一个是使用 kswapd进程对内存进行周期检查 ,以保证平常状态下剩余内存尽可能够用。
	另一个是 直接内存回收(directpagereclaim) ,就是当内存分配时没有空闲内存可以满足要求时,触发直接内存回收。
	这两种内存回收的触发路径不同:
	一个是由内核进程kswapd直接调用内存回收的逻辑进行内存回收;
	参见mm/vmscan.c中的kswapd()主逻辑
	另一个是内存申请的时候进入slow path的内存申请逻辑进行回收。
	参见内核代码中的mm/page_alloc.c中的__alloc_pages_slowpath方法
	这两个方法中实际进行内存回收的过程殊途同归,最终都是 调用shrink_zone() 方法进行针对每个zone的内存页缩减。

Kswapd是linux中用于页面回收的内核线程。
页面回收,并不是回收得越多越好,而是力求达到一种balanced。因为页面回收总是以cache丢弃、内存swap、等为代价的,对系统性能会有一定程度的影响。而balanced,就是既要保证性能,又要应付好新来的页面分配请求。

### 高通平台 DDR 调优方法 #### 1. 理解 DDR 接口特性 DDR (Double Data Rate) 存储器接口在高通平台上扮演着至关重要的角色,尤其是在处理大量数据传输的应用场景下。对于 PCIE, USB, MIPI, DDR3/4 和 LPDDR4/4X 的理解有助于更好地优化这些高速总线接口的设计和配置[^1]。 #### 2. 使用 mperf 工具评估性能瓶颈 为了有效调优 DDR 性能,在高通平台上可以利用 `mperf` 这样的工具来测量移动或嵌入式设备中的运算符执行效率。尽管该工具通常用于评估 CPU 或 GPU 上的操作表现,但它同样适用于分析内存带宽的影响因素。需要注意的是,默认情况下它可能只针对单一指令(如 FMA)进行测试,因此建议根据具体应用场景调整测试策略以获得更全面的结果[^2]。 ```bash # 示例命令:运行 mperf 测试并记录结果 ./mperf --test=ddr_bandwidth --output=result.txt ``` #### 3. 内存管理参数调整 Kswapd 是 Linux 内核的一部分,负责页面回收工作,从而影响到整个系统的响应速度以及应用程序的表现。通过对 kswapd 参数的适当设置,可以在一定程度上改善因频繁交换而引起的延迟问题,间接提升 DDR 访问效率[^3]。 ```bash # 修改 /proc/sys/vm/swappiness 值减少不必要的磁盘 I/O 操作 echo "10" > /proc/sys/vm/swappiness ``` #### 4. 应用层面上的数据布局优化 除了底层硬件层面的努力外,软件开发者也可以采取措施提高程序对 DRAM 的利用率。这包括但不限于: - **缓存友好型算法**:确保常用数据尽可能驻留在 L1/L2 缓存内; - **预取技术**:提前加载即将使用的数据至更快的速度级别存储介质中; - **连续分配大块内存**:避免碎片化带来的额外开销。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值