如何将旧PC与Ubuntu 22.04主力PC连接,合并二者CPU/RAM算力以充分利用资源?
如何将旧PC与Ubuntu 22.04主力PC连接,合并二者CPU/RAM算力以充分利用资源?
嘿,这个想法太赞了——把吃灰的旧PC算力薅过来给主力机用,完全是物尽其用的操作!既然两台都打算用Ubuntu(或者灵活调整系统),下面给你几个社区里验证过的靠谱方案,按需选就行:
一、分布式计算框架(针对特定并行任务)
如果你平时有明确的算力需求,比如跑数据处理、科学计算、编译大型项目这类支持并行的任务,那MPICH或者OpenMPI绝对是首选。这俩都是成熟的分布式并行计算工具,能把任务拆分到两台机器的CPU和RAM上协同运行:
- 先在两台机器上装同一版本的OpenMPI:
sudo apt install openmpi-bin openmpi-common - 打通两台机器的SSH免密登录(避免每次输入密码),然后就能用
mpiexec命令指定两台节点来跑任务,比如跑并行程序时用mpiexec -n 总进程数 -hosts 主力机IP,旧PCIP ./你的程序,就能让两台机器一起出力。 - 注意:这个方案是针对特定并行任务的,不是让你日常浏览网页、办公时自动分流算力,适合有明确重型任务的场景。
二、用distcc做分布式编译(代码党专属福利)
如果你经常要编译代码,distcc绝对是福音!它能把编译任务拆分分发到旧PC上,让旧PC的CPU帮忙干活,主力机只负责汇总结果,能大幅缩短编译时间:
- 两台Ubuntu机器都装
distcc:sudo apt install distcc - 在旧PC上修改
/etc/default/distcc,把ALLOWED_NETWORKS改成主力机的IP或者所在网段(比如192.168.1.0/24),然后重启distcc服务:sudo systemctl restart distcc - 在主力机上设置环境变量:
export DISTCC_HOSTS="localhost 旧PC的IP",之后编译时用make -j$(distcc -j),就能自动调用旧PC的CPU参与编译了。
三、远程节点+资源共享(轻量复用旧机资源)
如果只是想偶尔用旧PC的资源跑点后台任务,或者统一操作两台机器的资源,这个方案更简单:
- 给旧PC开SSH服务,主力机通过
ssh 旧PC用户名@旧PCIP直接登录操作,用screen或者tmux在旧PC后台跑任务,主力机随时能连接上去查看进度,相当于把旧PC当“远程算力外挂”。 - 还可以用NFS把旧PC的硬盘挂载到主力机上,共享存储的同时,也能在主力机上启动旧PC上的程序(不过这时候程序还是跑在旧PC上,只是操作在主力机上)。
四、KVM虚拟化直通(深度复用硬件)
要是你想让主力机直接调用旧PC的硬件资源(比如旧PC的独立显卡、多核心CPU),可以把旧PC做成KVM宿主机,然后在主力机上通过SPICE或者远程桌面连接到旧PC的虚拟机,甚至能把旧PC的硬件直通给虚拟机用,让主力机直接操控这些硬件。不过这个配置稍微复杂,需要两台机器的BIOS开启虚拟化,适合动手能力强的朋友。
最后提几个小提醒:
- 两台机器尽量用有线连接,无线的延迟和带宽会拖慢算力协同的效率;
- 如果旧PC是十年以上的老机器,CPU架构太老的话,可能提升有限,甚至会因为旧机速度慢拖慢整体任务(比如编译时主力机要等旧机完成任务);
- 不用特意换系统,Ubuntu完全支持上面所有方案,没必要折腾其他系统。
备注:内容来源于stack exchange,提问作者cytsunny
相关产品推荐
相关产品推荐

