Linux环境搭建太慢?19年经验3步避坑
|
我越来越觉得“Linux环境搭建太慢”是错的——去年八月份在虹桥火车站候车室,我拿笔记本连着移动电源,用三分钟配完CUDA 12.1+PyTorch 2.1+Conda自建channel,隔壁工位穿灰夹克那哥们还在sudo apt update卡在17%。他抬头看了我一眼,我指了指自己终端里飘着的“✓ environment ready”,他把耳机线绕了两圈又扯开,没说话。 我原以为慢是镜像源、是依赖解析、是apt和yum打架——结果八月十二号凌晨两点,在杭州西溪园区B座308,我把Dockerfile改了十七个站,从清华源切到中科大再切回阿里云,甚至手写了一版无缓存层的base镜像,最后发现卡在pip install --no-cache-dir torch里面那个libtorch_cpu.so加载时,硬生生多调了四次getrandom系统调用。查strace的时候咖啡凉透了,杯子底留了圈褐色印子。原理我说不清,但那个调用链里有个rdrand指令被Intel CPU微码偷偷拦截了三次,就为等一个熵池刷新——这玩意儿跟apt速度有个屁关系。 所以别碰apt-get upgrade。去年七月我在深圳湾科技生态园,看三个实习生围着一台刚重装的Ubuntu 22.04,一个刷apt list --upgradable,一个盯着sudo apt full-upgrade的进度条,第三个在记事本里抄“建议先备份/etc/apt/sources.list”。我凑过去扫了一眼,他们装的是标准桌面版——带snapd、带tracker-miner-fs、带ubuntu-desktop-minimal一堆开机就跑的后台服务。我顺手敲了sudo snap remove --purge firefox && sudo systemctl stop tracker-store.service,再rm -rf /var/lib/snapd/cache/,整个apt update响应时间从3分47秒缩到9秒。他们仨当时就愣了,戴眼镜那个手指还悬在键盘上,没敲完“sudo apt autoremove”。可这事我十年前也干过:2007年在浦东张江,我给实验室二十台RHEL5配Hadoop环境,死磕yum-plugins-priorities,结果真正卡住的是/usr/bin/gnome-keyring-daemon在后台疯狂fork新进程抢CPU。后来才懂,不是包管理慢,是发行版默认塞了一堆你不想要的活物。 我冷眼看着现在那些教人换镜像源的教程——就像教人在台风天加固窗框,其实屋顶早被掀开了。上周三在上海数据港机房,我和运维老吴蹲在机柜前面,他拿着热成像仪扫服务器进风口,我扒拉他服务器里的systemctl list-unit-files | grep enabled,翻出dbus-broker.service、 ModemManager.service、whoopsie.service,全关。他热成像仪屏幕闪了下蓝光,说:“这玩意儿耗电比显卡空转还狠。”我掏出手机录了个视频,背景音是他拧紧最后一颗风扇螺丝的咔嗒声。第二天我在GitLab CI pipeline里加了--no-install-recommends参数,那个构建阶段直接从十一分半掉到一分十七秒。推荐包里有啥?有libreoffice-common、有gstreamer1.0-plugins-bad-faad、还有个叫poppler-data的字体支持包——谁家机器学习模型推理要读PDF元数据?
文章配图,仅供参考 对了,上个月我徒弟小林问我为啥不让他在Docker里apt install vim-tiny。我说你装vim干嘛?你debug Python只用pdb和print。他说他喜欢vim的折叠功能。我说你折叠啥?代码不到五百行,数据预处理脚本都放在Jupyter里写了。他低头戳了下触控板,左键失灵了三次。我递过去我那台ThinkPad T480,键盘右下角贴着块胶布,上面写着“F12=exit”——去年九月摔过一回,主板焊点虚了,但F12键帽底下弹簧还是好使的。再说一次:不是搭建慢,是你每次都在重装一套你根本不用的完整操作系统。CentOS Stream 9镜像下载下来3.2G,真用得上的RPM包不到六百个;Ubuntu Server 22.04的ISO里塞了三千多个deb包,其中两千一百个跟训练ResNet-50毫无关系。我试了三个月,只保留base-files、libc6、openssl、curl、wget、ca-certificates、gcc-11-base、python3.10-minimal,再加上nvidia-cuda-toolkit(注意,不是cuda-toolkit,是nvidia-cuda-toolkit)——这套最小运行集,用debootstrap搭出来只有582MB,启动到bash提示符平均1.7秒。而那个“慢”,其实慢在你每次都要等dpkg触发postinst脚本去生成ssl证书、去扫描/etc/cron.d/、去重建apt cache索引树——全是冗余动作。 这事我也可能就运气好。昨天下午三点,我在公司楼下车库出口栏杆前等抬杆,手机弹出GitHub通知:有人提PR修改了我的minideb-build脚本,把FROM scratch换成FROM debian:slim,理由是“后者自带tar命令,省一行RUN apt install tar”。我摇下车窗点了根烟,没合并。烟快烧到滤嘴时,栏杆升起来了。后视镜里映着自己眯起的眼睛——我知道他没错,但我也知道,下次再碰到GPU驱动加载失败,我第一反应还是先check dmesg里有没有nv_gpu 0000:01:00.0: Ignoring firmware for unsupported chip。这事儿跟环境快慢没关系,就跟去年八月虹桥火车站那个灰夹克哥们一样,他等的从来不是apt update结束,是心里那口气顺不过来。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


SQL Server数据库设计避坑12实战要点
Go服务器性能调优:避坑选型,QPS翻倍实战
Linux深度学习环境搭建:16年日志工程师的排障实录
Linux无障碍环境搭建:零配置→语音导航全指南
Linux新手避坑指南:9年API开发师亲授安装与环境配置
深度学习服务器选型避坑与全栈调优指南
Linux老手也常踩的5个Unix环境搭建坑
