zhililab / Znotes

个人随记,个人规划
0 stars 0 forks source link

Clion 分布式编译 #33

Open zhililab opened 1 year ago

zhililab commented 1 year ago

https://thinkingeek.com/2021/12/31/using-distcc-in-a-cluster/

一、配置指南

distccmon-text 1 / distccd 开机启动 https://www.cnblogs.com/tianyajuanke/archive/2013/03/11/2953787.html

二、Demo

vdebug

① 常规编译: image image

② distcc: image image

调试: distccmon-text 1 image

三、技术分享

  1. 简介:介绍 distcc 分布式编译的概念、优点和适用场景。
  2. 环境搭建:讲解如何在本地和远程服务器上搭建 distcc 环境,并检查版本一致性。
  3. 配置管理:介绍 distcc 配置文件的结构和各项参数的作用,例如 hosts、nice、jobs 等等。
  4. 编译流程分析:解释 distcc 的编译流程,以及 localhost 和远程服务器分别负责的工作。
  5. 优化策略:介绍优化编译速度的各种策略,例如 load balancing、compression、preprocessor caching、caching directory 等等。
  6. 遇到的问题及解决方法:分享一些实际项目中使用 distcc 遇到的问题,并讲解如何进行调试和解决。
  7. 监控和日志:讲解如何监控 distcc 的运行状态和性能,并如何记录运行日志和错误日志。
  8. 结语:总结 distcc 的优点、适用场景和实践经验,鼓励在项目中使用和推广 distcc。
zhililab commented 1 year ago

distcc 配置

yum install distcc image

yum install distcc-server image

红色部分是需要注意的,distcc默认使用的端口是3632,而distccd默认的端口是1234,这个搞得我查了很久才找到原因。 image


【配置distcc编译环境】http://blog.chinaunix.net/uid-20553497-id-3214404.html#:~:text=%E5%85%B6%E4%B8%ADdistccd%E6%98%AF%E6%9C%8D%E5%8A%A1%E7%AB%AF%EF%BC%8C%E9%9C%80%E8%A6%81%E5%AE%89%E8%A3%85%E5%9C%A8%E8%BF%9C%E7%A8%8B%E5%8D%8F%E5%8A%A9%E7%BC%96%E8%AF%91%E7%9A%84%E5%A4%9A%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%EF%BC%8C%E8%80%8Cdistcc%E6%98%AF%E4%B8%80%E4%B8%AA%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%8C%E9%9C%80%E8%A6%81%E5%AE%89%E8%A3%85%E5%9C%A8%E5%88%86%E5%8F%91%E7%BC%96%E8%AF%91%E4%BB%BB%E5%8A%A1%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E3%80%82%20centos%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E5%9C%A8,%E4%B8%8A%E4%B8%8B%E8%BD%BD2%E4%B8%AARPM%E5%8C%85%EF%BC%9A%20distcc-2.18.3-2.el5.rf.x86_64.rpm%20distcc-server-2.18.3-2.el5.rf.x86_64.rpm 【使用distcc搭建分布式编译环境-天海一线-ChinaUnix博客】http://m.blog.chinaunix.net/uid-22315114-id-99967.html


cluster 配置

clush是一个在集群上并行执行命令并收集结果的工具。它可以交互地执行命令,也可以在shell脚本和其他应用程序中使用。要使用clush与slurm一起工作,你需要配置一个groups.conf文件,指定slurm的节点列表。你可以从这个网址下载一个示例文件:https://docs.ycrc.yale.edu/clusters-at-yale/guides/clustershell/ 。然后你就可以使用clush命令在slurm分配的节点上运行命令了。例如,clush -w @slurm -b hostname会在所有分配给你的节点上显示主机名。

https://docs.ycrc.yale.edu/clusters-at-yale/guides/clustershell/ https://clustershell.readthedocs.io/en/latest/config.html#slurm-group-bindings

zhililab commented 1 year ago

配置 clion

image


image

配置 external tools image

zhililab commented 1 year ago

总结报告

① 单个 vsyn 编译 make releae -j 24

image

image

② srun -p hpc make release -j 24

image

1.配置 toolchain

image

2.配置 extern tool image

zhililab commented 1 year ago

srun distcc make release -j24


export CCACHE_PREFIX=distcc export CCACHE_DIR=/path/to/ccache/dir export CC="ccache gcc" export CXX="ccache g++"

image

srun -N 4 -n 16 -p hpc --ntasks-per-node=4 --export=CCACHE_PREFIX,distcc --export=CCACHE_DIR,/path/to/ccache/dir /path/to/compile/script

zhililab commented 1 year ago

正常单次编译:4m21s distcc 编译:

zhililab commented 1 year ago

报错 connection refused image

zhililab commented 1 year ago

报错 connection refused image

image

zhililab commented 1 year ago

报错 connection refused image

image

zhililab commented 1 year ago

image

zhililab commented 1 year ago

image

zhililab commented 1 year ago

分布式机器开启守护进程

问题描述

远程调度机,distccd 进程无法常驻,导致机器编译人物分发失败

解决方法

image

https://blog.csdn.net/weiwangchao_/article/details/12275923

zhililab commented 1 year ago

distccd 允许主机列表配置

问题描述

make release -j 24 失败 image

解决方法1

1.尝试配置 /etc/distcc/clients.allow 配置方法: image

2.编译测试: ①编译中 image ②编译结束(报错) image

zhililab commented 1 year ago

vdebug 编译报错

image

添加下面命令 -> 参考链接 参考链接2

cmake -DCMAKE_C_COMPILER=/usr/lib/distcc/cc -DCMAKE_CXX_COMPILER=/usr/lib/distcc/g++ ../

继续编译 image

zhililab commented 1 year ago

✔️ 客户端开启 ditsccd 服务

image

distccd --daemon --allow 10.10.61.22 --log-file /var/log/distccd.log --log-level debug

image

zhililab commented 1 year ago

testcase 1 normal mode vs distcc mode

image

image