⽤ egg 孵化你的 SQL 优化器 - 王润基第三届中国Rust开发者⼤会 ⽤ egg 孵化你的 SQL 优化器 王润基 RisingWave 内核开发⼯程师 ? Parser Binder Optimizer Executor SQL AST Logical Plan Physical Plan Table Catalog Storage RisingLight 查询引擎的整体结构 SELECT name, url Hash Join #0 = #2 Scan $1.1, $1.2 Scan $2.1, $2.2 Projection #1, #3 ⼀个 SQL 语句优化的例⼦ 基于规则的优化 (RBO) 基于代价的优化 (CBO) 谓词下推 Join Filter A B Join Filter A B Filter Join A Join B C Join C Nested Loop Join 连接重排序 连接算法选择 TopN A Order TopN A Limit 查询优化 定义计划节点 定义重写规则 ⽤纯 Rust 编写的第⼀代优化器 Visitor 模式 ⽤纯 Rust 编写的第⼀代优化器 e-class e-node Rewriting Rewriting (* ?x 2) => (<< ?x 1) Rewriting0 码力 | 39 页 | 6.48 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化从汇编角度看编译器优化 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1.课程安排与开发环境搭建: 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 cpu 缓存机制 8.GPU 专题: wrap 调度,共享内存, barrier 9.并行算法实战: x64 架构下的寄存器模型 通用寄存器: 32 位时代 • 32 位 x86 架构中的通用寄存器有: • eax, ecx, edx, ebx, esi, edi, esp, ebp • 其中 esp 是堆栈指针寄存器,和函数的调用与返回相关。 • 其中 eax 是用于保存返回值的寄存器。 通用寄存器: 64 位时代 • 64 位 x86 架构中的通用寄存器有: • rax, rcx0 码力 | 108 页 | 9.47 MB | 1 年前3
基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭⼼为核⼼的云 端架构是否还 满⾜需求? 01 02 03 边缘架构 ⼀种分布式计 算架构 构成边缘 计算架构 的核⼼ 可在边缘直接对数据进⾏相 关的计算(处理/存储)并提 供相应的查询功能 边缘架构 物联⽹设备的纽带 2. HPMQ 简介 HPMQ是基于Rust语⾔开发的 下⼀代可编程边缘分布式 MQTT软件,主要有以下⼏个 核⼼特性: • Geo-Distributed Rust? • 云端架构,我们⽆法根据设备地理位置实现就近通讯 • 只能做到在数据中⼼内相关的分布式扩展,⽆法直接进⾏ 全球节点的扩展 • 复杂的容灾⽅案 为什么需要geo-distributed 传统⽅案存在有问题 解决⽅案 geo-distributed架构 + 调度 如何管理分布式⽹络 我们主要基于eclipse-zenoh来做⼆次开 发,eclipse-zenoh是⼀款很优秀的rust 发,eclipse-zenoh是⼀款很优秀的rust 语⾔编写的,基于边缘架构的,开源分 布式消息服务基础架构,它帮我们解决 了很多分布式⽹络管理的共同的问题, ⽐如说分布式消息⼀致性问题,边缘节 点⾃动发现等问题 传统⽅案痛点 1)数据传输量⼤,中⼼压⼒⼤,⾼可⽤要求⾼ 2)数据发布与订阅都在中⼼,延迟⾼ 3)源站直接暴露 4)数据不好就近进⾏脱敏处理 5)数据不好就近进⾏存储 新⽅案优势0 码力 | 31 页 | 3.95 MB | 1 年前3
分布式任务系统cronsun@Copyright Sunteng Technology 分布式任务系统 cronsun 苏创绩 @Copyright Sunteng Technology 目录 01 任务系统 02 分布式任务系统 03 cronsun 04 心得体会 @Copyright Sunteng Technology Part One 01 任务系统 @Copyright Sunteng Technology Part Two 02 分布式任务系统 @Copyright Sunteng Technology 分布式系统的特点 1. 分布性 2. 对等性 3. 并发性 4. 缺乏全局时钟 5. 故障总是会发生 @Copyright Sunteng Technology 分布式 cron 分布式crond 分布式crontab cmd1 cmd2 cmd3 Technology Azkaban 批量工作流任务调度器(Hadoop) @Copyright Sunteng Technology Chronos Chronos 是一个运行在 Mesos 之上的具有分布式容错特性的作业调度器 @Copyright Sunteng Technology Dkron 分布式高可用的任务调度系统 @Copyright Sunteng Technology0 码力 | 48 页 | 1.52 MB | 1 年前3
Go性能优化概览-曹春晖业务性能优化概览 By Xargin 《Go 语⾔⾼级编程》合著者 Go contributor ⽬ 录 优化的前置知识 01 ⽣产环境的优化 02 Continuous profiling 03 优化的前置知识 第⼀部分 Latency numbers every programmer should know https://colin-scott.github.io/p html 优化的前置知识 • 要能读得懂基本的调⽤栈 • 了解 Go 语⾔内部原理(runtime,常⽤标准库) • 了解常⻅的⽹络协议(http、pb) https://github.com/bagder/http2-explained https://github.com/bagder/http3-explained 逃逸分析 ⽤户声明的对象,被放在栈上还是堆上, 是由编译器的 escape escape analysis 来决定的 ⽅法论 内存使⽤优化 CPU 使⽤优化 阻塞优化 GC 优化 标准库优化 runtime 优化 应⽤层优化 底层优化 • 越靠近应⽤层,优化带来的效果越好 • 涉及到底层优化的,⼤多数情况下还是修改应⽤代码 逻辑优化 ⽣产环境的优化 第⼆部分 ⾸先,是发现问题 API 压测 全链路压测 ⽣产环境被 ⾼峰流量打爆了 进 pprof0 码力 | 40 页 | 8.69 MB | 1 年前3
Swift 写解释器 - 戴铭0 码力 | 19 页 | 29.57 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化深入浅出访存优化 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 为什么往 int 数组里赋值 1 比赋值 0 慢一倍? 第 1 章:内存带宽 cpu-bound 与 memory-bound • 而 sine 这种内部需要泰勒展开来计算,每次迭代计算量很大的 循环体,并行才有较好的加速效果。称为计算瓶颈( cpu- bound )。 • 并行能减轻计算瓶颈,但不减轻内存瓶颈,故后者是优化的重点 。 浮点加法的计算量 • 冷知识:并行地给浮点数组每个元素做一次加法反而更慢。 • 因为一次浮点加法的计算量和访存的超高延迟相比实在太少了。 • 计算太简单,数据量又大,并行只带来了多线程调度的额外开销 。 • 这是为什么? CPU 内部的高速缓存 • 原来 CPU 的厂商早就意识到了内存延迟高,读写效率低 下的问题。因此他们在 CPU 内部引入了一片极小的存储 器——虽然小,但是读写速度却特别快。这片小而快的 存储器称为缓存( cache )。 • 当 CPU 访问某个地址时,会先查找缓存中是否有对应的 数据。如果没有,则从内存中读取,并存储到缓存中; 如果有,则直接使用缓存中的数据。0 码力 | 147 页 | 18.88 MB | 1 年前3
4 Python机器学习性能优化Python机器学习性能优化 以BERT服务为例例,从1到1000 刘欣 ⽬目录 CONTENTS 1. 优化的哲学 2. 了解你的资源 3. 定位性能瓶颈 4. 动⼿优化 1. 优化的哲学 "There ain't no such thing as a free lunch" Ahmdal’s Law • 系统整体的优化,取决于热点部分的占⽐比和该部分的加速程度 No Free Free Lunch • 定位热点 & 热点加速 • 对于项⽬目开发周期: 1. 先做出效果 2. 确定整体pipeline 3. 再考虑优化 • 对于⼈人⼯工智能项⽬目:迭代周期更更⻓长,更更是如此 以BERT服务为例 • BERT: TODO: ⼀一句句话解释 • 横扫多项NLP任务的SOTA榜 • 惊⼈人的3亿参数 以BERT服务为例 • Self Attention机制 's=Happy birthday to [MASK].' [“you"] 以BERT服务为例 • 我们现在上线了了这样⼀一个服务,每秒钟只能处理理10个请求 • Q: ⼤大家⼀一开始如何着⼿手优化 • Profile before Optimizing • 建⽴立闭环 2 了解你的资源 cpu/内存/io/gpu GPU为什么“快”? 计算⼒对⽐ • GFLOPS/s0 码力 | 38 页 | 2.25 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming性能优化 之 无分支编程 Branchless Programming by 彭于斌( @archibate ) 两种代码写法:分支 vs 三目运算符 两种使用方式:排序 vs 不排序 测试结果(均为 gcc -O3 ) 测试结果可视化 图表比较:分支 vs 无分支 分支 无分支 0 0.01 0.02 0.03 耗时(越低越好) 乱序 有序 • 传统的分支方法实现的 排序过的数据明显比乱序时高效。 • 无分支的方法对于乱序和有序的数据一样 高效,性能吊打了传统的分支方法。 • 对于传统分支的做法,为什么排序了的更 高效?既然无分支更高效,我要怎样优化 才能让我的程序变成无分支的呢?那就来 看本期性能优化专题课吧! 分支预测成败对性能的影响 排序为什么对有分支的版本影响那么大 为什么需要流水线 • 为了高效, CPU 的内部其实是一个流水 线 (pipeline) 事的情况下,例如你烧开水时就站在旁边 干瞪眼,什么也不做,其实完全可以在烧 开水的同时洗脸刷牙呀!原始的 CPU 也 是这样, ALU 在运算的时候指令解码单元 就在旁边干瞪眼,要等 ALU 跑完写回寄 存器来指令解码单元才开始继续工作,很 低效。 任务 时间 占用资源 洗脸 5 分钟 眼睛,嘴巴,手 烧开水 10 分钟 煤气灶 刷牙 5 分钟 嘴巴,手 看比站 15 分钟 眼睛 吃饭 300 码力 | 47 页 | 8.45 MB | 1 年前3
Rust分布式账务系统 - 胡宇第三届中国 Rust 开发者大会 Rust 构建分布式账务系统 在 Fintech 公司落地 Rust 项目的经验分享 Airwalle x 胡宇 Airwallex 我们是一家跨境支付领域的 Fintech 独角兽 关于我们 E2 轮 Fintech 独角兽,业务遍布全球 关于我们: Airwallex 墨尔本 新加坡 伦敦 深圳 香港 北京 旧金山 上海 东京 提供高效,低成本的数字银行服务 关于我们: Airwallex 从设计架构到实现细节 项目介绍 分布式账务系统 Fintech 互联网 正确性 bug= 资损 bug 不可怕,快速迭代 可靠性 丢数据 = 资损 允许数据丢失 性能 超低延迟 + 高吞吐 超高吞吐 交易日志 审计,监管 调试使用 分布式账务系统 Fintech 领域中的软件与互联网软件的不同 需求分析 支付处理: ● 转账 高可用:在部分节点失效的情况下,依旧可以提供正确的 服务 超低延迟:实时交易,超低响应延迟 水平扩展性:利用分布式事务实现钱包集群的的水平扩 展,应对高达 100 万 TPS 的流量 可演化性:业务逻辑与底层 API 解耦,当业务发生改变 时,底层 API 不用改变 分布式账务系统 设计理念 - Rust 是我们可靠的基石 分布式账务系统 存算分离 API 解耦 读写分离 层级账号 Rust ● 事务层与账户层分0 码力 | 27 页 | 12.60 MB | 1 年前3
共 611 条
- 1
- 2
- 3
- 4
- 5
- 6
- 62













