LWN:AutoFDO以及Propeller优化!

AutoFDO自动反馈式优化 什么是AutoFDO? AutoFDO是指基于程序性能分析工具的反馈式编译优化。不同于传统的基于程序插桩的反馈式编译优化,AutoFDO可以对以优化过的程序进行性能分析,并利用程序的性能信息指导编译器对程序进行再次优化。这意味着AutoFDO可以部署在真实的产品线上,利用程序在生产环境的性能信息对程序进行更精准的优化。 AutoFDO利用如`perf`这样的工具来收集程序的性能信息。然后使用一... 阅读详情
AI摘要

本文介绍谷歌在内核优化方面采用的AutoFDO和Propeller技术。AutoFDO可收集真实工作负载性能信息构建更优内核,有基于插桩和采样两种类型。Propeller是后链接优化器,采用不同方法进行优化。二者结合可生成优化内核,显著提升内核性能。

关注了就能看到更多这么棒的文章哦~

AutoFDO and Propeller

By Jake Edge
October 28, 2024
LPC
Gemini-1.5-flash translation
https://lwn.net/Articles/995397/

Rong Xu 和 Han Shen 在 toolchain track 环节的讨论中,为 2024 年 Linux Plumbers 大会 介绍了谷歌在内核优化方面采用的技术。他们着重介绍了 自动反馈导向优化 (AutoFDO,automatic feedback-directed optimization),该技术可以与 Propeller 优化器结合使用,通过收集真实工作负载的性能信息来构建性能更优的内核。这些工具与 BOLT 后链接优化器有很大的重叠,而 BOLT 是本次会议之前环节的主题。

AutoFDO

Xu 从介绍 AutoFDO 开始,随后 Shen 讲解了在 AutoFDO 基础上使用 Propeller 进一步提升性能的技术。在 Xu 和 Shen 工作的谷歌公司,他们对内核在整个系统中执行所占用的时间进行了测量。Xu 展示了一张幻灯片,其中显示了内核的 CPU 周期百分比(不包括空闲时间),涵盖了各种工作负载,这些信息可以在 幻灯片 或者 YouTube 视频 中找到。内核占用 CPU 周期的百分比在 17% 到 60% 之间,整个系统的平均值约为 20%。

Xu 表示,针对 Linux 内核的优化已经进行了很多努力,在谷歌,主要技术之一是 反馈导向优化 (FDO),该技术利用运行时信息来改进代码生成。其核心思想是收集真实工作负载的性能信息,以便编译器能够根据程序的运行方式,集中精力进行那些影响最大的优化。

Xu 表示,FDO 已被证明是有效的,并且应用于谷歌几乎所有应用中,包括 Android、ChromeOS 和数据中心。它可以提高指令缓存的使用率,减少 TLB 缺失,并提高 branch (分支跳转)性能。总体的运行时改进幅度可达 20%,但 FDO 还带来了另一个好处:它通常可以减少代码大小。

096c32fa87d0cd7ba3b583abee36805b.png

FDO 主要有两种类型:基于插桩的和基于采样的。基于插桩的这种方式(也称为 iFDO)是最初的版本,它使用一个插桩内核来运行代表真实工作负载的测试,从而生成用于优化的性能信息。然后,这些性能信息被传递给编译器,用于构建可以部署到生产环境的优化内核。插桩内核可以提供准确的性能信息,而不依赖于性能监控单元 (PMU) 硬件,但生成的内核速度要慢十倍,因此无法在生产环境中使用。不过,负载测试仍然需要具有代表性。除此之外,另一个缺点是 iFDO 需要对内核进行插桩操作。

基于采样的 FDO (或 AutoFDO) 则从一个带有调试符号的内核开始,然后使用 perf 工具来测量代表性的工作负载。原始的 perf 数据被转换为 AutoFDO 性能信息,然后被传递给编译器,用于构建优化内核。由于基于 perf 的数据收集开销很低,因此测试内核可以在生产环境中使用真实工作负载,消除了对真正具有代表性的测试用例的担忧。但是,AutoFDO 的优化效果不如 iFDO,因为性能信息并不完整,“所以如果你使用相同的负载测试,你将会得到接近的性能,但不会那么好”。此外,AutoFDO 需要硬件 PMU 和 perf 的支持。

对于快速迭代的项目,建议使用一个迭代方式的流程,将收集到的生产环境中运行的内核的性能信息传递给编译器,用于构建下一个版本的测试内核。然后,这个版本在生产环境中运行,收集到的性能信息用于构建下一个版本,以此类推。虽然存在代码不匹配的情况,但 AutoFDO 使用的是相对于函数起始位置的行号;如果版本之间没有进行重大的重构,“我们会发现这种方法运行得很好”。Xu 表示,开发人员认为这种模式适用于内核的次要版本。

AutoFDO 需要处理器支持最后分支记录 (LBR) 或类似的功能;AMD 分支采样 (BRS) 和 Arm 嵌入式跟踪宏单元 (ETM) 可以提供相同类型的信息。有了这些信息,AutoFDO 可以创建一个性能信息,从而允许进行多种类型的优化。通常影响最大的有三种:函数内联、增加分支回退和间接调用提升。

内联有助于减少代码的大小和运行时间。回退 branch 动作比进行 branch 动作更快,即使它被正确预测;此外,这种优化可以将热点基本代码块组合在一起,以提高指令缓存的使用率。最后,间接调用可以提升为直接调用,从而允许它们被内联。其他优化阶段可以查询性能信息,以检索基本块、分支跳转等计数,因此这些优化也会得到改进。

Xu 简要报告了一些性能数据。在几乎所有的测试中(包括微基准测试和工作负载测试),iFDO 的性能略好于 AutoFDO,并且大多数情况下都是有适度提升(2-10%)。在一个谷歌数据库应用程序的工作负载测试中,AutoFDO 的性能提高了 2.6%,而 iFDO 提高了 2.9%。他与一些 Meta 工程师合作,他们报告称,在他们的一个服务中使用 AutoFDO 实现了大约 5% 的性能提升,使用 iFDO 实现了大约 6% 的性能提升。

总的来说,在内核中使用 AutoFDO 的过程相当顺利。“测试被证明是工作中最具挑战性的部分”;寻找具有代表性的工作负载和基准测试比较困难。在开发过程中,他们发现来自英特尔机器的性能相关信息在 AMD 机器上也能很好地用起来。为了获得更好的性能,他建议使用 链接时优化 (LTO) 和 ThinLTO。

Propeller

随后,Shen 上台介绍了使用 Propeller 构建内核的技术。他首先介绍了什么是后链接优化器(post-link optimizer),但他指出,之前的 BOLT 演讲已经很好地介绍了它。后链接优化器只需要二进制文件及其在代表性工作负载上的运行性能信息,通常不需要源代码。它使用反汇编器将机器码转换为编译器中间表示 (IR),然后进行分析和优化,最后将结果转换回机器码作为最终输出。

从概念上来说,Propeller 也是一个后链接优化器,但它采用了一种不同的方法;它使用编译器和链接器来进行转换。与其他后链接优化器一样,它接收二进制文件和性能信息,以识别一系列优化操作,但它不会直接应用这些优化。相反,它会写入编译器和链接器的性能信息,然后使用相同的源代码重新构建。编译器和链接器会执行它们通常进行的那些动作,但会使用性能信息来应用优化操作。最终结果相同,都是一个优化后的二进制文件,但内部步骤不同。

0066ef2931b149c7d404a793fedb87bc.png

采用这种方法的原因有几个。在进行后链接优化时,开发人员发现反汇编器并不适用于所有二进制文件。例如,它不适用于包含代码和只读数据的二进制文件,也不适用于必须符合各种标准的二进制文件,例如 FIPS 标准。除此之外,还存在可扩展性问题:“后链接优化器的单机多线程设计导致处理时间和内存使用过长”。这促使他们将部分负担转移到编译器和链接器上。

Propeller 机制有一些优点。首先,优化转换“以最精确的方式完成”,因为它们由编译器和链接器处理。它还“为并行化打开了大门,因为每个编译任务都是独立的”。可以利用分布式构建缓存;如果没有为特定源文件找到优化指令,则不需要重新构建该源文件,可以使用缓存的对象文件。这也意味着 Propeller 本身不需要处理内核元数据,这些元数据都是由现有的构建过程处理的。然而,Propeller 需要源代码和重建步骤,这两者都是这种方法的缺点。

目前,Propeller 主要进行了两种优化:基本块布局和路径克隆。Shen 表示,他们还在积极开发跨进程寄存器分配功能。

可以通过构建一个 AutoFDO 性能信息,用于构建一个内核,然后对该内核进行性能信息收集,从而将 Propeller 与 AutoFDO 结合使用。用于构建 AutoFDO 内核的性能信息也会被用于使用 Propeller 性能信息重新构建内核。每个内核都在生产环境中运行,以生成所需的性能信息。最终结果是一个同时被 AutoFDO 和 Propeller 优化的内核。

与其他后链接优化器不同,Propeller 可以优化内核模块。后链接优化器针对可执行文件和共享库进行操作,而内核模块是可重定位对象。Propeller 可以解析模块中的重定位信息,以链接到正确的符号。

如前所述,AutoFDO 可以容忍源代码的微小更改和构建选项的细微差别,但 Propeller 却不行。用于生成性能信息的内核的源代码和构建选项必须与 Propeller 使用的源代码和构建选项完全相同。开发人员“正在努力尝试减轻这种限制”,他说。

Propeller 需要特定的软件和硬件支持才能执行其工作。它依赖于一个位于 LLVM 源代码树之外的 工具。开发人员目前正在将该功能迁移到 LLVM 中。它还需要来自 CPU 的跳转信息,这些信息来自于不同架构下的不同功能(英特尔的 LBR、AMD 的 BRS 或 LBRv2 以及 Arm 的 SPE 或 ETM)。对于内部应用,Propeller 已在每个架构上(虽然不是每个跳转跟踪功能)进行了验证;对于内核,目前只验证了英特尔 LBR。

Shen 展示了一些 PMU 统计数据的热图和图表,涵盖了没有 FDO、iFDO、AutoFDO 以及后两者结合 ThinLTO 和 Propeller 的情况。正如预期的那样,Propeller 在几乎所有类别中都实现了改进。

Shen 表示,目前,在 LLVM 中启用 AutoFDO 和 Propeller 的补丁已经 提交到上游进行审查。在内部,开发人员正在进行“大规模生产测试,以衡量公司范围内的性能”;他们还在针对特定工作负载的客户内核进行研究,以构建针对不同应用程序的不同内核。

总而言之,他说,FDO,包括 iFDO 和 AutoFDO,“显著提高了内核性能”。AutoFDO 与内核构建良好集成,并允许在生产环境中进行性能信息收集,这比 iFDO 具有很大的优势。他们的建议是在 AutoFDO 的基础上添加 Propeller,以获得最佳性能。

在问答环节中,Peter Zijlstra 询问了为什么要进行多次性能信息收集;他说,AutoFDO 性能信息应该已经包含了必要的信息。Shen 说,第一次优化操作会改变代码,导致性能信息过时,而 Propeller 的性能信息收集则可以解决这个问题。Zijlstra 指出,代码在此时会再次进行转换,因此需要另一个性能信息;Shen 同意这是一个迭代过程,更多的性能信息收集和重建步骤会改善结果。

Zijlstra 还抱怨说,将 Propeller 称为后链接优化器并不准确。优化是在构建过程中进行的。另一位观众同意,说性能信息是在后链接阶段收集的,但它只是另一种形式的性能引导优化;Zijlstra 建议应该直接将 Propeller 称为性能引导优化(profile-guided optimization),以避免混淆。

似乎,使用 LLVM 生成优化内核的工作有很多,虽然 BOLT 也可以对使用 GCC 构建的内核进行操作。这项工作是由拥有大量云系统机群的公司完成的,这一点并不令人意外;性能的微小提升乘以机群的大小,就会对 CPU 使用率、功耗、所需的系统数量等产生重大影响,最终都会导致节省资金。

[ 我要感谢 Linux 基金会,他们作为 LWN 的旅行赞助商,为我前往维也纳参加 Linux Plumbers 大会提供了旅行资助。 ]

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

e2a96b8caef57e7e9a22b8e3be96a110.jpeg

Arm AutoFDO优化与ADB连接实战指南 反馈导向优化(FDO)是现代编译器优化的核心技术,通过分析程序运行时行为生成优化剖面指导编译决策。在Arm架构中,AutoFDO技术基于Simpleperf采集的指令轨迹实现自动化优化,可提升15-30%性能表现。该技术特别适用于Android NDK开发环境,结合ADB连接FVP仿真器可实现完整的优化闭环。典型应用场景包括移动应用性能调优、嵌入式系统开发等,通过调整代码布局、优化分支预测等机制显著提升指令缓存命中率。本文以Arm Lumex软件为例,详解从环境配置、剖面采集到优化应用的全流程实践方法。 阅读详情

相关推荐

字节跳动 Service Mesh 数据面编译优化实践,2024字节跳动Android面试真题解析

程序运行期采集到的 profile 数据中,记录了该程序的热点函数及指令,这里不做过多展开,以两个简单例子说明它是如何指导编译器做 PGO 优化的。

2401_83977580的博客 757

探索Google的AutoFDO:优化性能的新工具

探索Google的AutoFDO:优化性能的新工具 项目简介 是由Google开发的一种自动化反馈导向优化(Feedback Directed Optimization, FDO)工具。FDO是一种编译器优化技术,通过利用程序运行时的 profiling 数据,来指导编译器进行更精确的优化,以提升代码执行效率。AutoFDO的独特之处在于它自动处理了数据收集和分析过程,减轻了开发者的工作负担。 技...

gitblog_00065的博客 1163

autofdo:自动FDO

1. 安装先决条件 sudo apt install libunwind-dev libgflags-dev libssl-dev libelf-dev protobuf-compiler 要为 llvm 构建 autofdo 工具,它需要 llvm 主版本 >= 10。您可以使用“sudo apt install llvm-10”之类的命令安装 llvm,也可以从源代码构建最新的 llvm。 要为 gcc 构建 autofdo 工具,不需要安装 llvm。 2. 命令 2.1 为llvm构建autofdo工具 2.1.1 如果从源码构建llvm git 克隆 mkdir 构建 光盘构建 cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DBUILD_SHARED_LIBS=OFF -DLL

推荐文章:高效代码优化利器 —— Autofdo 工具链

推荐文章:高效代码优化利器 —— Autofdo 工具链 1. 项目介绍 Autofdo 是由 Google 开源的一个工具集,它专为提升程序性能而设计。该项目主要提供了两种工具,即 LLVM 和 GCOV,它们可以帮助开发者进行深入的代码覆盖分析和性能优化。通过利用 AutoFDO(Profile-Guided Optimization 的自动化版本)和 Propeller,项目可以实现更高效的...

gitblog_00815的博客 702

autofdo_tutorial:AutoFDO教程

AutoFDO教程================ 该软件包将帮助您理解和自动化使用反馈驱动的优化过程,该教程分为三个部分: 1.基本认识 在此存储库中,您将找到一个sort.c文件,其中包含开始使用优化的排序算法,然后您需要阅读的文档,并按照以下步骤进行操作:比较不同类型的优化: GCC正常优化(只需将-O标志添加到gcc命令中) FDO(通过执行检测的二进制文件,它将数据输出到配置文件) AutoFDO(通过使用perf,它将对硬件事件进行采样以创建配置文件) 您可以在这里阅读有关使用优化标志的更多信息。 2.不同的用例 您可能会愿意优化一个包含不同二进制文件的程序包,这可能会导致多个二进制文件,因此我们在本教程中提供了一个示例。 每个二进制文件都包含不同的算法,并带有在执行结束时打印的计时量度,因此您无需实施任何时间测量工具。 GCC正常优化 如果您想知道FDO提高了多少性

FDO 基础知识总结

前段时间研究Autodesk mapguide 了解了下FDO基础知识,做了点总结

GCC 编译器的 AutoFDO 优化

AutoFDO Optimizations For The GCC Compiler - Phoronixhttps://www.phoronix.com/scan.php?page=news_item&px=MTE5NTc 此补丁实现了 GCC 的细粒度 AutoFDO 优化。它使用 linux perf 来收集样本配置文件,并使用调试信息来表示配置文件。在 GCC 中,它使用配置文件来注释 CFG 以驱动 FDO。这可以带来传统基于仪器的 FDO 的 50% 到 110% 的加速。(对于许多

RToax 1449

不止于修改器:用Cheat Engine(CE)的Lua脚本和D3D Hook打造你的游戏辅助界面

本文深入探讨了Cheat Engine(CE)的高级功能,包括Lua脚本自动化和D3D Hook技术,帮助用户从基础内存扫描升级到开发具有专业图形界面的游戏辅助工具。通过实战示例和优化策略,展示了如何创建高效、稳定的游戏辅助系统,并打包为独立训练器。

weixin_28700411的博客 315

【亲测免费】 AutoFDO 项目使用教程

AutoFDO 项目使用教程 项目介绍 AutoFDO(Automatic Feedback-Directed Optimization)是一个用于仓库规模应用程序的自动反馈导向优化系统。它通过使用perf工具收集样本配置文件,并将其转换为gcov格式,从而跳过传统的仪器化步骤。AutoFDO旨在克服传统FDO模型的高运行时开销、繁琐的双重编译使用模型以及生成代表性训练数据集的困难。 项目快速启动...

gitblog_00772的博客 770

扣子(coze)案例^第22期:零代码打造小红书竞品监控系统+AI自动生成运营策略建议

本文详细介绍了如何利用扣子(coze)平台零代码搭建小红书竞品监控系统。该系统通过自动化工作流抓取竞品笔记数据,并存入飞书多维表格,结合AI能力自动生成包含可视化分析报告在内的运营策略建议,帮助运营者高效进行数据驱动的市场分析。

weixin_29313239的博客 1004

解决redhat8/centos8无法使用yum问题(报错:This system is not registered to Red Hat Subscription Management)

解决redhat无法使用yum问题、以及替换repo文件后仍无法使用yum的问题

qq_43569119的博客 4342

AutoFDO Tutorial

很长一段时间以来,编译器已经可以生成优化的二进制程序。然而,时至今日,要确切地知道对特定的程序应该选择什么样的优化,以及这些优化是否有利于优化程序,依然是困难而令人沮丧的。在这个简单的教程中,我们将探讨一个简单的例子,以介绍一些基本的优化和AutoFDO。 以如下的冒泡排序程序为例: #include <stdio.h> #include <stdlib.h> #in...

zhou1519的专栏 2715

仪表数字图像识别的传统方法

虽然现有很多机器学习算法能够准确地识别数字,但是传统方法对于一些需要离线识别且计算能力有限的下位机设备来说,仍然有非常不错的效果。因此,今天就向大家讲解一下传统的数字识别方法在仪表读数方面的应用。 1.图像预处理技术 1.1 主要流程 图像处理依次需要进行图片预处理、字轮区域定位、字符分割和字符识别等过程。其中图像处理流程如下图所示。 2. 详细过程 2.1 灰度化 为了减小图像原始数据量,本系...

XYZ 4523

AutoFDO 项目常见问题解决方案

AutoFDO 项目常见问题解决方案 AutoFDO(Auto Frequency Directed Optimization)是一个由Google开发的开源项目,旨在通过优化程序执行频率来提高程序性能。该项目主要使用C++编程语言,同时也涉及一些其他语言,如Python和Shell脚本。 1. 项目基础介绍 AutoFDO是一个基于运行时性能数据的反馈优化工具,它能够收集程序执行时的频率信息,并...

gitblog_00298的博客 519

电商产品组合策略:引流品与利润品的实战方法论

在电商运营中,产品组合策略是提升流量转化与利润增长的核心技术。其基本原理是通过数据化选品构建产品矩阵,利用引流品吸引用户流量,再通过利润品实现商业变现。这种策略不仅能优化广告投放的ROAS(广告投入产出比),还能显著提升客单价。技术实现上需要结合Google Analytics等工具进行归因分析,并运用动态库存管理模型控制风险。该方案特别适用于Amazon、Shopify等电商平台,能有效解决跨境电商业内流量获取与利润创造的平衡难题。通过实战案例可见,合理的产品组合可使客单价提升30-50%,是电商运营必备

weixin_42522009的博客 350

VisualStudio2022启动报错

把Users\...\AppData\Local\Microsoft\VisualStudio\11.0\ComponentModelCache中的Microsoft.VisualStudio.Default.cache这个文件移除,再重启vs,各项功能都能正常使用了。第一次使用方法1有效果,不知道什么原因后面又报错再删除缓存文件无效了,最后使用方法2启动VS成功。vs2022启动时,报错弹框,在ActivityLog查看具体报错信息,报错原因未知。网上搜索到两种解决方法。方法1:删除缓存文件。

面朝大海,春暖花开 3936

在线教程!C++如何在云应用中快速实现编译优化?

导语|本文尝试在系统级的编译软件层面,挖掘云应用的性能提升空间。以C/C++应用的反馈优化技术为例,介绍业务和编译技术深度整合后产生的收益和价值,希望给相关业务的探索提供参考。一、现代...

QcloudCommunity的博客 934

反应动力学仿真软件:CHEMKIN_(12).CHEMKIN与其他软件的接口

通过上述介绍,我们详细探讨了如何将 CHEMKIN 与 MATLAB、Python、COMSOL、Aspen Plus 和 Ansys Fluent 等软件工具进行接口配置和数据交互。这些接口不仅能够显著提升 CHEMKIN 在反应动力学仿真中的应用效果,还能充分利用其他软件工具的强大功能,实现更复杂的数据处理和分析。希望这些内容对您在化学反应动力学仿真中的工作有所帮助。

kkchenjj的博客 1138

Android 性能迎来提升:内核引入 AutoFDO 普惠所有 15-16 设备

最近 Google 官方宣布,把,也就是内核编译优化里,从而提升了 4%-21% 的不同场景系统性能。一般来说,在之前编译器(如 LLVM)通常需要基于静态代码分析,或者通过规则进行优化,例如猜哪条分支更容易执行,而 AutoFDO 就不一样了,它通过在实验室环境中采集设备在真实运行热门 App(Top 100)时的 CPU 执行流数据(Branch History),然后让。

恋猫de小郭的博客 610

MTEX包在Matlab中实现从EBSD数据生成Abaqus网格与晶粒取向:一种对用户材料旋转矩阵分量实践的全面指南

此教程提供了一种使用MTEX Matlab包处理EBSD数据的方法,并生成Abaqus输入文件,这对于进行多晶体有限元分析具有极大的帮助。但值得注意的是,这只是一个基本的例子,实际应用中可能需要根据您的实际需求进行调整。MTEX包还提供了许多其他的功能,可以进行更复杂的分析和处理,我非常推荐您去探索。希望这篇文章能对您有所帮助,如果您有任何疑问或建议,欢迎留言交流。在接下来的文章中,我将会介绍更多关于MTEX的高级功能,敬请期待。– (完)–

qq_38334677的博客 4437

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

解锁Linux性能:CachyOS内核编译优化技术LTO与AutoFDO实战

CachyOS内核是基于Arch Linux的优化内核,集成了多种调度器和性能改进技术。其中,LTO(链接时优化)和AutoFDO(自动反馈导向优化)是提升系统响应速度和吞吐量的关键技术。本文将带你了解这两项技术的核心原理,并通过CachyOS的实战案例,展示如何通过编译优化释放Linux系统的潜在性能。 ## LTO技术:链接时优化的性能魔法 ✨ 链接时优化(LTO)是一种编译器优化技术,它

gitblog_00516的博客 502

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Go和C++通用性能优化黑魔法——PGO!

????导读我们在进行性能优化的时候,往往会应用各种花式的优化手段:优化算法复杂度(从 O(N) 优化到 O(logN) ),优化锁的粒度或者无锁化,应用各种池化技术:内存池、连接池、线程池、协程池等。压缩技术、预拉取、缓存、批量处理、SIMD,内存对齐等等手段后,其实还有一种手段就是 Profile-Guided Optimization (PGO)。本文会介绍 PGO 的原理,以及 Go/C++ 语...

QcloudCommunity的博客 2003

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android 内核引入 AutoFDO,你的 App “免费“变快了

你有没有想过,手机变快这件事,不一定靠换芯片?听起来不多,但这是的提升——意味着每个 App、每次操作都受益。这个技术叫。

黄林晴 452

字节跳动 Service Mesh 数据面编译优化实践(1),【秋招面试专题解析

下面以一个例子解释 Speculative Devirtualization 的原理,假设我们编写了一个 Foo 的接口以及一个 FooImpl 的具体实现,如下所示:接着,在其他模块使用了 Foo 接口,如下:经过编译后,bar 函数的机器指令伪代码大致如下:call *addr上述伪代码将传入参数 foo 的 do_something 函数的实际地址进行加载,接着对该地址执行一个 call 指令,即动态多态分发的基本原理。

2401_83977580的博客 829

ACE-Guard资源限制器:彻底解决腾讯游戏卡顿的完整指南

还在为游戏关键时刻的突然掉帧而烦恼吗?ACE-Guard反作弊系统虽然保障了游戏环境的安全,但其过度的资源占用却成为了游戏流畅体验的最大障碍。本文将为你详细介绍sguard_limit项目的完整使用方法,让你轻松告别游戏卡顿,享受真正的丝滑游戏体验。 ## 核心问题与解决方案 **痛点分析:** ACE-Guard Client EXE在运行时会大量占用系统CPU和内存资源,导致游戏性能下降、

gitblog_00226的博客 647
上一篇: LWN:用BOLT进行内核优化!
下一篇: LWN:在unsafe的世界里获得safety!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值