KubeCon2020/大型Kubernetes集群的资源编排优化0 码力 | 27 页 | 3.91 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人度高,研制难度大,创新性强,项目成果整体达到国际先进水平, 其中异质图建模与表示学习技术和超大规模图学习系统处于国际领 先水平。” 以终为始,以行为知,这一项目从图计算所面临的挑战出发,解决了大规模图数据所产生 的建模能力不足、结构知识难用、巨量数据难算等技术挑战,实现了大规模复杂异质图数 据的表示学习模型、语义推荐和风险管理关键技术,构建了完整的兼具理论指导与应用检 验的大规模图数据智能分析系统与平台,满足了大数据时代从复杂异质图数据中进行知识 新一代分布式图数据库需具备的特性 特性 信 雅 达 • 高可用 • 一致性(事 务) • 高性能 • 低资源消耗 • 易用 • 功能丰富 AtlasGraph 关键特性 云原生 Cloud-Native Graph Database 支持弹性伸缩,有 效利用硬件资源,高可用,高 可靠,故障自愈,低成本运维 HTAP Hybrid Transactional/Analytical0 码力 | 38 页 | 24.68 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化CPU 的预取机制,他能够在等待 a[i+1] 的内存数据抵达时,默默地做着 a[i] 的计算,从而只要计 算的延迟小于内存的延迟,延迟就被隐藏起来了,而不必等内存抵达了再算。这就是为什么有些运算量不足 32 次的程序还是会无法达到 mem-bound ,手动预取以后才能达到,就是因为硬件预取预测失败,导致不得不等 内存抵达了才能算,导致延迟隐藏失败。隐藏成功: a[0] a[1] a[2] CPU 的预取机制,他能够在等待 a[i+1] 的内存数据抵达时,默默地做着 a[i] 的计算,从而只要计 算的延迟小于内存的延迟,延迟就被隐藏起来了,而不必等内存抵达了再算。这就是为什么有些运算量不足 32 次的程序还是会无法达到 mem-bound ,手动预取以后才能达到,就是因为硬件预取预测失败,导致不得不等 内存抵达了才能算,导致延迟隐藏失败。隐藏失败: a[0] a[1] a[2] _mm 系列指令读取 a 和计算加法 。 • 漫长的优化之路,终于有了戏剧性的回报 。 • 但是注意到这里 res[offset] 的访问,一次 只有其中一个被用上,不能很好的利用寄 存器资源。 使用 _mm_stream_ps 和 SIMD 指令,加速计算和直写 • 为了充分填满寄存器,我们把 t 循环和 offset 循环交换一下( loop-interchange ) ,把0 码力 | 147 页 | 18.88 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 13 C++ STL 容器全解之 vectorresize(4, 233); • void resize(size_t n, int const &val); vector 容器: resize • 调用 resize(n) 的时候,如果数组里面不足 n 个元素,假设是 m 个,则他只会用 0 填充新增 的 n - m 个元素,前 m 个元素会保持不变。 • vectora = {1, 2}; • a.resize(4); = {1, 2, 3, 4}; • void resize(size_t n); vector 容器: resize • 调用第二个重载 resize(n, val) 的时候,如果数组 里面不足 n 个元素,假设是 m 个,则他只会用第 二个参数 val 填充新增的 n - m 个元素,前 m 个 元素会保持不变。 • vector a = {1, 2}; • a.resize(4 容器: reserve 预留一定容量,避免之后重复分配 • 内存分配是需要一定时间的。如果我们程序员能预料到数组 最终的大小,可以用 reserve 函数预留一定的容量,这样之 后就不会出现容量不足而需要动态扩容影响性能了。例如这 里我们一开始预留了 12 格容量,这样从 5 到 12 的时候就 不必重新分配。此外,还要注意 reserve 时也会移动元素。 • size_t reserve(size_t 0 码力 | 90 页 | 4.93 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南ed(VERSION 3.15) 表示本 CMakeLists.txt 至少需要 CMake 版本 3.15 以上才能运行。 如果用户的 CMake 版本小于 3.15 ,会出现“ CMake 版本不足”的提示。 假设我现在构建一个需要版本 3.99 的 CMake 项目 会正常报错提示版本过低,而不是等到某处用到 3.99 版本才有的特性时才出错。 可以通过 cmake --version0 码力 | 166 页 | 6.54 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串size_t len = -1) const; • substr(pos, len) 会截取从第 pos 个字符开始,长度为 len 的子字符串,原字符串不会改变 。 • 如果原字符串剩余部分长度不足 len ,则返回长度小于 len 的子字符串而不会出错。 • 如果 pos 超出了原字符串的范围,则抛出 std::out_of_range 异常(和 at 同款的哦)。 • 可以指定 len0 码力 | 162 页 | 40.20 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
C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理getter/setter 函数分离了声明和定 义,实现在另一个文件时! C++ 思想: RAII ( Resource Acquisition Is Initialization ) 资源获取视为初始化,反之,资源释放视为销毁 C++ 除了用于初始化的构造函数( constructor ) 还包括了用于销毁的解构函数( destructor ) 离开 {} 作用域自动释放 手动释放 RAII Python 等垃圾回收语言不同, C++ 的 解构函数是显式的,离开作用域自动销毁,毫不含 糊(有好处也有坏处,对高性能计算而言利大于 弊) 如果没有解构函数,则每个带有返回的分 支都要手动释放所有之前的资源 : RAII :异常安全( exception-safe ) C++ 标准保证当异常发生时,会调用已创建对象的解构函数 。 因此 C++ 中没有(也不需要) finally 语句。 如果此处不关闭,则可等 • 第一种是,你的 func() 实际上并不需要 “夺走”资源的占有权( ownership )。比如 刚才这个例子, func() 只是调用了 p 的 某个成员函数而已,并没有接过掌管对象 生命周期的大权。 解决方案 2 : unique_ptr 不能拷贝,但可以移动 • 第二种是,你的 func() 需要“夺走”资源的 占有权。比如右边这个例子, func 把指针 放到一个全局的列表里,0 码力 | 96 页 | 16.28 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
共 18 条
- 1
- 2













