标签: x86

Solaris 11 中的 AES-NI 加速 ZFS v31 加密

我不太确定这是否是提出此问题的正确位置,如果不是,请随时将其迁移到适合它的任何地方。

我正在我的实验室机器上的 ESXi 5.0 下的 Solaris 11.11.11 VM 中测试 ZFS v31 中的加密功能。dd在 11 磁盘 RAIDZ3 上放置我的加密文件夹时,我得到了糟糕的结果。

dd 基准:

# time dd if=/dev/zero of=/mypool/storage/dd.tst bs=1024000 count=10000
10000+0 records in
10000+0 records out

real    1m52.604s
user    0m0.010s
sys     0m2.715s
# time dd if=/mypool/storage/dd.tst of=/dev/null bs=1024000
10000+0 records in
10000+0 records out

real    3m15.547s
user    0m0.015s
sys     0m4.768s
Run Code Online (Sandbox Code Playgroud)

翻译成:

Write: 90.94 MB/s
Read: 52.366 MB/s
Run Code Online (Sandbox Code Playgroud)

使用 100% CPU 时。

相比之下,在没有加密的情况下,我的写入速度接近 700 MB/s,读取速度约为 900 MB/s。

如图isainfo -v所示,aes 被传递到 VM。

# …
Run Code Online (Sandbox Code Playgroud)

zfs solaris encryption x86

2
推荐指数
1
解决办法
1465
查看次数

ARM 与 x86 上的 Linux 和 Android 应用程序

有大量基于 ARM 的低成本迷你设备问世(Cotton Candy 等)。其中一些仅适用于 Android,一些仅适用于 Linux,还有一些允许两种操作系统运行。

唯一的问题是:所有这些都是基于 ARM 的设备。虽然 Android 应用程序可以在 x86 和 ARM 上的 Android 上运行,但我很难找到在 ARM 上的 Linux 上运行的有用应用程序 - 事实上,即使是 ARM 上的 Ubuntu 仍然没有得到很好的支持。

我有两个相关的问题:

  1. 制作可以运行 Ubuntu/Linux 和相关 x86 应用程序的低成本 x86 设备难吗?
  2. Android 应用程序如何可以在 x86 和 ARM 上无缝运行,而 Linux 应用程序必须为 ARM 重新编译?

ubuntu arm android x86

2
推荐指数
1
解决办法
4487
查看次数

ld.so.preload 与 x86_32 和 x86_64 没有区别

— 众所周知,如果编译时支持 x86_64 内核,则可以使用 x86_64 内核运行 x86_32 程序。但是动态链接器不提供任何方法来为 32 位程序定义一组单独的预加载库,因此每次运行这样的程序时,如果您使用 x86_64 预加载,您将面临以下错误消息:

ERROR: ld.so: object '… … …' from /etc/ld.so.preload cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
Run Code Online (Sandbox Code Playgroud)

如果您将相同的 x86_32-libraries 列表放在那里进行预加载,您将使其工作,但所有纯 x86_64 运行也会开始抱怨。

显然,最好的方法是修改动态加载器以支持从单独的文件进行预加载,但这至少是一个漫长的过程。你能想到一些干净的解决方法吗?...

现在我正在考虑一些multi-class-pre-load.so,它可以自己加载所需的文件,但是,正如我所看到的,ELF 中没有“多类”支持。

dynamic-linking elf x86 dynamic-loading

2
推荐指数
1
解决办法
4583
查看次数

Debian 操作系统分区上的所有系统内存都不可用

我有一台装有 Windows 7 和 Debian 操作系统磁盘分区的计算机。登录 Windows 7 操作系统时可以看到该计算机具有 12GB 内存。但是,Debian 分区只能识别不到 4GB 的内存。为什么会这样,我该如何解决?

当我运行“free”命令时,我看到减少的 RAM 量,以及当我尝试在 Virtual Box 中创建虚拟机时,VM 允许的最大 RAM 以相同的低量结束。据我所知,(这不是说太多..)操作系统分区只是磁盘分区而不是 RAM 分区。

编辑:

运行 Debian 6 "Squeeze" 32 位

'free' 命令的输出

          total      used    free       ....
Mem:    3619800     386568   3233232    ...
-/+ buffers/cache:   66944   3552856  
Swap:    497972         0    497972   
Run Code Online (Sandbox Code Playgroud)

我没有安装 Gnome,所以我不确定如何截取屏幕截图。但是在 VirtualBox 中,你有一个为 VM 分配 RAM 的设置,在这个 Linux 分区上,该选项最大为 3584MB。

linux debian x86 ram

2
推荐指数
1
解决办法
984
查看次数

不同 32 位仿真模式之间的 GNU Linker 差异?

中的 386 位和 32 位选项有什么区别ld -V

  • elf32_x86_64
  • elf_i386
  • i386linux
  • i386pep
  • i386pe

而且,我在哪里可以找到有关这些“仿真模式”的文档

linker x86 ld

2
推荐指数
1
解决办法
3774
查看次数

内核为 BIOS 保留 CONFIG_X86_RESERVE_LOW 内存有什么意义?

由于至少是 2.6 内核,Kconfig 提供了选项 CONFIG_X86_RESERVE_LOW,描述为“为 BIOS 保留的低内存量,以千字节为单位”。(从我理解的物理地址 0 开始,范围从 4K 到 640K)

在我的系统上启动时,我的日志在启动过程即将开始时通知我:

BIOS-provided physical RAM map:
BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usable
Run Code Online (Sandbox Code Playgroud)

从中我推断 BIOS 告诉内核内存的第一个 0x9ebff (~640K) 字节是可用的。(未预留)

进一步几行,我可以阅读:

e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
Run Code Online (Sandbox Code Playgroud)

我理解我的设置的结果:CONFIG_X86_RESERVE_LOW = 4K

但是,考虑到 BIOS 本身断言 0-0x9ebff 范围是可用的,内核为 BIOS“保留”任何<~640K 的低内存量有什么意义?

memory configuration bios x86 linux-kernel

2
推荐指数
1
解决办法
766
查看次数

为了支持 ryzen 5000 系列处理器,必须对 linux 内核进行哪些更改?

AMD 在 2020 年为 linux 内核贡献了补丁,以使其在 ryzen 5000 系列处理器上运行。ryzen 5000系列处理器不实现x64 ISA吗?锐龙 5000 处理器与英特尔处理器和锐龙 3000 系列处理器有何不同?操作系统需要了解哪些特定于平台的行为才能在所有这些实现相同 ISA 的处理器上正确运行?为了支持 ryzen 5000 处理器,AMD 对 linux 内核做出了哪些改变?

cpu hardware x86 linux-kernel amd

2
推荐指数
1
解决办法
544
查看次数

我的英特尔 NUC7I3BNH 应该使用哪种 Debian 架构?

我试图为我的英特尔 NUC7I3BNH寻找正确的架构,但我并不聪明。哪种架构最合适 - amd64 或 i386?

64bit debian architecture x86 intel

1
推荐指数
1
解决办法
154
查看次数

在 linux 内核中找不到一些“asm”、“生成的”头文件的来源?

所以,我正在编写一个在内核空间中工作的模块。我的代码编译正确并且工作正常。

问题是有一些头文件,我在任何地方都找不到。这对我来说没有意义,为什么头文件不存在时一切正常。他们一定在某个地方。

这些是我在任何地方都找不到的一些头文件(还有更多,但对于我的问题,它们可能就足够了):

#include <asm/errno.h>
#include <asm/socket.h>  /* /include/linux/socket.h */
#include <stdarg.h>      /* /include/linux/kernel.h */
#include <asm/types.h>
#include <asm/mmiowb.h>  /* /include/linux/spinlock.h */
#include <asm/param.h>   /* /include/linux/jiffies.h */
Run Code Online (Sandbox Code Playgroud)

尽管x86在 .

而且我不知道在哪里查找这些文件:

#include <generated/timeconst.h>    /* /include/linux/jiffies.h */
#include <generated/bounds.h>
#include <generated/autoconf.h>     /* /include/linux/kconfig.h */
#include <generated/asm-offsets.h>
Run Code Online (Sandbox Code Playgroud)

我正在linux 内核 5.4.31的以下目录中查找这些文件:

/include
/include/uapi
/arch/x86/include
/arch/x86/include/uapi
Run Code Online (Sandbox Code Playgroud)

我希望可以在上述包含路径中找到这些文件。但是我对编译后处理 linux 头文件的位置和方式知之甚少,因为我在源代码中找到了它们。

linux c source x86 linux-headers

1
推荐指数
1
解决办法
980
查看次数

通常认为 Intel 或 AMD 处理器更适合 Linux

Intel 和 AMD 处理器在 Linux 的运行方式上有什么区别吗?特别是在性能、优化和驱动程序支持方面?

为了简单起见,我只是谈论普通主线内核。

performance cpu hardware x86

0
推荐指数
1
解决办法
2791
查看次数