AI 助理
备案 控制台
开发者社区 倚天 文章 正文

倚天710规模化应用 - 性能优化 - 软件预取分析与优化实践

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
推荐场景:
学生管理系统数据库设计 搭建个人博客
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 软件预取技术是编程者结合数据结构和算法知识,将访问内存的指令提前插入到程序,以此获得内存访取的最佳性能。然而,为了获取性能收益,预取数据与load加载数据,比依据指令时延调用减小cachemiss的收益更大。

1 背景

现代应用,如高性能计算(HPC)、大数据、数据库及数据处理等,对内存的时延大小很敏感。传统的解决方案是通过硬件模块检测规则的内存访问模式(循环步长)进行数据预取,也即是硬件预取方法。如此,处理器可将需要的数据提前加载到快速缓存内存中。然而,这些技术对非规则的内存访问模式,如链表形式的数据结构、通过index间接内存访问数组数据并不适用。
软件预取技术是编程者结合数据结构和算法知识,将访问内存的指令提前插入到程序,以此获得内存访取的最佳性能。然而,为了获取性能收益,预取数据与load加载数据,比依据指令时延调用减小cachemiss的收益更大。更为重要的是,过早预取数据,会导致数据cache超出,还未到用时,数据已经被弹出,进而数据再次load加载。若预取数据较晚,除了load自身数据的时延,还会增加冗余预取数据的时延。所以预取的时机不对常常导致软预取性能提升不明显,甚至性能下降。
结合业界提供了 [论文]一种针对间接内存访问模式的自动化插入预取指令的优化算法,不仅可以处理更复杂的间接内存访问模式,而且可以规避提前加载导致的运行错误。核心是采用深度优化查找算法,找到load指令引用的循环归纳变量的路径指令集,进而对路径指令集进行数据提前加载,达到访存数据提前加载的目的。并在科学计算、HPC、大数据、数据库等商业应用,此方法在Intel Haswell架构上平均1.3X提升, Arm Cortex-A57架构有1.1X提升。发现软件预取的性能收益,和look-ahead预测距离、内存宽度、动态指令数及TLB大小强相关。
直观上理解,数据预取的方法,可以通过以下方法实现:

for (int i = 0; i < ARRAYLEN; i++) {
   
    arrayC[i] = arrayA[i] * arrayB[i];
}

增加Prefetch指令的代码,如下所示:

Prefetch(&arrayA[0]);
Prefetch(&arrayB[0]);
for (int i = 0; i < ARRAYLEN - ARRAYLEN % 4; i+=4) {
   
    Prefetch(&arrayA[i + 4]);
    Prefetch(&arrayB[i + 4]);
    arrayC[i] = arrayA[i] * arrayB[i];
    arrayC[i + 1] = arrayA[i + 1] * arrayB[i + 1];
    arrayC[i + 2] = arrayA[i + 2] * arrayB[i + 2]; 
    arrayC[i + 3] = arrayA[i + 3] * arrayB[i + 3];
}

软件预取的方法实现原理基本上述方法类似。
假如数组之间存在间接调用的场景,如

1 for (i=0; i<base_array_size; i++) {
   
2 target_array[func(base_array[i])]++;
3 }

这里,顺序访问的内存数组base_array, 且定义func(x)=x,也即是base_array的结果作为target_array的访问index,故涉及到两种内存访问模式,base_array[i]和target_array[index].这两种械均适用于软预取。但访问target_array地址依赖于base_array结果。硬件预取却不无法精确识别并预取数据。通过软预取技术,可插入预取指令如下:

1 for (int i=0; i<NUM_KEYS; i++) {
   
2 // The intuitive case, but also
3 // required for optimal performance.
4 SWPF(key_buff1[key_buff2[i + offset]]);
5 // Required for optimal performance.
6 SWPF(key_buff2[i + offset*2]);
7 key_buff1[key_buff2[i]]++;
8 }

更重要的是,以合适的预测距离(当前迭代的偏移)插入正确的预取代码,对最终用户来说,是一个挑战。通过上述代码,在第4行插入prefetch指令,性能提升1.08X。然而,在key_buff2和间接数据kye_buffer1均插入prefetch指令,也即是在第6行也插入prefetch,性能提升1.30X。所以,选择合适的预测距离至关重要,可以避免过早或过晚预取数据问题。

2 软件预取

基于LLVM IR,开发软预取优化PASS,思路是通过查找load指令,判别是否可以在数组内预测预取,然后生成软件预取指令。首先生成分析信息,然后代码生成。算法1:
image.png

软预取流程图

3 Benchmark验证

目前,Prefetch优化算法作为LLVM的新增Pass,注册到LLVM-内部的PASS流程中,通过编译选项控制此优化的开关,具有通用性及普适性。
Noahbenchmark是基于服务器提取的权威性验证Benchmark,通过此benchmark可获取比较有说服力的数据。首先验证了noahbenchmark内prefetch内11个场景。通过前后优化对比,每个benchmark场景均有提升,最高达10%+。

基于Prefetch优化,验证SPEC2017性能,总体软预取带来5个benchmark提升,最大提升2.49%,3个benchmark持平,2个benchmark略有下降。

倚天编译优化小二
目录
相关文章
游客762btuqu5wybw666
|
2月前
|
存储 缓存 运维
优化高并发环境下的数据库查询性能:实战经验与技巧
在高并发环境下,数据库性能往往成为系统瓶颈。本文将深入探讨在高并发场景下优化数据库查询性能的策略与实践,包括索引优化、查询优化、数据库架构设计以及缓存机制的应用。通过对具体案例的分析,读者将能够掌握提升数据库性能的关键技术,从而在面对大规模用户请求时提高系统的响应速度和稳定性。
游客762btuqu5wybw666
238 2
叫个什么名字
|
2月前
|
存储 缓存 算法
优化Java后台性能的五大最佳实践
在高并发环境中,Java后台系统的性能至关重要。本文探讨了五种有效的优化方法,包括JVM调优、数据库连接池配置、代码优化技巧、异步处理的使用以及缓存机制的实现。通过这些实践,开发人员可以显著提升系统的响应速度和稳定性。
叫个什么名字
48 1
郑小健
|
3月前
|
监控 Java 图形学
【性能优化篇】U3D游戏卡顿大作战:内存与渲染效率的极致提升
【7月更文第12天】在Unity3D游戏开发领域,性能优化是决定玩家体验好坏的关键一环。游戏频繁卡顿,不仅破坏了沉浸式体验,还可能造成玩家流失。本文将深入探讨如何有效解决U3D游戏卡顿问题,特别聚焦于内存管理和渲染效率两大核心领域,助力开发者打造流畅丝滑的游戏世界。
郑小健
224 0
萝卜带泥
|
3月前
|
缓存 监控 测试技术
优化PHP应用性能的关键技巧与实践
提升PHP应用性能是开发者关注的重点之一,本文探讨了几种有效的优化技巧和实际应用策略,包括缓存策略的选择、代码优化建议以及服务器端配置的最佳实践,旨在帮助开发者有效提升PHP应用的运行效率和响应速度。【7月更文挑战第2天】
萝卜带泥
31 0
TDengine
|
4月前
|
存储 JSON 数据格式
如何提升写入效率?Schemaless 写入性能优化实践分享
TDengine 是一款时序数据库,其Schemaless模式适应物联网数据动态变化。通过分析火焰图,发现parser和insert操作是性能瓶颈。优化措施包括减少标签解析、排序和子表生成的重复执行,提前判断schema变更,改进数据插入方法,减少内存分配和拷贝。通过这些优化,如在3.0版本中,line协议性能提升了2.5倍,telnet提升2倍,json提升近5倍。使用工具如火焰图和perf进行性能分析,以识别和解决瓶颈,实现性能提升。
TDengine
30 0
汀丶人工智能
|
11月前
|
存储 消息中间件 数据库
Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能
Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能
汀丶人工智能
564 0
Milvus性能优化提速之道:揭秘优化技巧,避开十大误区,确保数据一致性无忧,轻松实现高性能
倚天编译优化小二
|
数据采集 算法 编译器
倚天710规模化应用 - 性能优化 -自动反馈优化分析与实践
编译器优化分成静态优化与动态优化,静态优化指传统编译器gcc/llvm时,增加的优化等级,如O1,O2,O3,Ofast,此时,编译器会依据编译优化等级增加一些优化算法,如函数inline、循环展开以及分支静态预测等等。一般情况下,优化等级越高,编译器做的优化越多,性能会更会好。在阿里生产环境中,单纯依赖于静态优化,并不能达到程序运行流畅目的,通过分析CPU硬件取指令、执行指令,往往会出现一些分支预测失败导致iCacheMiss率高的场景,限制了程序的性能进一步提升。基于此,业务引入了动态反馈优化工具,依据生产环境的实际运行数据,反哺指导编译器对程序代码进一步调整编译优化策略,提高分支预准确率
倚天编译优化小二
800 1
技术小达人
|
存储 运维 容灾
带你读《多媒体行业质量成本优化及容灾方案白皮书》1. 成本优化概述
带你读《多媒体行业质量成本优化及容灾方案白皮书》1. 成本优化概述
技术小达人
384 0
赵广陆
|
消息中间件 缓存 NoSQL
高并发系统深度优化
高并发系统深度优化
赵广陆
175 0
平头哥倚天产品解决方案
|
存储 算法 大数据
倚天性能优化--基于倚天优化后的zstd在大数据场景应用:降低存储成本+提升重IO场景性能
倚天性能优化--基于倚天优化后的zstd在大数据场景应用:降低存储成本+提升重IO场景性能
平头哥倚天产品解决方案
808 0

倚天

热门文章

最新文章

  • 1
    性能优化特性之:LTO
  • 2
    BOLT 二进制反馈优化技术
  • 3
    SQL数据库数据修改操作详解
  • 4
    Arm Coresight 介绍
  • 5
    Yarn介绍及快速安装Debian/Ubuntu Linux
  • 6
    阿里云RDS负责人彭祥:RDS On倚天ECS的技术演进
  • 7
    SQL附加数据库出错的原因与解决方案3w9.0575cst.com
  • 8
    Java“不能转换的类型”解决
  • 9
    X-SIMD高性能跨平台向量化加速库
  • 10
    性能优化特性之:TLBI - TLB range优化
  • 1
    SQL附加数据库出错的原因与解决方案3w9.0575cst.com
    21
  • 2
    Java“不能转换的类型”解决
    19
  • 3
    除了 OpenGL,还有哪些常用的图形库可以在 C 语言中使用?
    17
  • 4
    《阿里云倚天:云计算领域的璀璨之星》
    33
  • 5
    SQL数据库数据修改操作详解
    49
  • 6
    SQL文件导入MySQL数据库的详细指南
    19
  • 7
    Java 网络编程详解
    28
  • 8
    Java的多线程有什么用
    39
  • 9
    如何表示上级目录
    23
  • 10
    蓝易云 - 1U和2U的服务器怎么选择
    782
  • 相关课程

    更多
  • 大数据分析之企业级网站流量运营分析系统开发实战(第二阶段)
  • 云数据库优化十大典型案例
  • 大数据分析之企业级网站流量运营分析系统开发实战(第四阶段)
  • 云数据库优化经典案例
  • 云拨测产品能力与应用场景解读
  • 线上Linux服务器优化经验
  • 相关电子书

    更多
  • 超大规模性能测试的云端方案及案例分享
  • 超大规模性能测试的云端解决方案及案例分享
  • 云平台性能优化
  • 相关实验场景

    更多
  • 流水线运行出错排查难?AI帮你智能排查
  • 如何快速体验知识检索增强应用
  • 体验PolarDB-X透明分布式
  • 体验RDS通用云盘核心能力
  • 基于生命周期管理的存储成本优化
  • 云原生场景自动化响应ECS系统事件
  • 下一篇
    阿里云无影云电脑免费试用,最长可试用3个月

    深圳坪山网站建设公司鹤壁网站建设推广优化西藏网站优化报价从化外贸网站优化推广费用宁波网站优化外包哪家好凤城怎么优化网站武汉市网站关键词优化优势苏州网站关键优化普洱三亚营销型网站优化系统商丘网站排名优化哪里的好上海网站建设优化熊掌号广州网站推广优化公司汕尾网站优化报价诚信通网站优化常州 网站优化网站图片优化软件四川百度网站优化推广魏都区网站seo优化排名优化网站性能的步骤伦敦网站优化作用网站设计网络推广优化打印机怎么优化网站中原区网站seo优化象山优化网站西城优化型网站建设网站建设优化享誉火17星实力强的电商网站优化公司网站推广优化100网站推广的优化网站排名优化柒金手指科杰企业网站排名优化 云尚网络香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

    深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化