ARM 主机的 Linux 和普通的 Linux 有什么区别吗(用途:跑 Jupyter Notebook 做数据分析)

2022-03-23 08:20:33 +08:00
 daweii

最近从甲骨文那里薅了一台 ARM 的主机。想用来远程 Jupyter Notebook 。 这个可以直接像普通 Linux 一样使用吗?还是需要上 docker ?

4295 次点击
所在节点    问与答
32 条回复
villivateur
2022-03-23 08:30:40 +08:00
常用的软件都有 ARM 版,如果你的工作不涉及 CPU 底层的话,ARM 跟 x86 没有区别
nevin47
2022-03-23 09:01:24 +08:00
如果只是数据分析,那基本感知不到太大的区别

ARM 和 X86 服务器的差异越靠近上层越不明显
nyfwan123
2022-03-23 09:03:34 +08:00
@daweii 楼主 怎么薅的啊?
interim
2022-03-23 09:05:11 +08:00
一直信用卡通不过验证...
unintialized
2022-03-23 09:05:27 +08:00
Do you know the memory order?
nothingistrue
2022-03-23 09:07:28 +08:00
别的不知道,但是如果不一样的话,你不管是上 docker 还是上虚拟机都没用,跨架构的虚拟化,性能损耗非常大。
iotbase
2022-03-23 09:12:24 +08:00
测试回复
leimao
2022-03-23 09:13:28 +08:00
@nyfwan123 甲骨文提供若干台 ARM 免费 instance
nyfwan123
2022-03-23 09:15:23 +08:00
@leimao 感谢
nevin47
2022-03-23 09:16:34 +08:00
@nothingistrue #6 ARM 的容器和 KVM 非常的成熟,不存在 ARM 模拟 X86 的这种用法。。。

另外,docker 依赖容器技术,基本上和虚拟化是两码事儿
nothingistrue
2022-03-23 09:24:23 +08:00
@nevin47 #10 不管是容器,还是分区,这都是在不改变 CPU 架构的情况下搞的。垮了 CPU 架构,因为指令集不同,必须要搞虚拟化或者指令模拟。跨架构虚拟化肯定损耗很大性能,指令模拟需要很大的投入成本,做得要不好还不如虚拟化。说个简单的例子,windows 下的 docker ,是要先用 hyper-v 搞个 linux 虚拟机的,这还只是跨系统没跨 CPU 架构。
duke807
2022-03-23 09:28:21 +08:00
linux 是跨架構最無痛的系統,沒有之一
princelai
2022-03-23 09:32:35 +08:00
跑都能跑,但是我说一个可能影响的因素,MKL,Jupyter Notebook 通常配合 numpy 和 pandas,甚至 numba,如果有 MKL 速度会快很多
lithiumii
2022-03-23 09:32:46 +08:00
远程 jupyter 没问题,大多数 python 库都能用,底层的依赖其实有区别但是开发者已经处理好了
dawe
2022-03-23 09:57:51 +08:00
@lithiumii 感谢。第一次听说 MKL ,刚搜了一下发现现在 Anaconda 都自带 MKL 了
jessun1990
2022-03-23 10:03:10 +08:00
我这里工作偶尔会有 arm 的环境,能感受到的区别就是:

1. 同版本的 centos 的 arm 版和 x64 版中的 glibc 版本号可能会不一样,倒是部分二进制可能需要重新编译。
2. 某些时候,同样的二进制可执行文件,在两个平台上要求的依赖有一些差异,不过 yum install 一下就好了。
3. 华为云的 arm 环境下,编译 mysql 必须要遵循华为的官方文档的步骤。如果按照 mysql 文档走,一定会出现意外错误。例如: https://support.huaweicloud.com/prtg-kunpengdbs/kunpengmysql5727_02_0012.html
dayeye2006199
2022-03-23 10:36:00 +08:00
Numpy 底层也都是调用各种矩阵运算库来加速的,例如 blas lapack 。这些矩阵运算库为了性能,需要专门针对不同的 CPU 架构的指令集进行实现。所以 arm 架构需要专门编译这些底层库。

这些库还有商用实现,例如 Intel mkl ,由于 intel 是专门卖 x86 处理器的,所以可想而知不会主动去支持 arm 。

但一般用户使用可能不会接触这些细节,一些包管理软件例如 conda 已经可以很好的管理不同架构下的包,这些编译工作也已经有人做好了。
3dwelcome
2022-03-23 10:42:53 +08:00
arm 适合小而美的 web 集群服务器。

你拿它来做密集型计算和数据分析,估计有点悬。

当然 x86 也未必行,现在科学计算都是 gpu 的天下了。
nevin47
2022-03-23 10:47:40 +08:00
@nothingistrue #11 这位同学……你在说啥啊,你这说法感觉你根本就不懂 Hypervisor 和 Container 的基本原理和区别

Windows 用 Docker 需要虚拟机,是因为 Docker 依赖 Linux Kernel 的 namespace 和 cgroup 啊😂Windows 自己又没有容器能力。另外

我印象中,docker 是没有调用 VMX/EL2 的,这本身就是一个跑在 Kernel 之上的一个应用层,根本不需要翻译啥指令,现在 cgroup 本身就是一个 arch 不敏感的东西。

我建议你如果想细致学习的话,可以读一下 cgroup v2 v3 两个 patch ,然后再看看 Intel 的 IA32/64 3C 卷的 VMX 章节,基本上就清楚容器技术和虚拟化技术的本质区别了……
nevin47
2022-03-23 10:55:14 +08:00
@dayeye2006199 #17 我印象中 ARM 版本的 numpy ,是有用 ARMPL 做底层库编译了的,替代了 MKL 来编译 BLAS

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/842237

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX