提示
暂不支持移动端,请在PC端查看

首页 难题挑战 演武堂 炼金阁 模板管理 运营中心 光明顶 关于我们
搜索

【鲲鹏】CPU 与内存子系统性能调优之优化方法(五)

楼主
仗剑天涯

76

主题

14

回帖

372

积分

发布时间:2024-1-22 18:18:40 | 显示全部楼层
优化方法:调整内存页的大小

原理
TLB(Translation lookaside buffer)为页表(存放虚拟地址的页地址和物理地址的页地址的映射关系)在CPU内部的高速缓存。
TLB的命中率越高,页表查询性能就越好。

TLB的一行为一个页的映射关系,也就是管理了一个页大小的内存:

TLB管理的内存大小 = TLB行数 x 内存的页大小

同一个CPU的TLB行数固定,因此内存页越大,管理的内存越大,相同业务场景下的TLB命中率就越高。
说明
修改前后可以通过如下命令观察TLB的命中率($PID为进程ID):
perf stat -p $PID -d -d -d

输出结果包含如下信息,其中1.21%0.59%分别表示数据的miss率和指令的miss率。
1,090,788,717 dTLB-loads # 520.592 M/sec

13,213,603 dTLB-load-misses # 1.21% of all dTLB cache hits

669,485,765 iTLB-loads # 319.520 M/sec

3,979,246 iTLB-load-misses # 0.59% of all iTLB cache hits

修改方式
● 调整内核内存页大小
● 设置内存大页
● 设置透明大页

1、设置内核内存页大小
修改linux内核的内存页大小,需要在修改内核编译选项后重新编译内核(详情可参考内核源码编译安装),简要步骤如下所示:
● 执行make mncnfg
● 选择PAGESIZE大小为64KKernel Features-->Page size(64KB)
● 编译和安装内核

2、设置内存大页
● 在内核启动阶段设置
可参考kernel-parameters设置如下内核启动参数:
03.png

● 在运行时设置
设置node中2 MB大页的数量为20
# echo 20 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages

3、设置透明大页
透明大页是以上内存大页的升级版,使用透明大页,内核会自动为进程分配大页,因此无需手动保留大页。

设置/sys/kernel/mm/transparent_hugepage/enabled的值为:
02.png

例如关闭透明大页的设置方法:
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
操作系统还有很多内存参数可以调整,具体参考常用操作系统内存参数说明,常用的操作系统内存参数如下所示
04.png

原文:鲲鹏性能优化十板斧5.0.pdf

版权说明:
本文内容由EDA²侠客岛用户自发贡献,版权归原作者所有,EDA²侠客岛不拥有其著作权,亦不承担相应法律责任,如果您发现本社区中有涉嫌抄袭的内容,请立即联系EDA²侠客岛平台,一经查实,将立刻删除涉嫌侵权内容。


联系我们
EDA²侠客岛邮箱:xiakedao@eda2.com
联系人电话:18191069556
ISEDA官网
IDAS官网
EDA²公众号
企业微信

Powered by Discuz!

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表