分布式编译系统的搭建

Ubuntu下Distcc环境部署 1、原理:Distcc编译模式是1客户端->多服务端;客户端将编译请求分发给多个服务端,服务端将编译结果返回客户端,提高编译速度。 2、环境部署步骤: 客户端: 1) apt-get install distcc 2) vim /etc/default/distcc 进行如下配置 STARTDISTCC="true" #开机自启动 ALLOWENDETS="127.0.0.1 192.168.0.0/24" #允许的网段 ... 阅读详情
  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者:dan
  • 文章来源:GreatSQL社区原创

由于MySQL 源码编译单机耗费的时间过于长,最近MySQL 变成8.0.27 以后编译时间明显更耗时了,并且办公室内有多余的空闲机器。

使用分布式编译,可以在不改变现有环境的情况下,提高编译效率。

目前比较常用的编译工具有2个 distcc 与 icecream , 本文使用distcc 进行部署。

部署distcc

分为两个部分一个是服务端,一个是客户端

程序分别是distccd 和 distcc

服务端

也是我们空余的设备上

可以基于Docker部署镜像版本最好和客户端一致,编译器版本需求GCC 或者 Clang 一致

moyu22:/opt/distcc$ cat Dockerfile 
FROM ubuntu:20.04

RUN apt update && \
apt install  -y net-tools distcc gcc g++ clang-12 && \
apt clean && \
echo "#!/bin/bash \n distccd --daemon --no-detach --no-detach --user nobody --allow 0.0.0.0/0 --log-stderr --stats \${OPT}" > ./entrypoint.sh && \
chmod +x ./entrypoint.sh

# Run the generated shell script.
ENTRYPOINT ["./entrypoint.sh"]

打包一个distccd 的镜像

docker build -f Dockerfile -t distcc .

Docker启动

docker run -t -d -net=host distccd 

也可以使用docker-compose.yml启动

version: '3'

services:
    distcc:
      image: "chestnutsj/distcc:latest"
      hostname: distcc
      container_name: distcc
      privileged: true
      ports:
        - 3632:3632
        - 3633:3633
docker-compose -f docker-compoe.yml  up -d 

默认情况下,将运行所有人都可以运行访问,如果有需要认证可以在环境变量 OPT 中添加,或者修改默认的端口

客户端

配置

本地环境 20.04 (),需要编译项目的机器上,安装distcc

moyu20: apt install -y distcc

在配置中添加服务器下的 /etc/distcc/hosts ,也可以在 $HOME/.distcc/hosts , 域名可以按照服务器优先级添加

hostname[/LIMIT]
192.168.1.102/32

默认的limit 数量是 4 如果需要更高的效率可以使用更高的数值用

root@dev:/# distcc -j
48
默认limit为 hostname * 4

单个文件可以使用

distcc g++ t1.cpp

以MySQL源码为例

cmake mysql_source \
-DBUILD_TESTING=OFF -DUSE_GTAGS=OFF -DUSE_CTAGS=OFF \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DFEATURE_SET=community \
-DWITH_INNODB_MEMCACHED=ON -DWITH_ZLIB=bundled -DWITH_LIBEVENT=bundled -DWITH_ZSTD=bundled \
-DENABLE_DOWNLOADS=ON \
-DDOWNLOAD_BOOST=1 \
..

添加指定的编译

 -DCMAKE_C_COMPILER_LAUNCHER=distcc
 -DCMAKE_CXX_COMPILER_LAUNCHER=distcc
编译项目
make -j 32 

可以明显降低编译时间

监控

编译期间可以查看distcc 使用情况

distccmon-text 1 间隔时间 1 秒

Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

社区2022年度勋章获奖名单: https://greatsql.cn/thread-184-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

Ubuntu20.04配置distcc(联合编译/分布式编译) 目录安装distcc环境变量设置设置自启动设置编译参数监控编译情况(distccmon-gnome) 安装distcc sudo apt update sudo apt install ccache sudo apt install distcc sudo apt install distccmon-gnome #distccmon-gnome为监控应用 环境变量设置 vim /etc/profile 添加如下: export PATH=/usr/lib/distcc:$PATH export DIST 阅读详情

相关推荐

给全志T113开发板移植OpenHarmony 3.0,我踩了这些坑(附完整配置流程)

本文详细介绍了在全志T113开发板上移植OpenHarmony 3.0系统的完整流程,包括开发环境准备、内核适配、编译系统改造、系统组件集成及性能优化等关键步骤。文章特别针对移植过程中常见的内核配置缺失、uImage生成失败等问题提供了实用解决方案,帮助开发者高效完成鸿蒙系统移植工作。

weixin_30565199的博客 346

linux下使用分布式编译Electron

分布式编译介绍 分布式编译用于解决编译较大工程时速度忙的问题,充分利用网上上闲置的主机,加快编译时间。 比如Electron,动辄几十个G代码,在本机编译一次需要20几个小时。 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽

anonymous的博客 2356

从零到一:手把手教你用iTop-RK3588开发板移植OpenHarmony 4.0标准系统(附完整源码获取与编译指南)

本文详细介绍了如何在iTop-RK3588开发板上移植OpenHarmony 4.0标准系统的全过程,包括环境搭建、源码获取、内核定制、系统编译与优化、烧录调试等关键步骤。特别针对RK3588芯片组的适配难点提供了解决方案,帮助开发者快速掌握全栈式开发技能,实现从零到一的系统移植。

weixin_30632089的博客 147

Ubuntu分布式编译distcc配置

Ubuntu分布式编译distcc配置Distcc分布式编译配置Server端Client端测试 Distcc分布式编译配置 在Ubuntu上,可以使用distcc,搭建分布式编译环境。 简单来说就是:让多台电脑,一起进行编译,从而加快编译速度。 以下为Server端(Server端,帮助编译的其他PC),及Client端(客户端,就是自己的PC)。 Server端 这里假定有2个Serve...

林多 4286

C++项目的分布式编译系统

工具团队基于前期反馈的诉求,规划了分布式编译系统的产品,当前已有初步形态,目前的解决思路是使用多台机器参与构建,通过增加算力的方式来改善构建时长,同时期望在推广过程中逐步优化。当前业务使用C++开发,代码量在百万级别,门禁构建、版本构建耗时长且不稳定,在迭代转测试前,经常出现开发人员提交的代码在排队等待门禁构建结束的现象,非常影响交付效率。我们产品作为产品线的老大难,当然义不容辞,参与试用,和工具团队的产品一同成长。对于使用C++语言开发的项目来说,构建分为门禁构建和版本构建。,承接编译任务的具体操作。

流水账 1177

icecream:带有中央调度程序的分布式编译器可共享构建负载

是由SUSE基于distcc创建的。 像distcc一样, 从构建中获取编译作业,并将其分配到允许并行构建的远程计算机之间。 但是与distcc不同, 使用中央服务器动态地将编译作业调度到最快的免费服务器。 这种优势主要为共享计算机带来了回报,如果您是x机上的唯一用户,则可以完全控制它们。 目录 -Werror构建仅在使用冰淇淋时失败 clang 4.0尝试读取/ proc / cpuinfo并失败 支持平台 在异构环境中使用冰淇淋 使用冰淇淋进行交叉编译 创建交叉编译器包 使用冰淇淋对嵌入式目标进行交叉编译 使用冰淇淋在同一环境中交叉编译多个目标 如何将冰淇淋与ccache结合 调试输出 一些数字 冰淇淋的最佳环境是什么 有关配置的一些建议 Icecream(防火墙)的网络设置 我使用distcc,为什么要更改? gentoo冰淇淋 错误追踪器 资料库 邮件列表 安装 我们建议您尽

Linux分布式编译环境搭建介绍

1.Distcc介绍 distcc是一个非常快且免费的分布式C/C++编译工具,distcc分为四个部分: distcc:distcc是一个类似客户端的程序,不过它的角色是个编译器,可以让C/C++代码在很多网络服务器上进行分布式的编译,就像本地编译一样,当然比本地编译快很多。 distccd:distccd是一个守护进程,每个网络服务器上都需要安装这个守护进程,用来处理dist

douhuasinandu的专栏 9814

分布式编译icecream源码

icecream也是一款分布式编译工具,其有至少一个调度服务器,多个客户端组成,可以使用网络上闲置的主机,加速大工程的编译。

构建大型项目的秘密武器:Icecream集群部署最佳实践

Icecream是一款强大的分布式编译系统,通过中央调度器共享构建负载,能显著提升大型项目的编译速度。本文将详细介绍如何搭建和优化Icecream集群,让你的开发效率飙升🚀 ## 一、Icecream集群核心组件解析 Icecream集群由三大核心组件构成,协同工作实现分布式编译: ### 1.1 调度器(Scheduler) 调度器是整个集群的大脑,负责分发编译任务。通过TCP/8765

gitblog_01409的博客 927

Dockerfiles:Gentoo上用于distccd服务器的Dockerfile

Dockerfiles:Gentoo上用于distccd服务器的Dockerfile

ubuntu16.04搭建伪分布式文档

ubuntu16.04搭建伪分布式文档

10个你必须知道的Icecream使用技巧:从入门到精通

Icecream是一款强大的分布式编译系统,专为C和C++项目设计,通过中央调度器分配编译任务,显著提升构建效率。无论是新手还是有经验的开发者,掌握以下10个实用技巧都能让你充分发挥Icecream的潜力,让编译速度飞起来!🚀 ## 1. 快速搭建Icecream环境:3步开启分布式编译 要开始使用Icecream,只需完成以下基础配置: - **启动调度器**:在中心机器运行 `icecc

gitblog_00981的博客 458

YOLOv8改进002:添加小目标检测头(小目标检测大量涨点)

YOLOv8 目标检测算法改进之添加小目标检测头,亲测在小目标检测的数据集上有大幅度的涨点效果(mAP直接涨了 0.04 左右)。

m0_46496775的博客 9878

IceCream 开源项目指南

IceCream 是一个开源社区驱动的项目,专注于提供高效、可扩展且易于使用的工具链和服务框架。它旨在简化开发者在构建、部署和管理分布式系统过程中的复杂度,通过提供一整套全面的开发工具和丰富的API集合,使得开发者能够更加聚焦于业务逻辑而无需过度关注底层技术细节。 项目主页位于 https://github.com/icecc/icecream.git,其中包含了详细的开发文档、示例代码以及社区

gitblog_00056的博客 397

手把手教你为智能手表DIY一个离线导航:LVGL + SD卡地图实战

本文详细介绍了如何为智能手表DIY一个离线导航系统,结合LVGL图形库和SD卡地图数据。从硬件选型、地图数据处理到LVGL地图引擎实现,提供了完整的实战指南,特别适合户外运动爱好者和嵌入式开发者。文章还分享了功耗优化、性能提升等实用技巧,帮助读者打造高效的离线导航解决方案。

weixin_42570484的博客 206

Docker 与容器技术的未来:从 OCI 标准到 eBPF 的演进

OCI 的核心目标是创建一个开放的、厂商中立的容器技术标准。这意味着,只要一个容器镜像符合 OCI 镜像格式规范,它就可以在任何符合 OCI 运行时规范的容器运行时上运行。eBPF 是一种革命性的技术,它允许在 Linux 内核中安全地运行沙盒程序,而无需修改内核源代码或加载内核模块。这些程序可以注册到内核中的各种事件点(如网络包到达、系统调用、函数调用/返回),并在事件发生时执行自定义逻辑。核心思想是:在不将数据复制到用户空间的情况下,程序可以直接在内核中处理数据,极大地提高了效率和性能。

专栏 1383

distcc:分布式C/C++编译系统

distcc是一个开源的分布式编译系统,主要用于加速C、C++和Objective-C代码的编译过程。该项目的主要编程语言包括C、Python和Shell。distcc通过将编译任务分布到多个机器上,显著提高了编译速度,特别适用于大型项目的构建。 ## 项目核心功能 distcc的核心功能是将编译任务分布到网络中的多台机器上,从而实现并行编译。它不需要所有机器共享文件系统、同步时钟或安装相同的...

gitblog_00244的博客 652

解放双手,摆脱自建库的繁琐,立创EDA元件库转cadence原理图封装库实战技巧

解放双手,摆脱自建库的繁琐,立创EDA元件库转cadence原理图封装库实战技巧

u012790770的博客 3616

Icecream分布式编译系统详解

Icecream是一款由SUSE开发的分布式编译系统,专为C和C++项目设计。它基于distcc的思想和代码,但采用了更智能的调度机制。与传统的distcc不同,Icecream引入了中央调度服务器,能够动态地将编译任务分配给最快可用的远程机器,显著提高了编译效率。 ## 核心组件 ### 1. 调度器(icecc-scheduler) 调度器是Icecream系统的核心,负责: - 接收客户

gitblog_00863的博客 615

MLNX_OFED 5.4-3.7.5.0 驱动安装:银河麒麟V10SP2 ARM 内核升级后编译避坑 3 步

本文详细介绍了在银河麒麟V10SP2 ARM环境下安装MLNX_OFED 5.4-3.7.5.0驱动的完整流程,包括内核升级后的驱动兼容性挑战、编译环境准备、分步编译与安装流程以及性能优化与故障排查。特别针对国产化ARM服务器(如华为Atlas系列)提供了实用的解决方案和常见问题处理建议,帮助用户顺利完成mlnx网卡驱动的安装与配置。

weixin_29184075的博客 403

全网最新首发纯干货:微信数据库表结构完整分析(一)

找不到微信DB表结构说明?找不到具体字段的解释?来这里,全网最完整版!!!

killghosts的博客 4927

distcc - 分布式C/C++编译系统:加速你的开发流程

(distcc)[https://github.com/distcc/distcc] 是一个免费的分布式C/C++编译系统,由Martin Pool创建并维护。该项目旨在利用网络中多台机器的计算资源,提高代码编译的速度和效率,尤其适合大规模项目或团队协作开发场景。 通过distcc,你可以将编译任务分布到多个不同的机器上,无论是同一操作系统还是跨平台,只要拥有兼容的二进制格式或交叉编译器,都能协...

gitblog_00011的博客 1046

YOLOv11改进 | 模型知识蒸馏篇 | 利用模型蒸馏改进YOLOv11进行无损涨点 | 在线蒸馏 (附代码 + 完整文件 + 解析教程)

这篇文章给大家带来的最新改进是模型的蒸馏,利用教师模型指导学生模型从而进行模型的涨点,本文的内容不仅可以用于论文中,在目前的绝大多数的工作中模型蒸馏是一项非常重要的技术,所以大家可以仔细学习一下本文的内容,本文从YOLOv11的项目文件为例,进行详细的修改教程,文章内包括完整的修改教程,针对小白我出了视频修改教程,如果你还不会我提供了修改后的文件大家直接运行即可,所以说不用担心不会适用!模型蒸馏真正的无损涨点,蒸馏你只看这一篇文章就足够了,本文内容为在线蒸馏教程,之前的文章为离线蒸馏!

Snu77的博客 2667

CloudBuild分布式编译系统

④运行编译节点:bazel run //enterprise/server/cmd/executor:executor。2.编译:bazel build //enterprise/server/cmd/executor:executor。3. 编译:bazel build //enterprise/server:server。③启动服务器:bazel run //enterprise/server:server。3.运行:bazel run //enterprise/server:server。

lllXYlll的博客 1285

STM32F103待机模式原理与低功耗实战指南

待机模式是嵌入式系统实现超低功耗的核心机制,其本质是通过切断内核域电源(VDD/VDDA)实现微安级静态电流,区别于睡眠/停止模式的状态保持特性。原理上依赖电源域隔离、WKUP引脚事件唤醒与RTC备份域协同,技术价值在于支撑电池供电设备长达数年续航。典型应用场景包括物联网传感器节点、智能电表、便携医疗设备等对功耗极度敏感的终端。工程落地需严格遵循GPIO模拟输入配置、唤醒标志清除、备份域解锁等关键步骤,避免因漏电或误唤醒导致实测电流超标。本文以STM32F103为例,深入解析待机模式的硬件基础与HAL库实现

weixin_32999557的博客 66

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: MySQL 移动数据目录后启动失败
下一篇: 使用TPC-H 进行GreatSQL并行查询测试
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值