性能优化特性之:TLBI - TLB range优化

简介: 本文介绍了倚天实例上的内存优化特性:TLBi,并从优化原理、使用方法进行详细阐述。

优化原理

TLB flush range是arm64芯片在armv8.4-TLBI版本上支持的一种指令集批量处理地址刷新的特性,需要内核配置文件开启CONFIG_ARM64_TLB_RANGE功能,此外还需要arm64芯片支持armv8.4-TLBI特性。 传统的TLB flush操作方式,以stride为粒度去进行TLB flush, 这种方式存在明显弊端,对于需要刷新大量的地址范围,需要将其拆分为一个个stride粒度去进行刷新,导致耗时较多。TLB flush range的意义在于动态切割地址范围, 按照如下设计思想: 每一次刷新页数目由numa和scale两个变量决定,num值方位为(-1, 31), 通过__TLBI_RANGE_NUM传入的剩余需要刷新的pages数以及scale的值获得num具体的值,当num=-1时,表示刷新完成。

#define TLBI_RANGE_MASK                 GENMASK_ULL(4, 0)
#define __TLBI_RANGE_NUM(pages, scale)  \
          ((((pages) >> (5 * (scale) + 1)) & TLBI_RANGE_MASK) - 1)

scale的值按照0逐渐递增,结合num值,统计出此次刷新的页数。

#define __TLBI_RANGE_PAGES(num, scale)   \
                  ((unsigned long)((num) + 1) << (5 * (scale) + 1))

按照rvale1is格式,将地址start, 以及scale和num值,写入rvale1is寄存器中,对页进行刷新操作。

__TLBI_VADDR_RANGE(start, asid, scale, num, tlb_level);
__tlbi(rvale1is, addr);
__tlbi_user(rvale1is, addr);

更多可参考 https://developer.arm.com/documentation/ddi0595/2021-12/AArch64-Instructions/TLBI-RVALE1IS--TLBI-RVALE1ISNXS--TLB-Range-Invalidate-by-VA--Last-level--EL1--Inner-Shareable

使用方法

使用Alinux3.2208及以后版本

Alinux3在2208版本(内核版本5.10.134-12_rc1)已默认启用该特性



---------------------------------------------------------------------------------------

更多调优信息,请参考:

龙蜥社区:https://openanolis.cn/

KeenTune SIG:https://openanolis.cn/sig/KeenTune

阿里云龙蜥操作系统专区:https://developer.aliyun.com/group/aliyun_linux

相关文章
|
安全 Anolis
性能优化特性之:E0PD
本文介绍了倚天实例上进行安全特性关闭以提升性能的特性:E0PD,并且从优化原理、使用方法、性能收益等方面做了详细阐述。
|
数据中心 Anolis
性能优化特性之:LSE指令集编译优化
本文介绍了倚天实例上的编译优化特性:LSE,并从优化原理、使用方法进行了详细阐述。
|
存储 SQL 缓存
Perf Arm SPE介绍与使用
本次分享的主题是 Perf Arm-SPE 的介绍及使用,本次分享主要介绍如何在倚天 710 平台上利用 Arm-SPE 特性定位伪共享问题、分析内存访问、分析指令延时以及监控访存延时等功能。 1. 背景介绍 2. Arm SPE的原理 3. Arm SPE在倚天服务器上的应用 4. Arm SPE 更多特性与功能的探索
1665 0
|
存储 缓存 监控
安谋科技(Arm China)马闯:Arm架构下性能分析与优化介绍
2023年9月19日,系列课程第九节《Arm®架构下性能分析与优化介绍》正式上线,由安谋科技 (Arm China)主任工程师马闯主讲,内容涵盖:Arm架构下性能监控单元 (PMU) 介绍、Arm统计性能分析扩展 (SPE) 介绍、Arm性能分析工具介绍、Arm架构下性能优化案例分享,本期节目在阿里云官网、阿里云微信视频号、阿里云钉钉视频号、InfoQ官网、阿里云开发者微信视频号、阿里云创新中心直播平台 & 微信视频号同步播出,同时可以点击【https://developer.aliyun.com/topic/ecs-yitian】进入【倚天实例迁移课程官网】了解更多内容。
|
4月前
|
人工智能 监控 调度
什么是异构算力管理平台?一文讲清核心概念、能力边界与应用价值
异构算力管理平台是面向大模型生产的“统一算力操作层”,实现CPU/GPU/NPU/FPGA等多芯、多集群、多环境算力的统一纳管、智能调度与闭环治理,提升资源利用率,支撑训推一体与AI规模化落地。
829 2
|
存储
ARM64特有一些的汇编指令
ARM64特有的汇编指令
3332 0
ARM64特有一些的汇编指令
|
Shell 小程序 算法
UnixBench算分介绍
   关于如何用UnixBench,介绍文章很多,这里就不展开了。这里重点描述下它是如何算分的。 运行参数 碰到很多客户,装好后,直接./Run,就把结果跑出来了,然后还只取最后一个分值,比谁高谁低。
9291 1
|
存储 缓存 安全
一起学点ARM的微架构?
一起学点ARM的微架构?
1310 0
|
关系型数据库 MySQL Linux
docker镜像与容器的迁移
docker迁移镜像步骤 docker迁移容器步骤 docker迁移mysql容器步骤
2432 1
|
缓存 编译器
BOLT 二进制反馈优化技术
大型应用的代码往往达到数十甚至上百MB,这导致在程序执行时缓存机制无法充分利用,导致大量时间花费在CPU和内存链路上。通过对热点函数的布局进行优化,我们可以更好地利用CPU cache,从而获得较为可观的性能提升。针对这一问题,在编译技术上有PGO和Bolt两种解决办法,两者都是一种通过收集程序在运行时如跳转,调用关系,函数热度等执行信息,这些收集到的程序运行情况数据(profile data),可以更好地指导一些程序优化的策略,如是否对函数进行内联,以及对基本块和函数布局的排布来提高特定场景下的程序性能。
4030 2
BOLT 二进制反馈优化技术