 Автоматизация управления ClickHouse-кластерами в KubernetesАвтоматизация управления ClickHouse-кластерами в Kubernetes Владислав Клименко и Валерий Панов K8s? Что это? K8s is the new Linux Это платформа с открытым кодом. позволяющая: • строить системы на ClickHouse в Kubernetes? • Все компоненты системы уже в k8s. • Максимальная унификация управления. • Нужно быстро строить хранилища данных. • Нужна максимальная переносимость. ClickHouse в Kubernetes – это это просто? НЕ ОЧЕНЬ! Почему? Потому что ClickHouse + Kubernetes ClickHouse в Kubernetes? Что будем делать? Одна кнопка ClickHouse Оператор? Что это? • Программа, управляющая другими программами0 码力 | 44 页 | 2.24 MB | 1 年前3 Автоматизация управления ClickHouse-кластерами в KubernetesАвтоматизация управления ClickHouse-кластерами в Kubernetes Владислав Клименко и Валерий Панов K8s? Что это? K8s is the new Linux Это платформа с открытым кодом. позволяющая: • строить системы на ClickHouse в Kubernetes? • Все компоненты системы уже в k8s. • Максимальная унификация управления. • Нужно быстро строить хранилища данных. • Нужна максимальная переносимость. ClickHouse в Kubernetes – это это просто? НЕ ОЧЕНЬ! Почему? Потому что ClickHouse + Kubernetes ClickHouse в Kubernetes? Что будем делать? Одна кнопка ClickHouse Оператор? Что это? • Программа, управляющая другими программами0 码力 | 44 页 | 2.24 MB | 1 年前3
 基于Rust-vmm实现Kubernetes运行时Yingzhe Ru(@ruyingzhe), Tencent Liangyu Zhou(@choujimmy), Tencent Implement Kubernetes Runtime Based on Rust-VMM About Us Yingzhe Ru Senior Software Engineer at Tencent Working on TKEStack project in Container and Kubernetes field, promote lots of K8S production practice in Tencent Motivation https://kccncchina2018english.sched.com/event/FuLz/layers-of-isolation-in-kubernetes-tim-allclair-google gle Kubernetes has many layers of isolation, but we will focus on pod-to-pod isolation in this talk, AKA Sandbox Isolation. • Container Escape docker.vh.neargle.com:8888/?command_exec=python3 -c "import0 码力 | 27 页 | 34.17 MB | 1 年前3 基于Rust-vmm实现Kubernetes运行时Yingzhe Ru(@ruyingzhe), Tencent Liangyu Zhou(@choujimmy), Tencent Implement Kubernetes Runtime Based on Rust-VMM About Us Yingzhe Ru Senior Software Engineer at Tencent Working on TKEStack project in Container and Kubernetes field, promote lots of K8S production practice in Tencent Motivation https://kccncchina2018english.sched.com/event/FuLz/layers-of-isolation-in-kubernetes-tim-allclair-google gle Kubernetes has many layers of isolation, but we will focus on pod-to-pod isolation in this talk, AKA Sandbox Isolation. • Container Escape docker.vh.neargle.com:8888/?command_exec=python3 -c "import0 码力 | 27 页 | 34.17 MB | 1 年前3
 KubeCon2020/大型Kubernetes集群的资源编排优化Resource orchestration optimization of kubernetes cluster in large scale Patrickxie ( 谢谆志) Background Cloud has been the general trend. How to manage so many clusters ,resources and businesses0 码力 | 27 页 | 3.91 MB | 1 年前3 KubeCon2020/大型Kubernetes集群的资源编排优化Resource orchestration optimization of kubernetes cluster in large scale Patrickxie ( 谢谆志) Background Cloud has been the general trend. How to manage so many clusters ,resources and businesses0 码力 | 27 页 | 3.91 MB | 1 年前3
 Zadig 面向开发者的云原生 DevOps 平台数据变更 xN 代码变更 xN 配置变更 xN 部署测试环境 xN 部署预发环境 xN 部署生产环境 xN 部署 / 灰度上线 xN 监控 / 告警 xN 版本归档 xN 交付追踪 xN 数据度量 xN 服务、工单管理 事件、缺陷管理 想 法 用 户 运行阶段 需求阶段 研发阶段 现代软件交付挑战:开发 5 分钟,上线 2 企业解决方案和最佳实践内置 发布 AI 增强解决方案 企 业 开 放 性 、 A I 能 力 增 强 产品发展历程 高频极速迭代: Zadig 开源 29 个月共迭代 21 个版本 “ ” 开发者常处于 今天发版、明早升级 嗷嗷待哺状态 Zadig 优势、使用场景、解决问题域 Zadig 解决问题域 Zadig 云原生开放性:极简、 0 负担接入 Zadig 业务架构 迭代进度一目了然 项目从无到有可核算 管理有数据科学依据 解放管理,更多时间花在 业务创新 平台运维 业务压力大,能力建设缓慢: • 大量工作花在工具链维护 • 项目间依赖复杂,环境管理难 • 交付版本依赖工单,发布风险高 • 公共资源 / 业务资源利用率低 赋能多业务:一个平台解决了多异构项目的管理和规范 团队高效协作:定义团队角色工作流模板,随时可用云上环境 价值清晰呈现:为管理者提供全视角效能数据,赋能数字决策0 码力 | 59 页 | 81.43 MB | 1 年前3 Zadig 面向开发者的云原生 DevOps 平台数据变更 xN 代码变更 xN 配置变更 xN 部署测试环境 xN 部署预发环境 xN 部署生产环境 xN 部署 / 灰度上线 xN 监控 / 告警 xN 版本归档 xN 交付追踪 xN 数据度量 xN 服务、工单管理 事件、缺陷管理 想 法 用 户 运行阶段 需求阶段 研发阶段 现代软件交付挑战:开发 5 分钟,上线 2 企业解决方案和最佳实践内置 发布 AI 增强解决方案 企 业 开 放 性 、 A I 能 力 增 强 产品发展历程 高频极速迭代: Zadig 开源 29 个月共迭代 21 个版本 “ ” 开发者常处于 今天发版、明早升级 嗷嗷待哺状态 Zadig 优势、使用场景、解决问题域 Zadig 解决问题域 Zadig 云原生开放性:极简、 0 负担接入 Zadig 业务架构 迭代进度一目了然 项目从无到有可核算 管理有数据科学依据 解放管理,更多时间花在 业务创新 平台运维 业务压力大,能力建设缓慢: • 大量工作花在工具链维护 • 项目间依赖复杂,环境管理难 • 交付版本依赖工单,发布风险高 • 公共资源 / 业务资源利用率低 赋能多业务:一个平台解决了多异构项目的管理和规范 团队高效协作:定义团队角色工作流模板,随时可用云上环境 价值清晰呈现:为管理者提供全视角效能数据,赋能数字决策0 码力 | 59 页 | 81.43 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 15 C++ 系列课:字符与字符串针,如果让首地址指针向前移动 n 位,那就实现删除前 n 个字符的效果,而不用实际修改数组本身(更高效)。 C 语言转义符 • 常见的转义符: • ‘\n’ 换行符:另起一行(光标移到下一行行首) • ‘\r’ 回车符:光标移到行首(覆盖原来的字符) • ‘\t’ 缩进符:光标横坐标对齐到 8 的整数倍 • ‘\b’ 退格符:光标左移,删除上个字符 • ‘\\’ 反斜杠:表示这个是真的 \ ,不是转义符 不等价。 • ‘0’ 相当于他的 ASCII 码 48 。 • 而 ‘ \0’ 就是整数 0 。 C 语言转义符 • 常见的转义符: • ‘\n’ 换行符:另起一行(光标移到下一行行首) • ‘\r’ 回车符:光标移到行首(覆盖原来的字符) • ‘\t’ 缩进符:光标横坐标对齐到 8 的整数倍 • ‘\b’ 退格符:光标左移,删除上个字符 • ‘\\’ 反斜杠:表示这个是真的 \ ,不是转义符 不等价。 • ‘0’ 相当于他的 ASCII 码 48 。 • 而 ‘ \0’ 就是整数 0 。 C 语言转义符 • 常见的转义符: • ‘\n’ 换行符:另起一行(光标移到下一行行首) • ‘\r’ 回车符:光标移到行首(覆盖原来的字符) • ‘\t’ 缩进符:光标横坐标对齐到 8 的整数倍 • ‘\b’ 退格符:光标左移,删除上个字符 • ‘\\’ 反斜杠:表示这个是真的 \ ,不是转义符0 码力 | 162 页 | 40.20 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 15 C++ 系列课:字符与字符串针,如果让首地址指针向前移动 n 位,那就实现删除前 n 个字符的效果,而不用实际修改数组本身(更高效)。 C 语言转义符 • 常见的转义符: • ‘\n’ 换行符:另起一行(光标移到下一行行首) • ‘\r’ 回车符:光标移到行首(覆盖原来的字符) • ‘\t’ 缩进符:光标横坐标对齐到 8 的整数倍 • ‘\b’ 退格符:光标左移,删除上个字符 • ‘\\’ 反斜杠:表示这个是真的 \ ,不是转义符 不等价。 • ‘0’ 相当于他的 ASCII 码 48 。 • 而 ‘ \0’ 就是整数 0 。 C 语言转义符 • 常见的转义符: • ‘\n’ 换行符:另起一行(光标移到下一行行首) • ‘\r’ 回车符:光标移到行首(覆盖原来的字符) • ‘\t’ 缩进符:光标横坐标对齐到 8 的整数倍 • ‘\b’ 退格符:光标左移,删除上个字符 • ‘\\’ 反斜杠:表示这个是真的 \ ,不是转义符 不等价。 • ‘0’ 相当于他的 ASCII 码 48 。 • 而 ‘ \0’ 就是整数 0 。 C 语言转义符 • 常见的转义符: • ‘\n’ 换行符:另起一行(光标移到下一行行首) • ‘\r’ 回车符:光标移到行首(覆盖原来的字符) • ‘\t’ 缩进符:光标横坐标对齐到 8 的整数倍 • ‘\b’ 退格符:光标左移,删除上个字符 • ‘\\’ 反斜杠:表示这个是真的 \ ,不是转义符0 码力 | 162 页 | 40.20 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 11 现代 CMake 进阶指南build 目录 • 切换到 build 目录 • 在 build 目录运行 cmake < 源码目录 > 生成 Makefile • 执行本地的构建系统 make 真正开始构建( 4 进程并 行) • 让本地的构建系统执行安装步骤 • 回到源码目录 现代 CMake 提供了更方便的 -B 和 --build 指令,不同平台,统一命 令! • cmake -B build • cmake 是一个空字符串。 因此这里通过 if (NOT CMAKE_BUILD_TYPE) 判断是否为空,如果空 则自动设为 Release 模式。 大多数 CMakeLists.txt 的开头都会有这样三行,为的是让默认的构建类 型为发布模式(高度优化)而不是默认的调试模式(不会优化)。 我们稍后会详细捋一遍类似于 CMAKE_BUILD_TYPE 这样的东西。绝 大多数 CMakeLists.txt Fortran :老年人的编程语言 • CUDA :英伟达的 CUDA ( 3.8 版本新增) • OBJC :苹果的 Objective-C ( 3.16 版本新增) • OBJCXX :苹果的 Objective-C++ ( 3.16 版本新增) • ISPC :一种因特尔的自动 SIMD 编程语言( 3.18 版本新增) • 如果不指定 LANGUAGES ,默认为 C 和 CXX 。 https://cmake0 码力 | 166 页 | 6.54 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 11 现代 CMake 进阶指南build 目录 • 切换到 build 目录 • 在 build 目录运行 cmake < 源码目录 > 生成 Makefile • 执行本地的构建系统 make 真正开始构建( 4 进程并 行) • 让本地的构建系统执行安装步骤 • 回到源码目录 现代 CMake 提供了更方便的 -B 和 --build 指令,不同平台,统一命 令! • cmake -B build • cmake 是一个空字符串。 因此这里通过 if (NOT CMAKE_BUILD_TYPE) 判断是否为空,如果空 则自动设为 Release 模式。 大多数 CMakeLists.txt 的开头都会有这样三行,为的是让默认的构建类 型为发布模式(高度优化)而不是默认的调试模式(不会优化)。 我们稍后会详细捋一遍类似于 CMAKE_BUILD_TYPE 这样的东西。绝 大多数 CMakeLists.txt Fortran :老年人的编程语言 • CUDA :英伟达的 CUDA ( 3.8 版本新增) • OBJC :苹果的 Objective-C ( 3.16 版本新增) • OBJCXX :苹果的 Objective-C++ ( 3.16 版本新增) • ISPC :一种因特尔的自动 SIMD 编程语言( 3.18 版本新增) • 如果不指定 LANGUAGES ,默认为 C 和 CXX 。 https://cmake0 码力 | 166 页 | 6.54 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 16 现代 CMake 模块化项目管理指南分别在各自的目录下有自己的 CMakeLists.txt 。 二、根项目的 CMakeLists.txt 配置 • 在根项目的 CMakeLists.txt 中,设置了默 认的构建模式,设置了统一的 C++ 版本 等各种选项。然后通过 project 命令初始 化了根项目。 • 随后通过 add_subdirectory 把两个子项 目 pybmain 和 biology 添加进来(顺序 无关紧要),这会调用 Studio 。这样以后你每次构建任 何项目, find_package 都能自动找到这个路径的 Qt5 包了。 • (3) 单项目有效。直接在你自己项目的 CMakeLists.txt 最开头写一行(注意要加引号): • set(Qt5_DIR ”D:/Qt5.12.1/msvc2017/lib/cmake/Qt5”) # 一定要加在最前面! 举例, Linux 系统, Qt5 • 例如我把 ,然后重启终端。这样以后你每次构建任何 项目, find_package 都能自动找到这个路径的 Qt5 包了。 • (3) 单项目有效。直接在你自己项目的 CMakeLists.txt 最开头写一行: • set(Qt5_DIR ”/opt/Qt5.12.1/lib/cmake/Qt5”) # 一定要加在最前面! 三种方案利弊分析 • 单次有效(通过命令行)最安全,小彭老师高度推荐。0 码力 | 56 页 | 6.87 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 16 现代 CMake 模块化项目管理指南分别在各自的目录下有自己的 CMakeLists.txt 。 二、根项目的 CMakeLists.txt 配置 • 在根项目的 CMakeLists.txt 中,设置了默 认的构建模式,设置了统一的 C++ 版本 等各种选项。然后通过 project 命令初始 化了根项目。 • 随后通过 add_subdirectory 把两个子项 目 pybmain 和 biology 添加进来(顺序 无关紧要),这会调用 Studio 。这样以后你每次构建任 何项目, find_package 都能自动找到这个路径的 Qt5 包了。 • (3) 单项目有效。直接在你自己项目的 CMakeLists.txt 最开头写一行(注意要加引号): • set(Qt5_DIR ”D:/Qt5.12.1/msvc2017/lib/cmake/Qt5”) # 一定要加在最前面! 举例, Linux 系统, Qt5 • 例如我把 ,然后重启终端。这样以后你每次构建任何 项目, find_package 都能自动找到这个路径的 Qt5 包了。 • (3) 单项目有效。直接在你自己项目的 CMakeLists.txt 最开头写一行: • set(Qt5_DIR ”/opt/Qt5.12.1/lib/cmake/Qt5”) # 一定要加在最前面! 三种方案利弊分析 • 单次有效(通过命令行)最安全,小彭老师高度推荐。0 码力 | 56 页 | 6.87 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 07 深入浅出访存优化章:内存带宽 cpu-bound 与 memory-bound • 通常来说,并行只能加速计算的部分,不能加速内存读写的部分 。 • 因此,对 fill 这种没有任何计算量,纯粹只有访存的循环体,并 行没有加速效果。称为内存瓶颈( memory-bound )。 • 而 sine 这种内部需要泰勒展开来计算,每次迭代计算量很大的 循环体,并行才有较好的加速效果。称为计算瓶颈( cpu- bound 常见操作所花费的时间 • 图中加法 (add) 和乘法 (mul) 都指的整数。 • 区别是浮点的乘法和加法基本是一样速度。 • L1/2/3 read 和 Main RAM read 的时间指的是 读一个缓存行( 64 字节)所花费的时间。 • 根据计算: 125/64*4≈8 • 即从主内存读取一次 float 花费 8 个 cycle , 符合小彭老师的经验公式。 • “right” 和“ wrong” 架构中每个条目的存储 64 字节的数据,这个条目 又称之为缓存行( cacheline )。 • 当访问 0x0048~0x0050 这 4 个字节时,实际会导致 0x0040~0x0080 的 64 字节数据整个被读取到缓存中。 • 这就是为什么我们喜欢把数据结构的起始地址和大小对齐到 64 字节,为的是不要浪费缓存行的存储空间。 缓存的工作机制:写 • 缓存中存储的数据结构:0 码力 | 147 页 | 18.88 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 07 深入浅出访存优化章:内存带宽 cpu-bound 与 memory-bound • 通常来说,并行只能加速计算的部分,不能加速内存读写的部分 。 • 因此,对 fill 这种没有任何计算量,纯粹只有访存的循环体,并 行没有加速效果。称为内存瓶颈( memory-bound )。 • 而 sine 这种内部需要泰勒展开来计算,每次迭代计算量很大的 循环体,并行才有较好的加速效果。称为计算瓶颈( cpu- bound 常见操作所花费的时间 • 图中加法 (add) 和乘法 (mul) 都指的整数。 • 区别是浮点的乘法和加法基本是一样速度。 • L1/2/3 read 和 Main RAM read 的时间指的是 读一个缓存行( 64 字节)所花费的时间。 • 根据计算: 125/64*4≈8 • 即从主内存读取一次 float 花费 8 个 cycle , 符合小彭老师的经验公式。 • “right” 和“ wrong” 架构中每个条目的存储 64 字节的数据,这个条目 又称之为缓存行( cacheline )。 • 当访问 0x0048~0x0050 这 4 个字节时,实际会导致 0x0040~0x0080 的 64 字节数据整个被读取到缓存中。 • 这就是为什么我们喜欢把数据结构的起始地址和大小对齐到 64 字节,为的是不要浪费缓存行的存储空间。 缓存的工作机制:写 • 缓存中存储的数据结构:0 码力 | 147 页 | 18.88 MB | 1 年前3
 Zadig 产品使用手册生产环境发布——蓝绿发布 ,执行工作流更新生产环境 步骤包含:部署蓝环境 -> 审批 -> 切换生产版本 Sprint 发布 需求开发 测试验证 产品规划 变更发布 生产环境发布——金丝雀发布 执行工作流更新生产环境 步骤包含:部署金丝雀 -> 随机测试 -> 审批 -> 新版本全量发布 Sprint 发布 需求开发 测试验证 产品规划 变更发布 生产环境发布——分批次灰度发布 步骤包含:灰度 20% -> 审批 -> 灰度 60% -> 审批 -> 新版本全量发布 Sprint 发布 需求开发 测试验证 产品规划 变更发布 生产环境发布—— Istio 发布, 执行工作流更新生产环境 步骤包含:部署新版本 20% 流量导入新版本 -> 审批 -> 100% 流量导入新版本 Sprint 发布 需求开发 测试验证 产品规划 Sprint 发布 发布 变更发布 需求开发 测试验证 产品规划 uat 发布——版本管理 生成版本信息,包括:服务镜像,服务配置,服务启动顺序等等 业务负责人 / 产品经理 —— 项目整体运行状 况 项目负责人——分析项目各个环境的变化过程及效能短板 3 、 更多产品特性 Zadig 产品特性:开源 Zadig 的一切 云原生 CI/CD 、产研高效工程化协作、快速应对业务迭代 Zadig 产品特性:发布中心0 码力 | 52 页 | 22.95 MB | 1 年前3 Zadig 产品使用手册生产环境发布——蓝绿发布 ,执行工作流更新生产环境 步骤包含:部署蓝环境 -> 审批 -> 切换生产版本 Sprint 发布 需求开发 测试验证 产品规划 变更发布 生产环境发布——金丝雀发布 执行工作流更新生产环境 步骤包含:部署金丝雀 -> 随机测试 -> 审批 -> 新版本全量发布 Sprint 发布 需求开发 测试验证 产品规划 变更发布 生产环境发布——分批次灰度发布 步骤包含:灰度 20% -> 审批 -> 灰度 60% -> 审批 -> 新版本全量发布 Sprint 发布 需求开发 测试验证 产品规划 变更发布 生产环境发布—— Istio 发布, 执行工作流更新生产环境 步骤包含:部署新版本 20% 流量导入新版本 -> 审批 -> 100% 流量导入新版本 Sprint 发布 需求开发 测试验证 产品规划 Sprint 发布 发布 变更发布 需求开发 测试验证 产品规划 uat 发布——版本管理 生成版本信息,包括:服务镜像,服务配置,服务启动顺序等等 业务负责人 / 产品经理 —— 项目整体运行状 况 项目负责人——分析项目各个环境的变化过程及效能短板 3 、 更多产品特性 Zadig 产品特性:开源 Zadig 的一切 云原生 CI/CD 、产研高效工程化协作、快速应对业务迭代 Zadig 产品特性:发布中心0 码力 | 52 页 | 22.95 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 08 CUDA 开启的 GPU 编程生成两份源码级不同的 代码。 __CUDA_ARCH__ 是个版本号 • 其实 __CUDA_ARCH__ 是一个整数,表 示当前编译所针对的 GPU 的架构版本号 是多少。这里是 520 表示版本号是 5.2.0 ,最后一位始终是 0 不用管,我们 通常简称他的版本号为 52 就行了。 • 这个版本号是编译时指定的版本,不是运 行时检测到的版本。编译器默认就是最老 的 52 ,能兼容所有 GTX900 CMake 设置架构版本号 • 可以用 CMAKE_CUDA_ARCHITECTURES 这个变量 ,设置要针对哪个架构生成 GPU 指令码。 • 小彭老师的显卡是 RTX2080 ,他的版本号是 75 ,因 此最适合他用的指令码版本是 75 。 • 如果不指定,编译器默认的版本号是 52 ,他是针对 GTX900 系列显卡的。 • 不过英伟达的架构版本都是向前兼容的,即版本号为 75 的 RTX2080 也可以运行版本号为 52 的指令码,虽然 不够优化,但是至少能用。也就是要求:编译期指定的 版本 ≤ 运行时显卡的版本。 CMAKE_CUDA_ARCHITECTURES 会自动转换成 --gpu-code 等编 译 flag 版本号不要太新了 • 比如这里设置了 RTX3000 系列的架构版 本号 86 ,在 RTX2080 上就运行不出结 果。 • 最坑的是他不会报错!也不输出任何东西0 码力 | 142 页 | 13.52 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 08 CUDA 开启的 GPU 编程生成两份源码级不同的 代码。 __CUDA_ARCH__ 是个版本号 • 其实 __CUDA_ARCH__ 是一个整数,表 示当前编译所针对的 GPU 的架构版本号 是多少。这里是 520 表示版本号是 5.2.0 ,最后一位始终是 0 不用管,我们 通常简称他的版本号为 52 就行了。 • 这个版本号是编译时指定的版本,不是运 行时检测到的版本。编译器默认就是最老 的 52 ,能兼容所有 GTX900 CMake 设置架构版本号 • 可以用 CMAKE_CUDA_ARCHITECTURES 这个变量 ,设置要针对哪个架构生成 GPU 指令码。 • 小彭老师的显卡是 RTX2080 ,他的版本号是 75 ,因 此最适合他用的指令码版本是 75 。 • 如果不指定,编译器默认的版本号是 52 ,他是针对 GTX900 系列显卡的。 • 不过英伟达的架构版本都是向前兼容的,即版本号为 75 的 RTX2080 也可以运行版本号为 52 的指令码,虽然 不够优化,但是至少能用。也就是要求:编译期指定的 版本 ≤ 运行时显卡的版本。 CMAKE_CUDA_ARCHITECTURES 会自动转换成 --gpu-code 等编 译 flag 版本号不要太新了 • 比如这里设置了 RTX3000 系列的架构版 本号 86 ,在 RTX2080 上就运行不出结 果。 • 最坑的是他不会报错!也不输出任何东西0 码力 | 142 页 | 13.52 MB | 1 年前3
共 30 条
- 1
- 2
- 3













