最近从甲骨文那里薅了一台 ARM 的主机。想用来远程 Jupyter Notebook 。 这个可以直接像普通 Linux 一样使用吗?还是需要上 docker ?
![]() | 1 villivateur 2022-03-23 08:30:40 +08:00 ![]() 常用的软件都有 ARM 版,如果你的工作不涉及 CPU 底层的话,ARM 跟 x86 没有区别 |
![]() | 2 nevin47 2022-03-23 09:01:24 +08:00 ![]() 如果只是数据分析,那基本感知不到太大的区别 ARM 和 X86 服务器的差异越靠近上层越不明显 |
![]() | 4 interim 2022-03-23 09:05:11 +08:00 一直信用卡通不过验证... |
5 e9pWeUbh9PGCnp95 2022-03-23 09:05:27 +08:00 Do you know the memory order? |
6 nothingistrue   2022-03-23 09:07:28 +08:00 别的不知道,但是如果不一样的话,你不管是上 docker 还是上虚拟机都没用,跨架构的虚拟化,性能损耗非常大。 |
7 iotbase 2022-03-23 09:12:24 +08:00 测试回复 |
![]() | 10 nevin47 2022-03-23 09:16:34 +08:00 |
11 nothingistrue 2022-03-23 09:24:23 +08:00 @nevin47 #10 不管是容器,还是分区,这都是在不改变 CPU 架构的情况下搞的。垮了 CPU 架构,因为指令集不同,必须要搞虚拟化或者指令模拟。跨架构虚拟化肯定损耗很大性能,指令模拟需要很大的投入成本,做得要不好还不如虚拟化。说个简单的例子,windows 下的 docker ,是要先用 hyper-v 搞个 linux 虚拟机的,这还只是跨系统没跨 CPU 架构。 |
12 duke807 2022-03-23 09:28:21 +08:00 via Android linux 是跨架最痛的系,有之一 |
13 princelai 2022-03-23 09:32:35 +08:00 跑都能跑,但是我说一个可能影响的因素,MKL,Jupyter Notebook 通常配合 numpy 和 pandas,甚至 numba,如果有 MKL 速度会快很多 |
![]() | 14 lithiumii 2022-03-23 09:32:46 +08:00 via Android 远程 jupyter 没问题,大多数 python 库都能用,底层的依赖其实有区别但是开发者已经处理好了 |
![]() | 16 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 。 |
17 dayeye2006199 2022-03-23 10:36:00 +08:00 ![]() Numpy 底层也都是调用各种矩阵运算库来加速的,例如 blas lapack 。这些矩阵运算库为了性能,需要专门针对不同的 CPU 架构的指令集进行实现。所以 arm 架构需要专门编译这些底层库。 这些库还有商用实现,例如 Intel mkl ,由于 intel 是专门卖 x86 处理器的,所以可想而知不会主动去支持 arm 。 但一般用户使用可能不会接触这些细节,一些包管理软件例如 conda 已经可以很好的管理不同架构下的包,这些编译工作也已经有人做好了。 |
![]() | 18 3dwelcome 2022-03-23 10:42:53 +08:00 arm 适合小而美的 web 集群服务器。 你拿它来做密集型计算和数据分析,估计有点悬。 当然 x86 也未必行,现在科学计算都是 gpu 的天下了。 |
![]() | 19 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 章节,基本上就清楚容器技术和虚拟化技术的本质区别了…… |
![]() | 20 nevin47 2022-03-23 10:55:14 +08:00 @dayeye2006199 #17 我印象中 ARM 版本的 numpy ,是有用 ARMPL 做底层库编译了的,替代了 MKL 来编译 BLAS |
21 lovestudykid 2022-03-23 11:04:41 +08:00 不要依赖甲骨文这个机器,随时无通知删机 |
22 nothingistrue 2022-03-23 11:06:05 +08:00 @nevin47 #19 我建议你还是先去仔细区分下 CPU 架构 /指令集,操作系统,虚拟化,容器化的区别。 |
23 MaxTan 2022-03-23 11:06:08 +08:00 @nevin47 #19 这里要杠一下,windows 还真有容器 跑的都是 windows 那一套东西。 不过这东西不好用,也没什么人用,还不如用 hyper-v 套一层用 linux container |
![]() | 24 nevin47 2022-03-23 11:15:14 +08:00 @nothingistrue #22 我拒绝和你继续交流,容器本身就是一个 Arch less 的东西,你非要把 arch sensitive 的 docker image 搅进来,你开心就好……而且绕回 OP 的最初需求,OP 的需求不需要上 Docker ,这个讨论本身就是和问题无关的无意义讨论 |
![]() | 25 jim9606 2022-03-23 11:28:03 +08:00 你没具体说分析用啥软件库。 目前比较有可能有差别的是 numpy ,默认链接 openBLAS ,但 x86 还可以找到链接 intel mkl 的二进制包。 不过应该没有性能以外的差距。 |
![]() | 26 ryd994 2022-03-23 12:29:43 +08:00 via Android 1. 可以,但是需要 arm 的软件包 /库。debian 官方源已经有很多软件了。其他一些软件需要你自己编译。另一些软件完全不支持 arm 。 2. 不需要。你要用也可以用,但是需要 arm 的 image 。原因同上。 |
![]() | 27 libook 2022-03-23 13:28:50 +08:00 不知道具体是什么硬件,但主流 ARM 架构的计算机是受到了广泛支持的,大多主流应用程度应该都可以跑,只要确保你跑的是专门为 ARM 架构的计算机编译的程序,包括专门为 ARM 构建的 Docker 镜像。 区别应该就是性能上,ARM 没有 x86 的部分复杂指令,也就是说某些计算用 x86 可以一个指令搞定,但是用 ARM 需要很多个指令组合才能完成,如果你的程序是对 x86 特有指令进行优化的,那么 ARM 计算机可能性能会稍差。 |
![]() | 28 w4087 2022-03-23 13:35:54 +08:00 我的 mastercard 信用卡一直过不去,朋友中行 visa 双币的没啥问题,草了 |
29 aneostart173 2022-03-23 15:22:50 +08:00 主要看一些依赖库有没有 ARM 版本。尤其在高性能计算方面,arm 生态差一些。 |
![]() | 30 BrettD 2022-03-23 16:04:51 +08:00 @nothingistrue ARM 也有原生的 Docke 镜像……运行原生 Docker 不会涉及到跨指令集的问题 |
![]() | 31 BrettD 2022-03-23 16:06:33 +08:00 大部分开源软件在 Oracle Linux 上已经有打好的 ARM 二进制包,没有打包的话绝大部分软件从源码编译一下就能跑了,比较头痛的只有一些用到 x64 汇编的开源软件和不提供源码也不提供 ARM 二进制的闭源软件 |
![]() | 32 redsonic 2022-03-23 17:59:15 +08:00 要看是跑在什么 ARM 处理器上,国产的那一堆 ARM 折腾的够呛,IO 太孱弱。oracle 的 Ampere A1 不太了解。 |