AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 529752
Accepted
Andriy Makukha
Andriy Makukha
Asked: 2019-07-12 23:21:32 +0800 CST2019-07-12 23:21:32 +0800 CST 2019-07-12 23:21:32 +0800 CST

为什么 FreeBSD 上的应用程序运行速度比 Linux 上慢?

  • 772

更新

他们没有!至少,不适合我。

看我的回答。

原始问题

根据去年的 Phoronix 基准测试,FreeBSD 上的应用程序运行速度大多比 Debian 上慢(包括 Stockfish 国际象棋引擎、Node.js、FLAC 编码和其他计算任务)。

Phoronix 文章本身将一些性能差异归因于使用 Clang 而不是 GCC 编译器。其他一些观点认为使用 ZFS 会使 FreeBSD 变慢,因为 ZFS 本质上比 ext4 慢。

但是,即使是使用 GCC8 编译的 FreeBSD 上的纯计算任务,其执行速度也比 Linux 上要慢。

这是什么原因?它是 FreeBSD 和 Linux 内核之间固有的差异,可能是由于驱动程序质量较差还是有其他原因?

PS为了更具体一点,这里有一个相当简单的纯计算程序,根据 Phoronix,它在 FreeBSD 上比在 Linux 上运行得慢:m-queens 1.2。编译如下:

gcc -o m-queens.bin main.c -O2 -march=native -mtune=native -std=c99 -fopenmp

由于这是在两个 20 核 CPU 上运行的多线程任务,我怀疑性能差异归结为操作系统处理多线程的能力。

PPS为了更清楚地说明,我知道 FreeBSD 具有良好的网络功能并且它被Netflix 使用。这个问题专门针对计算任务,例如上面的问题。

PPPS在我的 6 核桌面和 Ubuntu 一起安装 FreeBSD (TrueOS) 并尝试自己运行皇后基准测试后,我没有注意到多线程性能有任何显着差异。虽然 Phoronix 声称它在 FreeBSD 上的运行速度慢了 39%,但在我的测试中它只慢了 3.7%,这可能是由于编译器版本的细微差别(TrueOS 上的 gcc 7.4,Ubuntu 上的 gcc 7.2)。我稍后会测试更多。

linux freebsd
  • 2 2 个回答
  • 5747 Views

2 个回答

  • Voted
  1. Best Answer
    Andriy Makukha
    2019-07-13T20:35:16+08:002019-07-13T20:35:16+08:00

    如此多的反对票促使我在我的 6 核台式计算机上安装 FreeBSD (TrueOS) 以自己进行测试。(注意:我不建议尝试将 TrueOS 与其他操作系统一起安装,因为此安装会擦除我的一个硬盘驱动器,即使我尝试将其安装在 USB 驱动器上......这不是一种用户友好的体验。)

    结果,在 Ubuntu 和 FreeBSD 上运行 Phoronix 测试套件的一些测试后,我看不到“FreeBSD 上的应用程序缓慢”效果。恰恰相反,一些应用程序在 FreeBSD 上的运行速度明显加快(10-25%):

        Test                                    FreeBSD 13        Ubuntu 17
    Fhourstones, kpos/s                       16753             13336
    m-queens, multithreaded, user time, s     18.08             17.38
    7zip 1 GB text file, user time, s         994               1096
    

    如您所见,在 FreeBSD 上执行较慢的唯一任务是多线程 N 皇后问题,比在 Ubuntu 上多花费 3.7% 的时间。

    潜在的陷阱:

    • Ubuntu 上的 gcc 是 7.2 版,在 FreeBSD – 7.4 上
    • Ubuntu 在 shell 中使用 KDE、FreeBSD 运行(应该没有太大区别)
    • Phoronix 使用 80 线程服务器,我使用 6 线程 Intel i5 计算机。

    总之,在测试操作系统性能时,您应该:

    • 自己在您的设置上运行基准测试,而不是相信其他人获得的结果。
    • 尝试使用相同的编译器。
    • 请注意,Perl 和 Python 等脚本语言的性能并不是操作系统性能的良好指标,因为不同安装的解释器表现不同。
    • 8
  2. arrowd
    2019-07-13T02:05:30+08:002019-07-13T02:05:30+08:00

    我明白了,基准测试涉及使用 OpenMP。这可能是差异的来源。检查正在使用的 OpenMP 运行时库。

    另一件值得关注的事情——反汇编代码或中间表示。它可以让您快速找到正在执行的指令的差异。

    总而言之,对此没有快速而明确的答案,您必须进行一些研究。

    • 2

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve