小编GP9*_*P92的帖子

为什么 nvme 有字符设备和块设备?

我正在尝试了解 nvme 的配置。

但我不明白为什么有两个设备:nvme 块和 nvme 字符设备:

crw------- 1 root root 243, 0 Dec 12 16:09 /dev/nvme0
brw-rw---- 1 root disk 259, 0 Jan 14 01:30 /dev/nvme0n1
Run Code Online (Sandbox Code Playgroud)

每个的目的是什么或何时使用它们?

device block-device nvme

12
推荐指数
2
解决办法
7622
查看次数

在 NFS 共享中复制文件是否涉及网络?

我假设使用以下方法在 NFS 共享中复制文件:

流程一:

  • 客户端请求从 NFS 共享复制数据(如果缓存不存在),数据块会异步复制到 NFS 客户端的内存,然后再次异步将其发送到 NFS 文件管理器以复制到新位置。
  • NFS 文件管理器在内存中异步接收数据块并将其写入新位置。
  • 在这个过程中,虽然读和写都会涉及到网络,但由于读写是异步的,整个读写操作的延迟将与整个数据的读写操作的延迟相同。

因此,从本地硬盘读取并写入NFS与从NFS读取并写入NFS几乎相同。

第一步,如果缓存已经存在,那么读取速度会非常快。

流程2:

  • 客户端向 NFS 服务器发送启动数据复制操作的请求,以及必须读取的位置和必须写入的位置(似乎不是)。
  • 服务器使用它自己的内存来完成其余的读写操作。

因此,不涉及网络。因此,可以有更好的性能(除非网络端没有延迟),但它可能不是这样的。

如果我错了,请随时纠正我。

另外,内存是否涉及每个操作,我的意思是当它通过网络发送数据时,数据首先从磁盘发送到内存(数据缓冲区),然后从内存(数据缓冲区)发送到数据缓冲区(在网络的另一侧)网络),但不是从数据缓冲区到网络另一端的磁盘,对吗?

performance memory nfs dd transfer

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

ionice对NFS客户端有影响吗?

我需要在 NFS 共享上递归删除数百万个目录,为了避免任何性能问题,我运行了以下命令:

ionice -c 3 -t find /dir -type f -exec rm {};

这将删除所有文件和剩余的空目录,我可以使用 rm -rf 删除。

但我无法说 ionice 对上述命令是否有任何影响。

来自 man,ionice 3 级:

仅当没有其他程序在定义的宽限期内请求磁盘 io 时,以空闲 io 优先级运行的程序才会获得磁盘时间。空闲 io 进程对正常系统活动的影响应该为零。

从源代码中,我看到 ionice set ioprio_set

那么,ioprio_set 是什么?

ioprio_get() 和 ioprio_set() 系统调用分别获取和设置一个或多个线程的 I/O 调度类和优先级。

这是否意味着进程线程带有额外的属性供 I/O 调度程序使用它们来调度进程的 I/O?

这向我提出了以下问题:

  • I/O 调度程序通常知道磁盘上的 I/O 负载还是只是将 I/O 调度到磁盘?
  • 如果是这种情况,即 I/O 调度程序了解磁盘上的负载并据此做出决策,我认为 IO 调度类和优先级不会对远程磁盘的 IO 调度产生任何影响。因此 ionice 不会产生任何效果。
  • 如果不是,我认为 IO 调度类和优先级可能会对远程磁盘(也如 NFS)的 IO 调度产生影响。因此,如果多个用户/进程使用相同的 NFS 磁盘,ionice 将会工作,其中 I/O 调度程序根据其他用户/进程是否使用相同的 NFS 磁盘来为给定线程调度 IO。

如果我完全错了,请纠正我。 …

nfs io ionice scheduling scheduler

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

fio 测试中的 iodepth 到底是什么意思?是队列深度吗?

我了解队列深度,即存储控制器可以处理的未完成 I/O 请求的数量(https://www.tomshardware.com/reviews/ssd-gaming-performance,2991-3.html)即,这是对处理 I/O 请求并将命令发送到磁盘 (r/w) 的存储控制器的限制,如果有超过它可以处理的请求(将由客户端重新提交),它(不严格?)会丢弃请求想必)。

并且具有高过期 I/O 请求的原因可能是多个客户端连接请求 I/O 或多个进程甚至来自请求 I/O 的单个主机(我认为,但似乎操作系统使用 I/O 调度程序合并 I/O O 请求 - 在执行定期或按需同步时源自缓冲区,并且仅发送固定数量的过期请求,以便它不会使存储设备过载?)

现在,来到 fio 手册页中 iodepth 的定义:

要针对文件保持运行的 I/O 单元数。请注意,将 iodepth 增加到 1 以上不会影响同步 ioengines(使用 verify_async 时的小度数除外)。

这符合我对队列深度的理解。如果 IO 是同步的(阻塞 IO),我们只能有一个队列。

即使是异步引擎也可能施加操作系统限制,导致无法实现所需的深度。在 Linux 上使用 libaio 并且未设置“direct=1”时可能会发生这种情况,因为缓冲 I/O 在该操作系统上不是异步的。

对这整个声明感到困惑。

密切关注 fio 输出中的 I/O 深度分布,以验证实现的深度是否符合预期。默认值:1。

我为每种 iodepth 和设备类型运行了多个测试,有 22 个并行作业,因为 CPU 数量为 24,并且使用 rwtype:顺序读取和顺序写入。Iodepths 是 1,16,256,1024,32768(我知道 32 或 64 应该是最大限制,我只是想尝试一下)。

对于所有深度和所有磁盘(RAID 6 SSD、NVME 和 NFS),结果几乎相同:除了在 32768 深度的 NVME 磁盘上顺序读取。

IO …
Run Code Online (Sandbox Code Playgroud)

io nvme

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

LDAP 和 SNMP 之间有什么关系吗?没有 LDAP 可以存在 SNMP 吗?

我知道 SNMP 是一种用于远程管理(查看/更新)系统资源信息的协议,而 LDAP 是一种用于访问和使用目录服务信息的协议。

但是这两种协议之间有任何关联吗?一个依赖另一个吗?如果我需要彻底了解 LDAP,我是否需要了解 SNMP?

我问这个的原因是我试图了解什么是 LDIF,在这里谈论它时,此页面中有 SNMP 语法的参考:https : //docs.oracle.com/cd/E10773_01/doc/oim.1014 /e10531/schema_overview.htm

directory-services ldap snmp

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