这个问题需要放在一上来就被解释清楚,尤其当你发现这个 setup 的性价比其实非常低。然而这么设计自然有它存在的意义。首先,这和我的工作性质有关。我的日常开发同时涉及后端、前端和设计。尤其是我的后端围绕着 Ruby 展开。Ruby 的 native extensions 在 Windows 上确实有时兼容性上有一些问题,主要是我不想太折腾。使用一个 POSIX 兼容的操作系统是非常必要的。然而涉及前端的用户界面设计时,我还需要用到 Illustrator、Photoshop、Sketch 等一些软件。哪怕不使用 Sketch,剩下的软件也没有 Linux 的兼容版本。这使得 macOS 是我能避免频繁切换操作系统的唯一选择。
在组建这个工作站系统的一开始,我希望围绕一款苹果的台式机来开始。苹果目前仍然在销售的台式机有 Mac Mini、Mac Pro 和 iMac,其中 iMac 带一块 27 寸的 5K 屏幕。但是 Mac Mini 和 iMac 本质上使用的仍然是移动级别的 CPU。而 Mac Pro 由于长久没有更新,目前的购买选项性价实在太差,并且 Mac Pro 的风道虽然设计非常合理,但是很多使用经验表明,数个月后当灰尘覆盖底部后风道会收到极严重的影响,故不作考虑。
中间是 34 英寸 21:9 带鱼屏幕,用来做视频剪辑等素材复杂的工作时能很好胜任。写代码时也能同时照顾多个文件。右侧 24 英寸 16:9 屏幕竖放,用于看适合竖着看的内容,比如开发文档、论文,不看的时候把聊天窗口丢在右侧避免对主要工作视线的干扰。上方 23 英寸 16:9 屏幕,用于连接 PC,用于偶尔需要看的 Visual Studio 上的项目,或者玩一些 PC 独占的游戏等。
这里我使用了 Synergy 软件,来给两台电脑共享键盘和鼠标。由于 Synergy 跨平台支持,只要简单配置屏幕的位置,就能提供鼠标、键盘和剪贴板的双机共享了。
当两块高分辨率的屏幕插入 MacBook Pro 后,你能看到显著的性能下滑,发热非常明显。如果试图利用 21:9 屏幕的优势玩一些 macOS 系统兼容的游戏比如 欧洲卡车模拟器 2 的时候哪怕在全低画质下也不能流畅运行。如果跑视频渲染、压片等操作时,同样的性能问题明显。相反在一些 CPU 密集的应用场景下,比如编译程序的时候,反而没有太大的问题。而内存上,16GB 也基本够使用,虽然如果是 32GB 或者 64GB 的配置的话,性能上更游刃有余一些。
综上我们可以发现,主要问题出在 MacBook Pro 的显卡上。那么想到的方案自然就是外置显卡。不过,凡是做过 expressCard 外置显卡的人都知道,对显卡性能的损失是非常严重的。这是因为 expressCard 虽然是总线接口,但是其带宽只有 PCI-E x1。然而 MacBook Pro 所提供的雷电接口,在 Thunderbolt 2.0 协议下就有 20Gbps 的带宽,这相当于 PCI-E x4 的带宽,哪怕使用 GTX 970 这样的显卡,也只有 10% 的性能损失。
我使用的外置 PCI-E 盒子是 AKiTiO 的产品。外包装上明显标注,不支持显卡。这是因为显卡需要额外的供电,而盒子只能提供 60W 的供电,远小于显卡的需求,直接插上用可能会把显卡烧坏。所以我们将显卡盒外壳拆开后,单独接一个 400W 电源到显卡的 8pin 上。只不过,只这么操作,电源并不会认为自己开机了,所以不会供电。我们还需要用回形针把电源 24pin 的 13 引脚短接到地线,来模拟一个开机的情况。
在我用了一天后,我发现 Dell 曾经为他们的迷你电脑推出过一款电源,其输出正是 12V 的 8pin,并且功率高达 220W,这是 Dell DA-2 电源适配器。所以如果不想魔改电源的话,可以使用这一解决方案。更新:Dell DA-2 的电源适配器寄到后发现还是有点小问题。虽然同是 8pin 但引脚定义有区别,需要用一条 6pin + 6pin 转 8pin 的线转一下。错位插上电源后用回形针短接 remote 针脚到负极。好处就是现在电源可以自动控制开关而不用手动控制了,以及线缆干净了不少。
驱动上的话,NVIDIA 只为 Mac Pro 推出过显卡驱动,而不是 MacBook Pro。当然,操作系统层面的事情,当然我们可以魔改驱动,有一个一键安装的脚本项目在此 automate-eGPU。不过由于新的 Mac 的安全策略,你还需要 Command + R 开机进入恢复模式,在实用工具 - 终端中输入命令关闭驱动签名校验,才能正常使用,这一点这个一键脚本也会做出相应的提示。
至此,我们解决了显卡性能上的问题。
买 256GB 版本 MacBook Pro 省下来的钱就是脑袋里进的水。为了解决把笔记本变为工作站后增加的大量数据,不得不寻找外置的存储方案进行妥协。最常见的解决方案当然就是移动硬盘。但事实上,移动硬盘通过 USB 3.0 连接,经常容易发生连接不稳定的情况,从而导致一些存储意外发生,我曾因这些原因导致过数据丢失一次。直到我见到了 Transcend 的 256GB 扩容存储卡,其长度比一般卡还要短一些,插入 MacBook Pro 中能几乎贴合于卡槽,从而避免了携带和使用上的不安全。唯一麻烦的是拿出来的时候需要使用一把面包刀或者尖锐的支架才能让卡与机器分离。
虽然我们把显卡外置了,理论上机器散热没有任何压力。但实际上,Thunderbolt 2 的连接处由于非常巨大的数据交换,实际上左侧发热相对还是有点严重。考虑到,MacBook Pro 不止通过风道具有很强的散热能力,其铝合金外壳本身也被设计成其散热的一部分,我们大可通过降低外壳温度来降低整体温度。我选择了目前还只有在日本市场销售的 USB 水冷套件,为我的 MacBook Pro 做进一步降温。
更新:经查发热主要由 Thunderbolt 2 线缆中的芯片产生,因为 Thunderbolt 设计时没有考虑到带宽能被长时间满占,所以有必要可以购买贝尔金出的一款带散热片的 Thunderbolt 线缆。
关于键盘,我以前在别的地方详细说过定做的过程《一款祖传的机械键盘》,不重复赘述。在我使用的那么多的鼠标中,没有一款鼠标能比 Logitech M558 更适合 Mac 了,说实话 Apple Magic Mouse 还是省省吧,那东西就是个能挪动的触摸板。M558 从设计到重量甚至是电池,简直就是天生为 MacBook 准备的。而且,很便宜,并不是 Logitech 的高端产品。
虽然我们对整个 setup 进行了巨大的改动。但是其便携性没有遭到下降。我只需要关机后断开先开连接,就能带出门。而我的数据、执行了一半的工作流都能随身携带。续航也能维持在 8 - 9 小时的 MacBook Pro 的正常续航水平,而选择的 60% 键盘和 Logitech M558 也都很适合携带。这是单独搭建的工作站无法得到的优秀体验。
选项 | 价格(人民币元) | 备注 |
---|---|---|
MacBook Pro 15'' | 14288 | 国行 |
Transcent JetDrive Lite 256GB | 1099 | |
x86 兼容机 | 5000 | |
AOC Q3477FQ | 2399 | |
AKiTiO Thunderbolt 2 PCI-E | 1200 | 二手 |
NVIDIA GTX 970 ITX | 1700 | 二手 |
Dell DA-2 Adapter | 32 | 二手 |
ViewSonic VA2462H | 899 | |
ViewSonic VA2349S | 699 | |
乐歌 D3 显示器支架 | 199 | |
乐歌 L1 显示器支架 | 79 | |
Logitech M558 | 169 | |
客制化机械键盘 | 1290 | |
笔记本水冷套价 USBWATC2 | 583.73 | 日本 Amazon |
总计 | 29604.73 |
由于这些都是在我卧室床头搭建的,以满足我起床就能写代码,写累了就睡的要求。当然我还购买了一把没有腿的椅子,这样我能长时间坐在床上而不至于腰背疼痛。那么既然是卧室,所以最近打算把窗帘拆了改装成投影幕,加装投影仪供 PS4 使用,在 120 英寸的屏幕上畅玩 PS4。
当然,还有一点,我要理一下线,现在这机器背后的线缆我自己都看不下去。