我不太确定这是否是提出此问题的正确位置,如果不是,请随时将其迁移到适合它的任何地方。
我正在我的实验室机器上的 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) 有大量基于 ARM 的低成本迷你设备问世(Cotton Candy 等)。其中一些仅适用于 Android,一些仅适用于 Linux,还有一些允许两种操作系统运行。
唯一的问题是:所有这些都是基于 ARM 的设备。虽然 Android 应用程序可以在 x86 和 ARM 上的 Android 上运行,但我很难找到在 ARM 上的 Linux 上运行的有用应用程序 - 事实上,即使是 ARM 上的 Ubuntu 仍然没有得到很好的支持。
我有两个相关的问题:
— 众所周知,如果编译时支持 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 中没有“多类”支持。
我有一台装有 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。
中的 386 位和 32 位选项有什么区别ld -V?
elf32_x86_64elf_i386i386linuxi386pepi386pe而且,我在哪里可以找到有关这些“仿真模式”的文档
由于至少是 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 的低内存量有什么意义?
AMD 在 2020 年为 linux 内核贡献了补丁,以使其在 ryzen 5000 系列处理器上运行。ryzen 5000系列处理器不实现x64 ISA吗?锐龙 5000 处理器与英特尔处理器和锐龙 3000 系列处理器有何不同?操作系统需要了解哪些特定于平台的行为才能在所有这些实现相同 ISA 的处理器上正确运行?为了支持 ryzen 5000 处理器,AMD 对 linux 内核做出了哪些改变?
我试图为我的英特尔 NUC7I3BNH寻找正确的架构,但我并不聪明。哪种架构最合适 - amd64 或 i386?
所以,我正在编写一个在内核空间中工作的模块。我的代码编译正确并且工作正常。
问题是有一些头文件,我在任何地方都找不到。这对我来说没有意义,为什么头文件不存在时一切正常。他们一定在某个地方。
这些是我在任何地方都找不到的一些头文件(还有更多,但对于我的问题,它们可能就足够了):
#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 头文件的位置和方式知之甚少,因为我在源代码中找到了它们。
Intel 和 AMD 处理器在 Linux 的运行方式上有什么区别吗?特别是在性能、优化和驱动程序支持方面?
为了简单起见,我只是谈论普通主线内核。