ARM 主机的 Linux 和普通的 Linux 有什么区别吗(用途:跑 Jupyter Notebook 做数据分析) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daweii
V2EX    问与答

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

  •  
  •   daweii 2022-03-23 08:20:33 +08:00 5073 次点击
    这是一个创建于 1301 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言    2022-03-30 14:10:17 +08:00
    亲测有至今为止不能用的有两点。
    1. MKL (英特尔数学核心函数库) 我还以为 Anaconda 会自带这个包,结果 ARM 不支持。在安装贝叶斯统计库 PYMC 的时候提示出错。
    2. R 语言 4.0 版本,我只能安装到 3.0, 4.0 提示的话提示没有 R-core 依赖的两个包,具体哪两个忘了。
    如果还有其他的坑的话我会继续更新。

    另外说句题外话,甲骨文的 ARM 主机性能真是高。
    不愧是 4 核 24G 内存的主机。Unixbench 测得分数高达 3800 分。
    GCP 的免费 VM 只有 400 分不到。
    32 条回复    2022-03-23 17:59:15 +08:00
    villivateur
        1
    villivateur  
       2022-03-23 08:30:40 +08:00   1
    常用的软件都有 ARM 版,如果你的工作不涉及 CPU 底层的话,ARM 跟 x86 没有区别
    nevin47
        2
    nevin47  
       2022-03-23 09:01:24 +08:00   1
    如果只是数据分析,那基本感知不到太大的区别

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

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

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

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

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

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

    当然 x86 也未必行,现在科学计算都是 gpu 的天下了。
    nevin47
        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 章节,基本上就清楚容器技术和虚拟化技术的本质区别了……
    nevin47
        20
    nevin47  
       2022-03-23 10:55:14 +08:00
    @dayeye2006199 #17 我印象中 ARM 版本的 numpy ,是有用 ARMPL 做底层库编译了的,替代了 MKL 来编译 BLAS
    lovestudykid
        21
    lovestudykid  
       2022-03-23 11:04:41 +08:00
    不要依赖甲骨文这个机器,随时无通知删机
    nothingistrue
        22
    nothingistrue  
       2022-03-23 11:06:05 +08:00
    @nevin47 #19 我建议你还是先去仔细区分下 CPU 架构 /指令集,操作系统,虚拟化,容器化的区别。
    MaxTan
        23
    MaxTan  
       2022-03-23 11:06:08 +08:00
    @nevin47 #19 这里要杠一下,windows 还真有容器 跑的都是 windows 那一套东西。

    不过这东西不好用,也没什么人用,还不如用 hyper-v 套一层用 linux container
    nevin47
        24
    nevin47  
       2022-03-23 11:15:14 +08:00
    @nothingistrue #22 我拒绝和你继续交流,容器本身就是一个 Arch less 的东西,你非要把 arch sensitive 的 docker image 搅进来,你开心就好……而且绕回 OP 的最初需求,OP 的需求不需要上 Docker ,这个讨论本身就是和问题无关的无意义讨论
    jim9606
        25
    jim9606  
       2022-03-23 11:28:03 +08:00
    你没具体说分析用啥软件库。
    目前比较有可能有差别的是 numpy ,默认链接 openBLAS ,但 x86 还可以找到链接 intel mkl 的二进制包。
    不过应该没有性能以外的差距。
    ryd994
        26
    ryd994  
       2022-03-23 12:29:43 +08:00 via Android
    1. 可以,但是需要 arm 的软件包 /库。debian 官方源已经有很多软件了。其他一些软件需要你自己编译。另一些软件完全不支持 arm 。
    2. 不需要。你要用也可以用,但是需要 arm 的 image 。原因同上。
    libook
        27
    libook  
       2022-03-23 13:28:50 +08:00
    不知道具体是什么硬件,但主流 ARM 架构的计算机是受到了广泛支持的,大多主流应用程度应该都可以跑,只要确保你跑的是专门为 ARM 架构的计算机编译的程序,包括专门为 ARM 构建的 Docker 镜像。

    区别应该就是性能上,ARM 没有 x86 的部分复杂指令,也就是说某些计算用 x86 可以一个指令搞定,但是用 ARM 需要很多个指令组合才能完成,如果你的程序是对 x86 特有指令进行优化的,那么 ARM 计算机可能性能会稍差。
    w4087
        28
    w4087  
       2022-03-23 13:35:54 +08:00
    我的 mastercard 信用卡一直过不去,朋友中行 visa 双币的没啥问题,草了
    aneostart173
        29
    aneostart173  
       2022-03-23 15:22:50 +08:00
    主要看一些依赖库有没有 ARM 版本。尤其在高性能计算方面,arm 生态差一些。
    BrettD
        30
    BrettD  
       2022-03-23 16:04:51 +08:00
    @nothingistrue ARM 也有原生的 Docke 镜像……运行原生 Docker 不会涉及到跨指令集的问题
    BrettD
        31
    BrettD  
       2022-03-23 16:06:33 +08:00
    大部分开源软件在 Oracle Linux 上已经有打好的 ARM 二进制包,没有打包的话绝大部分软件从源码编译一下就能跑了,比较头痛的只有一些用到 x64 汇编的开源软件和不提供源码也不提供 ARM 二进制的闭源软件
    redsonic
        32
    redsonic  
       2022-03-23 17:59:15 +08:00
    要看是跑在什么 ARM 处理器上,国产的那一堆 ARM 折腾的够呛,IO 太孱弱。oracle 的 Ampere A1 不太了解。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     927 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 20:52 PVG 04:52 LAX 13:52 JFK 16:52
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86