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
    • 最新
    • 标签
主页 / user-274235

Andriy Makukha's questions

Martin Hope
Andriy Makukha
Asked: 2019-07-12 23:21:32 +0800 CST

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

  • 5

更新

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

看我的回答。

原始问题

根据去年的 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 个回答
  • 5747 Views
Martin Hope
Andriy Makukha
Asked: 2019-07-04 05:22:27 +0800 CST

在版本 6 Unix 中取消转储 od(八进制或十六进制转储)

  • 2

od(八进制转储)命令自版本 1 起在 Unix 中实现。但是,我在版本 6 Unix 手册(1975 年)中找不到反向命令。现代的反转od方法xxd或sed不适用于 Unix V6,因为sedandawk仅出现在版本 7 中(而uudecode,xxd和base64都不可用)。

问题是:

  • 1975 年的人们如何将八进制或十六进制列表转换为二进制文件?
  • 如何在仅允许我将文本从剪贴板粘贴到终端的 PDP-11 模拟器中执行此操作?(换句话说,有必要为此编写我自己的程序吗?)

这是一个二进制文件的示例十六进制转储od,我想将其转换回二进制文件:

# od -h /bin/sum
0000000 0107 00ba 0000 0204 0000 0000 0000 0001
0000020 1583 0bd6 0ac3 0601 8901 0a37 00ae 15b7
0000040 0002 8905 0000 0000 8609 15c0 0001 8904
0000060 0026 0005 01ef 706f 6472 000a 1001 0a05
0000100 1040 8903 00be 0200 870b 0bc0 030e 0ab7
0000120 007a 15c2 00be 9484 6105 0b45 7e04 01f0
0000140 15c0 0001 8904 0080 0002 09f7 0026 15c0
0000160 0001 8904 0083 0001 1dc5 0050 09f7 0014
0000200 15c0 0001 8904 0082 0001 1040 8906 01c2
0000220 203f 200a 1026 1066 1141 09f7 0006 1581
0000240 1580 0087 0a00 7217 000a 1066 1001 0302
0000260 09f7 fff0 15b7 0012 65f7 0030 000c 15c0
0000300 0001 8904 00ba 0001 0087
0000312 
od hex
  • 2 个回答
  • 1310 Views
Martin Hope
Andriy Makukha
Asked: 2019-07-02 23:00:02 +0800 CST

如何从版本 6 Unix 中理解这个 TMG 的汇编代码?

  • 6

Unix 的早期版本包括 Doug McIlroy 的工具tmg(“transmogrifier”),一个早期的编译器-编译器。TMG 是用 Dennis Ritchie 的汇编语言以及 TMGL 本身(TMG 翻译成汇编的语言)实现的。这是TMG 的手册(1972 年)。这是来自版本 6 Unix 的完整源代码。

由于我试图了解 McIlroy 的 TMG 实现是如何工作的,因此我正在阅读该文件,该文件是由 TMG 完成tmgl.s的翻译。tmgl.t我对以下摘录感到困惑:

.1=.
1
.2=.
2
.3=.

和:

goto;..2
..3:null
..2:

我阅读了PAL-11R和Unix 汇编手册,但不记得有任何解释。

特别:

  • .意思是“位置计数器”,但什么是.3=.?
  • ..意思是“重定位计数器”,但什么是..3?

(更糟糕的是,这种语法似乎只在 TMG 实现中遇到,而不是在 Unix V6 的任何其他源文件中遇到。并且,为了排除损坏代码或逐步淘汰语法的可能性,TMG 源代码实际上是在Python中编译的运行 Unix V6的 PDP-11 模拟器。)

compiler assembly
  • 1 个回答
  • 342 Views
Martin Hope
Andriy Makukha
Asked: 2019-06-25 05:05:46 +0800 CST

版本 5 Unix 使用什么校验和算法?

  • 4

我不知道在 Unix V5 和 V6 中该sum命令使用了什么算法。

起初,我认为它是字节模数 2^16 的简单总和。然而,对于重复 320 次的字符串“1111111111\n”,它计算的校验和为28930(使用Julius Schmidt 的 JavaScript 的 PDP-11 模拟器)。而它的简单字节总和要小两个字节:

$ python -c 'print(sum(bytearray(b"1111111111\n"*320)) & 0xFFFF)'
28928

后来,从MacOS 的手册页中,我发现sumandcksum命令有很长的不一致历史。然而,即使是 MacOS 上提供的“历史”算法版本也不同意 Unix V5 的校验和。最接近的匹配是 UNIX System V 的默认sum命令(在 Mac 上调用,如cksum -o 2),它为此字符串返回相同的校验和,但不同意其他命令:

$ python -c 'print("1111111111\n"*320, end="")' | cksum -o 2
28930 7

更具体地说,cksum -o 2和 Unix V5sum对模拟器中的大多数二进制文件(例如,在文件夹中/bin)产生不同的输出,尽管它们在大多数文本文件上是一致的。

这是模拟器中的真实行为还是错误?如果是正版,是什么算法?

PS这是源代码,如果有人可以阅读1974年的汇编代码。

historical-unix checksum
  • 1 个回答
  • 417 Views

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