我的理解是,一些 Openstack 组件使用 RabbitMQ 服务(使用 RPC 协议)进行通信,而其他组件使用 REST API、数据库查询等进行通信。
但是当我检查 rpcinfo -p 时,它没有列出任何与 RabbitMQ/openstack 相关的服务。
rpcinfo(例如:NIS、NFS 等)中显示的服务的通信机制与 RabbitMQ/Openstack 服务有什么区别?
我的理解是,一些 Openstack 组件使用 RabbitMQ 服务(使用 RPC 协议)进行通信,而其他组件使用 REST API、数据库查询等进行通信。
但是当我检查 rpcinfo -p 时,它没有列出任何与 RabbitMQ/openstack 相关的服务。
rpcinfo(例如:NIS、NFS 等)中显示的服务的通信机制与 RabbitMQ/Openstack 服务有什么区别?
我了解队列深度,即存储控制器可以处理的未完成 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 请求 - 在进行定期或按需同步时源自缓冲区,并且仅发送固定数量的 outstading 请求,这样就不会使存储设备过载?)
现在,来到 fio 手册页中 iodepth 的定义:
要针对文件保持运行的 I/O 单元数。请注意,将 iodepth 增加到 1 以上不会影响同步 ioengine(使用 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 depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=99.9%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0%
对于 32768 深度的 NVME,
complete : 0=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=100.0%
我在 fio 中使用了 libaio 引擎(因为我不确定我需要为异步 I/O 测试提供什么 IO 引擎,而 libaio 似乎是正确的。这完全是一个不同的问题)
发生什么了?为什么提交并完成显示 1-4 (除了一次运行的 NVME >64)
[global]
lockfile=none
kb_base=1024
fallocate=posix
blocksize=64k
openfiles=100
ioengine=libaio
buffered=1
invalidate=1
loops=5
randrepeat=1
size=512M
numjobs=22
[sr-iodepth-1]
description="Sequential Write,Parallel jobs-22,IO depth-1,libaio"
readwrite=write
size=5G
iodepth=1
[sr-iodepth-16]
description="Sequential Write,Parallel jobs-22,IO depth-16,libaio"
readwrite=write
size=5G
iodepth=16
[sr-iodepth-256]
description="Sequential Write,Parallel jobs-22,IO depth-256,libaio"
readwrite=write
size=5G
iodepth=256
[sr-iodepth-1024]
description="Sequential Write,Parallel jobs-22,IO depth-1024,libaio"
readwrite=write
size=5G
iodepth=1024
[sr-iodepth-32768]
description="Sequential Write,Parallel jobs-22,IO depth-32768,libaio"
readwrite=write
size=5G
iodepth=32768
[sw-iodepth-1]
description="Sequential Read,Parallel jobs-22,IO depth-1,libaio"
readwrite=read
size=512M
iodepth=1
[sw-iodepth-16]
description="Sequential Read,Parallel jobs-22,IO depth-16,libaio"
readwrite=read
size=512M
iodepth=16
[sw-iodepth-256]
description="Sequential Read,Parallel jobs-22,IO depth-256,libaio"
readwrite=read
size=512M
iodepth=256
[sw-iodepth-1024]
description="Sequential Read,Parallel jobs-22,IO depth-1024,libaio"
readwrite=read
size=512M
iodepth=1024
[sw-iodepth-32768]
description="Sequential Read,Parallel jobs-22,IO depth-32768,libaio"
readwrite=read
size=512M
iodepth=32768
如果 hal 真的在使用还是只是 udev,我很困惑。
我的理解:
一般来说,HAL 是一个抽象层,它允许操作系统与硬件设备进行交互。
daemon hald 与 HAL 不同。它是一种提供 HAL 的服务,用于识别设备,然后安装它们(以及它们将在哪里,在 /dev 下?)或自动配置它们以供应用程序使用。
它现在被 udev 弃用,它也做了类似的事情,即通过读取来自内核的消息并根据预定义的规则命名来自动挂载连接的设备。
目前只有少数基于 GUI 的应用程序,如 GNOMe 使用暂停,以获取有关新连接设备的通知(而安装仍然由 udev 负责?)
所以我的问题是,如果 hal 仅用于通知基于 GUI 的应用程序有关新连接的硬件,因为它可以通过 DBUS 进行通信,但 udev 没有 dbus 实现。而对于自动挂载设备,只有 udev 这样做,而没有使用 hal?
我特别在谈论 Redhat 5,6 和 7。
谢谢。
我正在尝试了解 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
每个或何时使用它们的目的是什么?
我认为 snmpbulkget 的行为类似于 snmpget,只是它可以支持多个 oid 请求。但我看到奇怪的行为。它提供下一个 OID 信息而不是询问的内容:
snmpbulkget -Cr1 servername IF-MIB::ifSpeed.7.0 IF-MIB::ifInOctets.7 IF-MIB::ifInUcastPkts.7 IF-MIB::ifInNUcastPkts.7 IF-MIB::ifInNUcastPkts.7 IF-MIB::ifInDiscards.7 IF-MIB::ifInErrors.7 IF-MIB::ifOutOctets.7 IF-MIB::ifOutUcastPkts.7 IF-MIB::ifOutNUcastPkts.7 IF-MIB::ifOutDiscards.7 IF-MIB::ifOutErrors.7
IF-MIB::ifSpeed.8 = Gauge32: 10000000
IF-MIB::ifInOctets.8 = Counter32: 3674120514
IF-MIB::ifInUcastPkts.8 = Counter32: 2462391943
IF-MIB::ifInNUcastPkts.8 = Counter32: 19169575
IF-MIB::ifInNUcastPkts.8 = Counter32: 19169575
IF-MIB::ifInDiscards.8 = Counter32: 0
IF-MIB::ifInErrors.8 = Counter32: 775777
IF-MIB::ifOutOctets.8 = Counter32: 3824588280
IF-MIB::ifOutUcastPkts.8 = Counter32: 2866781089
IF-MIB::ifOutNUcastPkts.8 = Counter32: 0
IF-MIB::ifOutDiscards.8 = Counter32: 0
IF-MIB::ifOutErrors.8 = Counter32: 0
为什么?
据我了解,
mem_free
可以指定在具有可用内存 = 的主机中提交作业mem_free
,而 h_vmem
是作业可以消耗的内存的硬限制,如果作业达到h_vmem
,作业会崩溃?我认为我们可以将h_vmem
主机的总物理内存设置为接近总物理内存,这样作业就不会开始使用交换并减慢服务器速度。那是什么h_rss
?它似乎与的定义相同h_vmem.
还是我误解了h_vmem
?h_vmem
用于保留它可能需要的额外内存而不是所需的最小内存()mem_free
?但是如果超过内存不要崩溃,所以作业可以超过h_vmem
?
如果我的第二种解释h_vmem
是正确的,那么我猜,对于要在主机中提交的作业,该作业必须同时满足mem_free
和h_vmem
(给定h_vmem
不是 INFINITY)。
如果我的第一个解释h_vmem
是正确的,那么我想,对于要在主机中提交的作业,该作业可以mem_free
单独满足而无需满足h_vmem
,因为它只保留可用空间,如果没有可用空间,它没关系?
我们需要专门用于 HPC Lustre 故障转移设置的存储,其中两台服务器必须共享相同的块级存储才能进行故障转移配置。
由于对硬件的了解非常有限,我有以下理解:
但是,在发布问题时,我在想,如果我们尝试让一台直接连接的服务器(主服务器)和另一台通过网络连接的服务器(故障转移),我们可能会在 NAS 的速度上妥协,所以我们只有在主服务器时才会遇到缓慢停止工作。
我正在尝试查找远程 HP 服务器中的 RAID 级别和存储控制器。
我可以找到以下详细信息,即存储控制器、磁盘大小、型号等。
但是如何确定突袭是否处于活动状态以及是否是哪个突袭?
再澄清一点,我需要在这里:所以,我读到的raid可以用两种方式定义:硬件和软件。
所以,我猜硬件是指存储控制器。我们的是:
description: RAID bus controller
product: Smart Array Gen9 Controllers
更多信息:
# hwinfo --storage
185: PCI 1f.2: 0106 SATA controller (AHCI 1.0)
[Created at pci.319]
Unique ID: w7Y8.AWGP+VY_LGA
SysFS ID: /devices/pci0000:00/0000:00:1f.2
SysFS BusID: 0000:00:1f.2
Hardware Class: storage
Model: "Intel SATA controller"
Vendor: pci 0x8086 "Intel Corporation"
Device: pci 0x8d02
SubVendor: pci 0x103c "Hewlett-Packard Company"
SubDevice: pci 0x8030
Revision: 0x05
Driver: "ahci"
Driver Modules: "ahci"
I/O Ports: 0x4058-0x405f (rw)
I/O Ports: 0x407c-0x407f (rw)
I/O Ports: 0x4050-0x4057 (rw)
I/O Ports: 0x4078-0x407b (rw)
I/O Ports: 0x4020-0x403f (rw)
Memory Range: 0x93100000-0x931007ff (rw,non-prefetchable)
IRQ: 211 (2357394 events)
Module Alias: "pci:v00008086d00008D02sv0000103Csd00008030bc01sc06i01"
Driver Info #0:
Driver Status: ahci is active
Driver Activation Cmd: "modprobe ahci"
Config Status: cfg=new, avail=yes, need=no, active=unknown
187: PCI 300.0: 0104 RAID bus controller
[Created at pci.319]
Unique ID: svHJ.ccZlDNM+DaD
Parent ID: vSkL.TK0GkKDmr11
SysFS ID: /devices/pci0000:00/0000:00:01.0/0000:03:00.0
SysFS BusID: 0000:03:00.0
Hardware Class: storage
Model: "Hewlett-Packard Company RAID bus controller"
Vendor: pci 0x103c "Hewlett-Packard Company"
Device: pci 0x3239
SubVendor: pci 0x103c "Hewlett-Packard Company"
SubDevice: pci 0x21c0
Revision: 0x01
Driver: "hpsa"
Driver Modules: "hpsa"
Memory Range: 0x92f00000-0x92ffffff (rw,non-prefetchable)
Memory Range: 0x93000000-0x930003ff (rw,non-prefetchable)
I/O Ports: 0x3000-0x3fff (rw)
Memory Range: 0x93200000-0x9327ffff (ro,prefetchable,disabled)
IRQ: 16 (no events)
Module Alias: "pci:v0000103Cd00003239sv0000103Csd000021C0bc01sc04i00"
Driver Info #0:
Driver Status: hpsa is active
Driver Activation Cmd: "modprobe hpsa"
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #153 (PCI bridge)
如您所见,有两种:SATA 和 RAID。从 lshw 输出中,我可以确认所有存储驱动器都在 RAID 控制器下。SATA 控制器用于光驱等。
有两个驱动器 sda (900GB) 和 sdb (4.1TB)。
# dmraid -r
no raid disks
# dmraid -s
no raid disks
但,
# cat /sys/block/sda/device/raid_level
RAID 1(1+0)
# cat /sys/block/sdb/device/raid_level
RAID 5
突袭是否活跃?
我是这样想的。如果我错了,请纠正我:
支持硬件raid,但它不活跃,因为raid磁盘没有设置。软件突袭处于活动状态。因此,sda 中的 RAID 1(1+0) 和 sdb 中的 RAID 5。
如果允许我再问一个问题:
我不明白软件突袭是如何工作的,我猜它的优势只在于数据恢复。由于它只使用一个磁盘,它不能进行故障转移或冗余等,对吧?而且,这似乎没有必要,因为它只会增加数据大小和时间。
如果我错了,请纠正我。
提交简单的交互式作业以打开 shell 时出现以下错误:qrsh -V -cwd -verbose -q nsnel6.q -l h_vmem=12.000G tcsh
local configuration arslox51 not defined - using global configuration
Your job 8450878 ("tcsh") has been submitted
waiting for interactive job to be scheduled ...timeout (5 s) expired while waiting on socket fd 4
Your "qrsh" request could not be scheduled, try again later.
在未指定资源的情况下提交作业成功。
我也检查了资源,它们是可用的。他们有 30 多台主机,许多作业正在运行。但资源绰绰有余。
qsub 使用相同的资源,但只有 qrsh 面临这个问题。只有极少数情况下它在 qrsh 中工作。
与此错误有关local configuration arslox51 not defined - using global configuration
吗?还有这个错误是关于什么的?
我的 SGE 版本是 6.1
根据 SGE 5.3 手册,
Slots - 可以在该队列中同时执行的作业数
我对这些概念很陌生,想从一一理解开始。
假设,如果 RAM 为 10G,如果有 10 个插槽,因此每个插槽 1G,那么是否只能运行小于 1G 的作业?如果这项工作只需要一些 0.5G,那将浪费该插槽中剩余的 0.5G 对吗?如果是这样,那么如果没有资源优化,那么网格有什么用呢?
而如果一个2G的job在多个slot之间共享,这叫parallel job还是normal job呢?
SGE v5.3 和 v6.0 及更高版本中的队列和插槽概念有什么区别吗?