KubeCon2020/大型Kubernetes集群的资源编排优化0 码力 | 27 页 | 3.91 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理getter/setter 函数分离了声明和定 义,实现在另一个文件时! C++ 思想: RAII ( Resource Acquisition Is Initialization ) 资源获取视为初始化,反之,资源释放视为销毁 C++ 除了用于初始化的构造函数( constructor ) 还包括了用于销毁的解构函数( destructor ) 离开 {} 作用域自动释放 手动释放 RAII Python 等垃圾回收语言不同, C++ 的 解构函数是显式的,离开作用域自动销毁,毫不含 糊(有好处也有坏处,对高性能计算而言利大于 弊) 如果没有解构函数,则每个带有返回的分 支都要手动释放所有之前的资源 : RAII :异常安全( exception-safe ) C++ 标准保证当异常发生时,会调用已创建对象的解构函数 。 因此 C++ 中没有(也不需要) finally 语句。 如果此处不关闭,则可等 // 拷贝赋值 • 追求性能时推荐用拷贝构造,因为可以避免一次无参构造,拷贝赋值是出于需要临时修改 对象的灵活性需要。 • 这个函数同样可以由 = delete 和 = default 控制是否默认生成。 • 注: return *this 是为了支持连等号 a = b = c; 编译器自动生成的函数:全家桶 • 其实,除了拷贝构造和拷贝赋值,编译器会自动生成的特殊函数还有这些:0 码力 | 96 页 | 16.28 MB | 1 年前3
Zadig 面向开发者的云原生 DevOps 平台项目间依赖复杂,环境管理难 • 交付版本依赖工单,发布风险高 • 公共资源 / 业务资源利用率低 赋能多业务:一个平台解决了多异构项目的管理和规范 团队高效协作:定义团队角色工作流模板,随时可用云上环境 价值清晰呈现:为管理者提供全视角效能数据,赋能数字决策 人工低效操作减少 80% 构建资源利用率提升 60% 业务资源利用率提升 30% 统一治理内部规范,开发 自助上线;解放运维,工 面向多服务并行部署,安全发布, 0 维护负担 支撑云原生构建 / 运行环境,多云异构支持及企业 级登录权限支持 传统运维管理类平台 蓝鲸 Rainbond KubeSphere KubeVela 面向资源管理的运维工具集 面向开发者,需结合 CI/CD 工具额外搭建 全流程能力 专门面向开发者的生产力平台,涵盖全流程需求到 开发,测试,运维的云原生一体化技术底座支撑 云厂商 DevOps 平台 度,无需与运维持续沟通 降低个人心智负担 • 通过平台工程,将底层的复杂性 抽象化,降低个人心智负担,提 高开发效率 可重用降低运维成本 • 一些组织可能过度依赖高级工程 师管理发布流程和基础设施,导 致资源浪费和效率低下 Zadig 平台工程模式 工程规模数据: • 1500+ 产研工程师 Vs. 2 人运维 • 50 + 个 Kubernetes 全球集群 • 300+ 个数字产品(资产沉淀)0 码力 | 59 页 | 81.43 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人同事 / 一致行动 人 / 担保同地址 / 同设备登 陆 /... 已签署 / 过期签署 / 意向签署 /... 已签署 / 过期签署 / 意向签署 /... 董监高 / 就职 / 实际控制人 拥有 / 抵押 / 质 押 股权 / 资管计划 / 资金往来 / 担 保 / 借贷 / 集团 / 控股 / 上下 游 ... 父子 / 组合 / 继承 转账 / 大额转账 / 频繁转 使用图数据库的查询语言进行点边的关联查询,可以快速完成传统数据库难以完成的 多度点边关 联 当前图的典型应用场景 路径识别 群体挖掘 节点识别 相似节点 链接预测 连接强度 一致行动人 同事关系 实际控制人 可能认识的人 上下游 同爱好的人 亲属关系 … 人与人、企业与企业、企业与人之间的 复杂、潜在关系推导和挖掘 为已有的分析模型增加“关系特征”维 度 客户贡献度 客户信用分 新一代分布式图数据库需具备的特性 特性 信 雅 达 • 高可用 • 一致性(事 务) • 高性能 • 低资源消耗 • 易用 • 功能丰富 AtlasGraph 关键特性 云原生 Cloud-Native Graph Database 支持弹性伸缩,有 效利用硬件资源,高可用,高 可靠,故障自愈,低成本运维 HTAP Hybrid Transactional/Analytical0 码力 | 38 页 | 24.68 MB | 1 年前3
Rust 异步并发框架在移动端的应用 - 陈明煜异步机制 Asynchronous Rust 异步并发框架是许多大型应用、系统具备的底层能力。 区别于多线程编程模型,它带来以下优势: 任务调度颗粒度更小,充分利用线程资源 更可控的线程数 单个任务资源占用:几十 KB -> 几百 Byte 任务切换时间 : 10 微秒 -> 100 纳秒 Rust 语言并没有提供异步并发框架, 只提供异步所需的基本特性: Future 任务窃取 Fusion of IO/CPU intensive 结构化并发 Structured Concurrency 核心在于通过一种父子结构化的方法实现并发程序,用具有明确入口点和出口 点的控制流结构来封装并发任务(可以是线程也可以是协程)的执行,确保所有派生任务在出口之前完 成。 Structured concurrency 结构化并发带来的好处: 更高的易用性,用户不再需要显示调用0 码力 | 25 页 | 1.64 MB | 1 年前3
Await-Tree Async Rust 可观测性的灵丹妙药 - 赵梓淇回顾 Async Rust 的设计与痛点 1 Await-Tree 的 应用与真实案例 3 设计目标 Await Tree 的设计原理与实现 • 追踪关键 Future 的生命周期和控制流 • Init, First Poll, Pending, Next Poll, Ready, Cancel • 实时将 Task 的执行状态维护为一棵树 • 显示目前正在阻塞 / 执行的 基本用例 Await Tree 的设计原理与实现 基本用例 Await Tree 的设计原理与实现 设计细节 Await Tree 的设计原理与实现 • 充分理解 Future 生命周期中的控制流 Await Tree 的维护 Await Tree 的设计原理与实现 • 初始状态 Await Tree 的维护 Await Tree 的设计原理与实现 • Future 构造 Await Stuck : Future Detach Await Tree 在 RisingWave 中的应用 • S3 Block Cache Single-Flight Async Stuck :环形资源依赖 Await Tree 在 RisingWave 中的应用 • gRPC Streaming 连接复用 & 反压 Await-Tree Async Rust 可观测性的灵丹妙药 总结0 码力 | 37 页 | 8.60 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化大小,这样即使索引小于 0 或大于 n 也不会越界。 ndarray :解决访问越界问题 • 我们采用了“索性分配更大数组”的办法。 • 因此我们现在给 ndarray 的模板加了一个 额外参数,用来控制边界层的大小。 • 这里我们的图像模糊操作需要向外扩张访 问 8 个元素,因此需要把 a 的边界层大小 声明为 8 ,即 ndarray<2, float, 8> 。 ndarray :解决起始地址对齐问题 大难点:某个改动可能对性能没有效果,甚至反而产生负面效果。然而有经验的优化人员会 知道,这不一定意味着这项改动是错的:有可能要配合多个改动一起上,才能有正面效果。 • 性能优化我们需要尝试所有的排列组合,而不能使用控制变量法,否则无法发现这种组合拳 。 用 stream 直写,进一步优化写入带宽 可以看到应用了分块 + 预取 + 直写的 x_blur ,和直写的拷贝一样快了。虽然 这里 loadu 重复 _mm 系列指令读取 a 和计算加法 。 • 漫长的优化之路,终于有了戏剧性的回报 。 • 但是注意到这里 res[offset] 的访问,一次 只有其中一个被用上,不能很好的利用寄 存器资源。 使用 _mm_stream_ps 和 SIMD 指令,加速计算和直写 • 为了充分填满寄存器,我们把 t 循环和 offset 循环交换一下( loop-interchange ) ,把0 码力 | 147 页 | 18.88 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 性能优化之无分支编程 Branchless Programming串行的一系列指令并行化。为了理解为什 么需要流水线,我们先反过来,假设没有 流水线,会有什么坏处。 • 例如,右边你今天早上的任务清单。 • 请问你这些任务总共需要多少时间? 任务 时间 占用资源 洗脸 5 分钟 眼睛,嘴巴,手 烧开水 10 分钟 煤气灶 刷牙 5 分钟 嘴巴,手 看比站 15 分钟 眼睛 吃饭 30 分钟 嘴巴,手 拉粑粑 20 分钟 屁股 为什么需要流水线 低效。 任务 时间 占用资源 洗脸 5 分钟 眼睛,嘴巴,手 烧开水 10 分钟 煤气灶 刷牙 5 分钟 嘴巴,手 看比站 15 分钟 眼睛 吃饭 30 分钟 嘴巴,手 拉粑粑 20 分钟 屁股 洗脸 烧开水 刷牙 看比站 吃饭 拉粑粑 5 10 5 15 30 20 为什么需要流水线 • 更高效的办法是,观察每个任务都占用哪些 资源,所占用资源不冲突的可以同时进行, 节省时间。 20 = 40 分钟,比你快一倍多。 任务 时间 占用资源 洗脸 5 分钟 眼睛,嘴巴,手 烧开水 10 分钟 煤气灶 刷牙 5 分钟 嘴巴,手 看比站 15 分钟 眼睛 吃饭 30 分钟 嘴巴,手 拉粑粑 20 分钟 屁股 洗脸 刷牙 烧开水 吃饭 看比站 拉粑粑 5 5 10 20 条件跳转指令 • 让不占用相同资源的任务同时进行,这也是 CPU 流水线的初衷。但理想是美好的,现实0 码力 | 47 页 | 8.45 MB | 1 年前3
Rust与算法 - 谢波……………… …………………………….. 1 6 11 15 21 • 背景介绍 • 算法相关知识 • Rust 实现数据结构 • Rust 实现算法 • 总结及学习资源 背景介绍 • 个人信息 • 写作动机 • 可参考点 • 为什么 背景介绍 # 个人职业 # 与 Rust 结缘 # 前 GPT 时代作品 个人信息 结算及大数据系统研发工程师 疫情下的明智选择 Rust , Rust 中国 大会也才第三届,期待 Rust 中国大会第十届 Rust 处于起步阶段 中文圈学习资料或书籍少,有部分是翻译国外产品,能 不能中国人向国外输出作品 Rust 缺少学习资源 Rust 未来大有可为 Rust 在操作系统,数据库,各种框架和工具上应用范围 广 写作动机 当情况不明时,抱着一个纯粹的目标干事就行了,其他 的留给时间检验。不懂就学,技术写作更像一种共创, + 1; • V+E = 32 • 2E – F + 2 = 32 总结及学习资源 • 算法总结 • 学习资源 总结及学习资源 Rust 算法总结 • 复杂度分析及算法优化 • 别自己实现,用标准库 • 利用 Rust 特性实现高效算法 • 技术在进步,用新工具辅助学习 Rust 学习资源 # 社区/公众号 社区: Rust 语言中文社区、乐酷 Rust 技术论坛 公号:觉学社、0 码力 | 28 页 | 3.52 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串类特殊的控制字符 (control character) : • 0 表示空字符(‘ \0’ ) • 9 表示 Tab 制表符(‘ \t’ ) • 10 表示换行(‘ \n’ ) • 13 表示回车(‘ \r’ ) • 27 表示 ESC 键(‘ \x1b’ ) • 127 表示 DEL 键(‘ \x7f’ )等 • 0~31 和 127 这些整数,就构成了 ASCII 码中控制字符的部分。 码中控制字符的部分。 关于控制字符的一个冷知识 • 在 Linux 命令行中启动 cat 。 • 试试按 Ctrl+R , Ctrl+E , Ctrl+C 等一系列 组合键,看到出现了什么? • 可以看到显示的字符变成了 ^R ^E ^C 等… … • 这是 Unix 类系统显示控制字符的一种方式 。 • 众所周知,我们常用 Ctrl+C 来发送中断信号 ( SIGINT )强制终止程序,这时常常会看到 )强制终止程序,这时常常会看到 一个 ^C 的字样,就是这样出现的。这里我 们的 cat 程序收到 ^C 以后,就直接终止退 出了。 关于控制字符的一个冷知识 • 除此之外,因为 ^D 是“传输终止符”,还可以在控制 台输入 Ctrl+D 来关闭标准输入流,终止正在读取他 的程序。 • 小彭老师常用 Ctrl+D 来快速关闭一个 shell (和输入 exit 命令的效果一样)。 • 以及按 Ctrl+I 的效果其实和0 码力 | 162 页 | 40.20 MB | 1 年前3
共 24 条
- 1
- 2
- 3













