618
由于笔者的笔记本(六代标压i5 + gtx965m)已经跟不上笔者剪辑4K视频和机器学习的需求了。所以在618的时候拿到了预算,有能力购入一台新电脑。
新电脑旨在追求长期性价比,并且尽量追求边际效应最小化。笔者是计算机科学的学生,因此未来可能会写CUDA,大型编译以及多系统的需求。适逢AMD的Zen2架构和英伟达图灵显卡大降价,因此618可以算是购入电脑的一个好时机。
配置
【AMDR9 3900X】AMD 锐龙9 3900X 处理器 (r9)7nm 12核24线程 3.8GHz 105W AM4接口 盒装CPU【行情 报价 价格 评测】-京东item.jd.com![c01175a5d3acba500b660a149b0fd239.png](https://i-blog.csdnimg.cn/blog_migrate/5ce349191a437db7ee650553ca685189.jpeg)
JD 3286.33
【华硕PRO WS X570-ACE】华硕(ASUS)PRO WS X570-ACE 主板 支持 CPU3900X/3800X/3700X (AMD X570/socket AM4)【行情 报价 价格 评测】-京东item.jd.com![acdf01841bce3aff584b68ba2e689acb.png](https://i-blog.csdnimg.cn/blog_migrate/cbb63f32c50e7aa6905b9a7d6cbb90f8.jpeg)
JD 2890.00
镁光 MT 32G 2133 2400 2666 3200 DDR4 纯ECC 服务器内存4G8G16Gitem.taobao.com![dc6a182775559b64f43130f11c4cdde8.png](https://i-blog.csdnimg.cn/blog_migrate/7f1fb767ea6127295f7b700e81d471fa.jpeg)
TAOBAO 1100.00
Canarypwn:618装机 —— Manjaro + Windows Workstationzhuanlan.zhihu.com![63797aec9d9ed85f5f67bdaf9a46d885.png](https://i-blog.csdnimg.cn/blog_migrate/7acf173e32664b3f1860d3b70a4d421c.jpeg)
TAOBAO 787.50
【ThermalrightFS140】利民(Thermalright) FS140 霜灵 双塔散热器全电镀 回流焊8mm 热管 SFDB 风扇 6年质保 TF7 硅脂【行情 报价 价格 评测】-京东item.jd.com![98324029c01964cbb897d835c2e68106.png](https://i-blog.csdnimg.cn/blog_migrate/0615866b8f2a832ebb7945fc2b20dae7.jpeg)
JD 228.00
【美商海盗船RMX850 2018款】美商海盗船 (USCORSAIR) 额定850W RM850x 全模组电脑电源(80PLUS金牌/低噪音 /十年质保/全日系电容)【行情 报价 价格 评测】-京东item.jd.com![9aef514dc3b3ed72f7c3d31bf7052355.png](https://i-blog.csdnimg.cn/blog_migrate/ed64d590e2981810b467ca2816c43da1.jpeg)
JD 818.17
【索泰RTX2060super-8GD6 霹雳版 OC HA】索泰(ZOTAC)RTX2060super霹雳版OC HA显卡/N卡/台式机/游戏/电竞/网课/绘图/设计/独立显卡/8G显存【行情 报价 价格 评测】-京东item.jd.com![4d76915ae1ef9ded2f04d0086cfe4119.png](https://i-blog.csdnimg.cn/blog_migrate/0002dee12b17bf2ef685611738ecfcea.jpeg)
JD 2491.00
【先马黑洞】先马(SAMA)黑洞 黑色 中塔式机箱(支持ATX主板/配3把静音风扇/宽体游戏电脑机箱/支持长显卡/黑化背线)【行情 报价 价格 评测】-京东item.jd.com![593fe2af3d59f2903a36d2b4778f4435.png](https://i-blog.csdnimg.cn/blog_migrate/2ef4a15c6485de3221b4e752314c15a6.png)
JD 247.00
外加一根 U.2连接线
外加问同学暂时借了块970, 以后会收一块RX580 给 Linux 用
ALL 11848
购买理由
- 3900X 一共拥有 2 个CCD,总共十二核心,二十四线程。 每个CCD分表包含着6个核心和十二个线程 (id: 0-5, 12-17)(i: 6-11, 18-23) ,一共 64M 的三级缓存(虽然跨CCD时延迟会很大)。三级缓存对编译的提升是很大的,同时多核心更利于虚拟机运行。
- 华硕(ASUS)PRO WS X570-ACE 主板 是一块工作站主板,特点是支援ECC UDIMM内存, 主板用料较好, 有一个华硕自家的远程管理系统( 类 IPMI ), 共有三条pcie插槽(pcie 3.0 16+ pcie 3.0 * 8)。
- 因为<del>上科大水电网免费</del>学习需要,所以预计是24*7工作。ECC内存对于系统稳定性的提升是很大的。
- P4500, 英特尔企业级SSD,TLC颗粒, U.2接口
- 利民虽然各种参数上都不如猫扇(例如风压),但口碑较为不错,已经在学校内见到一个有组织的传教团队了(
- 因为会上双卡,所以上了850W的电源
- 目前,
- 由于英伟达在CUDA领域较早的布局和在教育行业的疯狂送卡行为(一个电话连夜免费快递六块V100),AMD目前在机器学习和教育领域的生态已经落后n个身位了
- 机器学习要求显存8G起步(测试结果来自 @ murez 用openai跑历史的期末论文,注,后来他又自己写了一篇)
- 同一个核心的丐版和顶级非公的性能差距不会超过5%
- CPU更容易成为性能瓶颈
- 2060S是20系列当前性价比较高的一张卡
- 堆料索,售后走京东
- 其它需求可以白嫖学校
所以我决定采用索泰的丐版2060S
- 机箱随便买的
装机
装机过程将会在BILIBILI见面
双系统
因为学习需求,所以准备采用 host 系统上通过虚拟机来运行若干个 guest 系统。目前主流的方案有 proxmox, unraid, Hyper-V, kvm 等。为了更加开放和性能损失更小,所以选择了用 manjaro 作为 Host , 跑 kvm ,再用 pcie passthrough 将显卡直通给 guest 系统的 Windows 。
所以我将借来的GTX 970 插在了靠近CPU的pcie槽,作为Manjaro的显示输出。将2060S插在了第二根pcie槽,作为将来直通给WIndows的显卡。未来,将显示线插在970上就可以显示Manjaro,将显示线插在2060S就可以显示Windows。非常方便。
经过简单的配置,Manjaro到了可用的程度。
这里顺便吐槽一下学校的图书与信息中心,连交大的镜像源都会劫持。因此多了一步添加host。
![b26efa90cfe1c30e1d141e9cf39d9586.png](https://i-blog.csdnimg.cn/blog_migrate/ce529e131f56b557d53cf40d01e45fc7.jpeg)
检查CPU对虚拟化的支持
可以用该命令来查看CPU是否支持虚拟化
$ LC_ALL=C lscpu | grep Virtualization
Output: Virtualization: AMD-V
通常情况下的CPU都支持虚拟化。注意要在BIOS中开启。对于Intel处理器来说是VT-x,对于AMD处理器来说是AMD-V。
![452971af2717ac0489fb2691cedddbb4.png](https://i-blog.csdnimg.cn/blog_migrate/d0ddfe42e8a3c43ccc01f15022a735b1.png)
检查内核
# 这里输出中需要包含 kvm kvm_intel
$ lsmod | grep kvm
# 这里输出中需要包含 virtio
$ lsmod | grep virtio
# 没有 virtio 时执行
$ sudo modprobe virtio
安装所需的软件包
$ sudo pacmna -Sy qemu libvirt ebtables dnsmasq bridge-utils openbsd-netcat
# 图形化的管理界面,如果使用带桌面环境的操作系统可选安装。我这里安装
$ sudo pacman -Sy virt-manager
- qemu QEMU 软件,提供 qemu-img 等命令
- libvirt 提供管理虚拟机、存储、网络的功能
- ebtables 桥接网络管理,用于 default NAT 网络
- dnsmasq DHCP DNS 服务,用于 default NAT 网络
- bridge-utils 桥接网络管理,用于桥接网络
- openbsd-netcat 用于通过 SSH 管理
启动服务
# 启动虚拟机管理后台服务开机自启
sudo systemctl enable libvirtd
# 启动虚拟机管理后台服务
sudo systemctl start libvirtd
配置显卡直通
参考: https://github.com/pavolelsig/passthrough_helper_manjaro
有视频,也有脚本,挺清晰的。
配置虚拟机
具体配置和 配置显卡直通 部分类似不过有几个点需要注意。
virtio
Virtio是一种半虚拟化技术。用VIrtio虚拟的网卡和硬盘,其性能相比Nat和SATA有很大的提升。
https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html
首先将硬盘改成virtio总线以增加性能
![b1b6730e69eeb7b730c01f4d946005a6.png](https://i-blog.csdnimg.cn/blog_migrate/666ea347833781a442bd251e0d761dd1.jpeg)
下载virtio驱动预备
下载地址页面:https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html
如:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
创建一个光驱,把驱动放进去
![c1818fe1d5ccdf545cdcef5822f23097.png](https://i-blog.csdnimg.cn/blog_migrate/10356744aae250702414318d719b502b.jpeg)
可以再做一个准备,把网卡也virtio化
![5507b86e21940f8bd30e57763abcbe7e.png](https://i-blog.csdnimg.cn/blog_migrate/a6d6cda0489fb443e46c8327fa6e65a1.jpeg)
同时也可以把 usb host 作为 pcie 设备直通给 WIndows ,这样速度和便利性都比较好。但这样 Manjaro 上面就无法访问 usb 设备了。 如果你有多余的 pcie 槽, 可以考虑买一个 pcie 转 usb 的转接卡,某宝大概几十块的样子。
![ea57e5ae927a0e57db25823991ab0aa2.png](https://i-blog.csdnimg.cn/blog_migrate/f615acf9afccefb3ac1df7c7782a0b43.jpeg)
在 windows 安装时,需要加载硬盘驱动,驱动文件夹地址是 E:viostorw10amd64
当开机成功后,右键计算机 - 管理 - 设备管理器 , 然后对于未知的 pcie 设备选择安装驱动。 将驱动文件夹指向 你的光盘即可。 目前我一共装了三个驱动。 分别是硬盘,网卡还有一个virtio ballon,用于CPU的调配。
![ea35eb7e6248b9ad2fa513fdf964b77a.png](https://i-blog.csdnimg.cn/blog_migrate/9891af30c0d2772f48892e1ce51f7a58.jpeg)
显卡
英伟达显卡的设置稍有不同。
要让显卡直通,先要启用iommu,然后让pcie设备使用修改的rom。启动iommu在主板里就可以设置,关键是昨天的那个rom file那一行xml。
![857310862ec89ce6c8bf9cdb4c7e3c57.png](https://i-blog.csdnimg.cn/blog_migrate/78e91861d1f2122adc6e4e9de0b0f601.jpeg)
这是一个显卡的修改bios。首先要获得显卡的原生Bios。
最简单的办法是在Windows上的GPU-Z上导出Bios
![519d785d9f4a0cec45cc5900a8619828.png](https://i-blog.csdnimg.cn/blog_migrate/64afcfd20cd5494112ae5a95ac547ceb.jpeg)
如果已经装好了 Manjaro,也可以在这个网站找到显卡BIOS
https://www.techpowerup.com/vgabios/
然后就是修改ROM了。首先用 WINHEX 或者 HXD 来打开十六进制文件。全文搜索 VGA 。删除 55 AA 的全部内容。前面基本都是 nvflash 啥的信息,这些可能会导致显卡不支持 efi 。
![0ac2f0405ed450d3732ba2d375860338.png](https://i-blog.csdnimg.cn/blog_migrate/ac4562d99194fdc5d117e1a0b0f64fb2.jpeg)
最后的文件应该是55 AA顶格的
![44a9ef0197d27b9c2ddb667439a316f3.png](https://i-blog.csdnimg.cn/blog_migrate/2322264fdecceb40cae711a34fee4fbf.jpeg)
然后保存为 .rom 文件, 复制到 Manjaro 里面。在虚拟系统管理系统中的xml文件中加一行用于加载显卡bios
当然事情没有那么简单,NVIDIA屏蔽了消费级显卡的驱动在虚拟机上的加载 (黄氏刀法.JPG) 所以我们需要编辑 kvm 的配置文件来骗过老黄。
https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF
$ sudo EDITOR=nano virsh edit win10
win10替换为你的虚拟机的“域”名字
![0add95c5e925ecfd208bc515c14d45ba.png](https://i-blog.csdnimg.cn/blog_migrate/d07b4b97aebb8929a552e663c82d899d.jpeg)
添加一个 12 位的 字母数字混合的 vender_id 然后开启 kvm hide
之后就可以当正常显卡使用了,安装驱动后跑 CUDA 和 3D 项目没有发现明显的问题。
CPU
之前碰到了一个问题是虚拟机可以检测到12个逻辑核心,但从任务管理器中只有两个逻辑核心被用上了。后面发现是CPU的配置问题。
这是我的设置。因为 3900X 是胶水总线的设计,跨 CCD 的延迟较高。所以我将在一个CCD上的物理核心对应的物理核心分配给虚拟机(也就是0-5 12-17的逻辑核心,3900X 瞬间变成 3600X)。当然你也可以将12核24线程全部分配给虚拟机,这样的话cinebench 可以跑到 7300分 (我做过超频,全核4.3GHZ, 在原生windows上可以跑到7700),但某些应用会出现无响应和推出的情况。所以我暂时还是选择分配一般的核心的方案。
![f6c6a4e17aadf8e2a548631e911181ed.png](https://i-blog.csdnimg.cn/blog_migrate/e1d9105ee37ad5dde885416956a61601.jpeg)
![d55ad43d9ddafb6f883ffa100b861fb0.png](https://i-blog.csdnimg.cn/blog_migrate/576c75b0e60631ca191ad04477e60f5f.jpeg)
![cdab1ec95d00eee311c4cd055ce44b16.png](https://i-blog.csdnimg.cn/blog_migrate/112bbbbfe2502e939c5109a58b6883d2.jpeg)
参考与致谢
- KVM (简体中文))
- 在 Arch Linux (Manjaro) 中使用 KVM 虚拟机)
- pavolelsig/passthrough_helper_manjaro
- Luv Letter - dual-system-osx-kvm-tutorial 也是 Luv Letter 大佬给出的计算机配置
- 感谢 Kiwi 提供的帮助
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。