1. 鲲鹏应用性能优化:
1.1 CPU内存优化:
NUMA:Non Uniform Memory Access
非统一内存访问架构(NUMA)是一种计算机内存设计,用于多重处理,其中内存访问时间取决于内存相对于处理器的位置。处理器可以利用NUMA的优势,优先访问本地内存(速度更快),而不是访问非本地内存(这意味着它不会访问另一个处理器的本地内存或处理器之间共享的内存)。
NUMA-AWARE亲和性资源,比较合理的规划是:优先使用本NUMA节点内存
NUMA-AWARE亲和性资源优化,主要是为了:减少内存访问时延。
下面哪个方法,不属于CPU/内存调优手段?修改文件系统参数 正确:
调整内存大小;
开启或关闭CPU预取;
减少跨NUMA访问内存。
SMP:Symmetrical Multi-Processing,该架构下每个处理器地位平等,全部连接到同一个共享的主存上,并由单一操作系统来控制(CPU核数多后,优化会存在瓶颈,引入numa) NUMA:Non Uniform Memory Acces,该架构下具有多个CPU模块,每个模块具有独立的本地内存、1/0槽等,以提高CPU对内存的读写带宽。内存控制器可以分配给不同核。
1.2 NUMA-Aware亲和性资源规划
1 以下哪个不属于NUMA架构的特点:每个核都是对等的,所有的核通过总线访问所有 正确:
内存在物理上是分布式的;
非统一内存访问;
不同的核,访问不同内存的时间不同
2 以下哪个不是毕昇编译器,性能优化的方法?GC优化 正确:
高性能编译算法;
加速指令集;
AI迭代调优
2. 毕昇编译器
毕昇编译器基于开源LLVM开发,并进行了优化和改进,同时将flang作为默认的Fortran语言前端编译器是针对鲲鹏平台的高性能编译器。除LLVM通用功能和优化外,对中端及后端的关键技术点进行了深度优化,并集成Auto-tuner特性支持编译器自动调优(形成yaml文件,用这个文件对代码进行编译
1 软件加速库:GLibc、AVX2Neon、HyperScan 1 软件加速库-GLibc: Glibc 是 Linux 系统中最底层、最基础的软件库,几乎其它任何运行库都会依赖 Glibc 优化后的 Glibc 已合入 GNU 社区,目前 Glibc 2.31 的主干版本已发布(合入鲲鹏CPU相关优化),且已被 openEuler 收编 2 软件加速库AVX2Neon: AVX2Neon是一款接口集合库,它将AVX指令封装成独立的接口模块,在多媒体、机器学习等需要SIMD指令加速的场景中,自动使用NEON替换对应的AVX
AVX2Neon使用方式:
方式一:适配函数以头文件方式集成到Porting Advisor工具,通过工具识别迁移点,并提供一键式快速迁移(将依赖Intellintrinsic的应用快速迁移到鲲鹏生态)
方式二:鲲鹏开发人员通过开源社区下载AVX2Neon源码,集成到自己的软件中
3 软件加速库HyperScan,错误的是:块匹配模式是网络场景下跨报文匹配设计的特殊匹配方式 基于官网5.2.0版本优化,使用ARM Neon指令加速。使用数据预取、分支预测、结构重排及循环展开等多种优化手段实现加速。
Hyperscan 是一款高性能的正则表达式匹配库,通过大量高效算法及 SIMD 指令来实现高性能匹配。 Hyperscan 有以下使用场景: 正则表达式编译预置:正则表达式规则由集成使用 Hyperscan 的应用负责配置导入,考虑到性能问题,采用在初始化阶段导入并编译解析并缓存, Hyperscan 采用图结构的内存存储, 运行时为扫描功能提供匹配规则,以实现高性能匹配查询。 块模式匹配:适用于对一段现成的完整数据进行匹配,匹配结束即返回结果。 流模式匹配:流模式是网络场景下跨报文匹配设计的特殊匹配模式。在流模式下, Hyperscan 保存当前数据匹配的状态,并以其作为接收到新数据时的初始匹配状态。解决了数据完整性问题,极大地简化用户网络流处理的过程。 2 压缩库 Snappy、ZSTD、GZIP: 1 Snappy: Google 基于 LZ77 的思路用 C++ 语言编写的快速数据压缩与解压程序库 2 ZSTD : FaceBook 开源到压缩库,同时兼顾压缩比、性能的压缩库,压缩比领先传统的 deflate 算法 3 gzip :基础压缩软件,用于文件的无损压缩,基于 deflate 算法实现 l 压缩库可应用于数据库、分布式存储、大数据和 Web 服务等场景
1. 鲲鹏应用性能优化:
1.1 CPU内存优化:
NUMA:Non Uniform Memory Access
非统一内存访问架构(NUMA)是一种计算机内存设计,用于多重处理,其中内存访问时间取决于内存相对于处理器的位置。处理器可以利用NUMA的优势,优先访问本地内存(速度更快),而不是访问非本地内存(这意味着它不会访问另一个处理器的本地内存或处理器之间共享的内存)。
NUMA-AWARE亲和性资源,比较合理的规划是:优先使用本NUMA节点内存
NUMA-AWARE亲和性资源优化,主要是为了:减少内存访问时延。
下面哪个方法,不属于CPU/内存调优手段?修改文件系统参数 正确:
调整内存大小;
开启或关闭CPU预取;
减少跨NUMA访问内存。
SMP:Symmetrical Multi-Processing,该架构下每个处理器地位平等,全部连接到同一个共享的主存上,并由单一操作系统来控制(CPU核数多后,优化会存在瓶颈,引入numa) NUMA:Non Uniform Memory Acces,该架构下具有多个CPU模块,每个模块具有独立的本地内存、1/0槽等,以提高CPU对内存的读写带宽。内存控制器可以分配给不同核。
1.2 NUMA-Aware亲和性资源规划
1 以下哪个不属于NUMA架构的特点:每个核都是对等的,所有的核通过总线访问所有 正确:
内存在物理上是分布式的;
非统一内存访问;
不同的核,访问不同内存的时间不同
2 以下哪个不是毕昇编译器,性能优化的方法?GC优化 正确:
高性能编译算法;
加速指令集;
AI迭代调优
2. 毕昇编译器
毕昇编译器基于开源LLVM开发,并进行了优化和改进,同时将flang作为默认的Fortran语言前端编译器是针对鲲鹏平台的高性能编译器。除LLVM通用功能和优化外,对中端及后端的关键技术点进行了深度优化,并集成Auto-tuner特性支持编译器自动调优(形成yaml文件,用这个文件对代码进行编译
1 软件加速库:GLibc、AVX2Neon、HyperScan 1 软件加速库-GLibc: Glibc 是 Linux 系统中最底层、最基础的软件库,几乎其它任何运行库都会依赖 Glibc 优化后的 Glibc 已合入 GNU 社区,目前 Glibc 2.31 的主干版本已发布(合入鲲鹏CPU相关优化),且已被 openEuler 收编 2 软件加速库AVX2Neon: AVX2Neon是一款接口集合库,它将AVX指令封装成独立的接口模块,在多媒体、机器学习等需要SIMD指令加速的场景中,自动使用NEON替换对应的AVX
AVX2Neon使用方式:
方式一:适配函数以头文件方式集成到Porting Advisor工具,通过工具识别迁移点,并提供一键式快速迁移(将依赖Intellintrinsic的应用快速迁移到鲲鹏生态)
方式二:鲲鹏开发人员通过开源社区下载AVX2Neon源码,集成到自己的软件中
3 软件加速库HyperScan,错误的是:块匹配模式是网络场景下跨报文匹配设计的特殊匹配方式 基于官网5.2.0版本优化,使用ARM Neon指令加速。使用数据预取、分支预测、结构重排及循环展开等多种优化手段实现加速。
Hyperscan 是一款高性能的正则表达式匹配库,通过大量高效算法及 SIMD 指令来实现高性能匹配。 Hyperscan 有以下使用场景: 正则表达式编译预置:正则表达式规则由集成使用 Hyperscan 的应用负责配置导入,考虑到性能问题,采用在初始化阶段导入并编译解析并缓存, Hyperscan 采用图结构的内存存储, 运行时为扫描功能提供匹配规则,以实现高性能匹配查询。 块模式匹配:适用于对一段现成的完整数据进行匹配,匹配结束即返回结果。 流模式匹配:流模式是网络场景下跨报文匹配设计的特殊匹配模式。在流模式下, Hyperscan 保存当前数据匹配的状态,并以其作为接收到新数据时的初始匹配状态。解决了数据完整性问题,极大地简化用户网络流处理的过程。 2 压缩库 Snappy、ZSTD、GZIP: 1 Snappy: Google 基于 LZ77 的思路用 C++ 语言编写的快速数据压缩与解压程序库 2 ZSTD : FaceBook 开源到压缩库,同时兼顾压缩比、性能的压缩库,压缩比领先传统的 deflate 算法 3 gzip :基础压缩软件,用于文件的无损压缩,基于 deflate 算法实现 l 压缩库可应用于数据库、分布式存储、大数据和 Web 服务等场景