V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
daweii
V2EX  ›  问与答

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

  •  
  •   daweii · Mar 23, 2022 · 5488 views
    This topic created in 1495 days ago, the information mentioned may be changed or developed.

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

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

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

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

    另外,docker 依赖容器技术,基本上和虚拟化是两码事儿
    nothingistrue
        11
    nothingistrue  
       Mar 23, 2022
    @nevin47 #10 不管是容器,还是分区,这都是在不改变 CPU 架构的情况下搞的。垮了 CPU 架构,因为指令集不同,必须要搞虚拟化或者指令模拟。跨架构虚拟化肯定损耗很大性能,指令模拟需要很大的投入成本,做得要不好还不如虚拟化。说个简单的例子,windows 下的 docker ,是要先用 hyper-v 搞个 linux 虚拟机的,这还只是跨系统没跨 CPU 架构。
    duke807
        12
    duke807  
       Mar 23, 2022 via Android
    linux 是跨架構最無痛的系統,沒有之一
    princelai
        13
    princelai  
       Mar 23, 2022
    跑都能跑,但是我说一个可能影响的因素,MKL,Jupyter Notebook 通常配合 numpy 和 pandas,甚至 numba,如果有 MKL 速度会快很多
    lithiumii
        14
    lithiumii  
       Mar 23, 2022 via Android
    远程 jupyter 没问题,大多数 python 库都能用,底层的依赖其实有区别但是开发者已经处理好了
    dawe
        15
    dawe  
       Mar 23, 2022 via iPhone
    @lithiumii 感谢。第一次听说 MKL ,刚搜了一下发现现在 Anaconda 都自带 MKL 了
    jessun1990
        16
    jessun1990  
       Mar 23, 2022   ❤️ 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  
       Mar 23, 2022   ❤️ 1
    Numpy 底层也都是调用各种矩阵运算库来加速的,例如 blas lapack 。这些矩阵运算库为了性能,需要专门针对不同的 CPU 架构的指令集进行实现。所以 arm 架构需要专门编译这些底层库。

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

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

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

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

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

    区别应该就是性能上,ARM 没有 x86 的部分复杂指令,也就是说某些计算用 x86 可以一个指令搞定,但是用 ARM 需要很多个指令组合才能完成,如果你的程序是对 x86 特有指令进行优化的,那么 ARM 计算机可能性能会稍差。
    w4087
        28
    w4087  
       Mar 23, 2022
    我的 mastercard 信用卡一直过不去,朋友中行 visa 双币的没啥问题,草了
    aneostart173
        29
    aneostart173  
       Mar 23, 2022
    主要看一些依赖库有没有 ARM 版本。尤其在高性能计算方面,arm 生态差一些。
    BrettD
        30
    BrettD  
       Mar 23, 2022
    @nothingistrue ARM 也有原生的 Docke 镜像……运行原生 Docker 不会涉及到跨指令集的问题
    BrettD
        31
    BrettD  
       Mar 23, 2022
    大部分开源软件在 Oracle Linux 上已经有打好的 ARM 二进制包,没有打包的话绝大部分软件从源码编译一下就能跑了,比较头痛的只有一些用到 x64 汇编的开源软件和不提供源码也不提供 ARM 二进制的闭源软件
    redsonic
        32
    redsonic  
       Mar 23, 2022
    要看是跑在什么 ARM 处理器上,国产的那一堆 ARM 折腾的够呛,IO 太孱弱。oracle 的 Ampere A1 不太了解。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   842 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 82ms · UTC 21:22 · PVG 05:22 · LAX 14:22 · JFK 17:22
    ♥ Do have faith in what you're doing.