理论探讨:构建一个用于1000张Micro SD卡同时读取的系统

返回 Level1Techs.com 跳至主要内容 Level1Techs Forums 注册 登录

理论探讨:构建一个用于最大化同时Micro SD卡读取的系统

Hardware Hub helpdesk 您已选择 0 个帖子。 选择全部 取消选择 3月7日 1 / 23 3月8日 5天前 bearsquarterly 10天 大家好!我正在寻求一些建议,以便改造一个系统,使其能够一次性从尽可能多的 Micro SD 卡中读取数据。

在工作中,我们需要处理大量的素材,我们需要从各种 SD 卡中获取这些素材,并将其上传并复制到本地服务器。目前,我们运行的是一个 Threadripper Pro 7965X 系统,该系统配备了许多 USB 扩展卡,这些扩展卡连接到包含 SD 卡读卡器的 USB 集线器。我认为目前我们可以在当前的设置下一次性处理大约 200 张卡。如果能将这个数字提高到尽可能高的水平,对我们来说是理想的。理想目标是接近一次性处理 1000 张卡。

我只是好奇是否有人知道,在现有的 Threadripper Pro 系统上,是否存在其他解决方案,我们尚未发现。例如,某种混合搭配的 PCIE 卡组合,可能会一次性解锁更多的 SD 卡槽。

如果需要,我可以提供更多详细信息,但我受到 NDA 的约束,可能无法回答具体问题。我不确定这是否可行,但我告诉我的老板我会四处打听一下是否有好的想法。谢谢! 3 回复

thetazman 常规用户 10天 bearsquarterly:

接近一次性处理 1000 张卡。

一台系统无法实现。

  1. USB 总连接设备数量为 250 到 270 个。我知道 LTT 之前做过一个相关视频。
  2. 在这么多设备同时尝试写入 SSD / HDD / NVMe 驱动器时,驱动器将会饱和,导致写入所有数据需要几天时间。我不确定低端 NAS 是否能做到。高端 NAS 具有大量的驱动器吞吐量,因此不会出现问题。

Kingdud 10天

根本问题在于 USB 是拥塞的。USB 的工作方式类似于老式的以太网集线器。每个进入的数据包都会重新广播到同一总线上的每个其他设备,并且来自给定控制器的每个 USB 端口/菊花链只会使总线变得越来越大,就像在集线器上添加集线器一样。延迟变得越来越严重,因为每个设备都必须等待轮到它在总线上说话,并且一次只能有一个设备说话。

因此,实际上,您需要创建一个自定义 PCB,其中包含 25 到 100 个 USB 控制器,用于您想要的 100 个 USB 设备。看看性能下降真正击中你的地方。每个控制器 4 个设备?1?7?一旦您知道在您的用例中,单个控制器可以处理多少个设备,您就可以开始设计(或让别人设计)一个自定义 PCB,它将具有足够的硬件来满足您的需求。

请记住,USB 控制器并不便宜。每个大约 1 美元到 3 美元。对于每个控制器,您还需要一个物理 USB 端口(它们不能共享,因为如前所述,总线架构)。这些也大约每个 1 美元。

下一个挑战是如何将所有数据从板上取下来。60MB/s * 1000 = 60,000 MBs。那是 60 GB/s。因此 100GB 光纤可以做到。但是,500 个 USB 端口所需的物理空间非常大,您可能最终会制造许多较小的设备并将它们联网在一起,而不是拥有一个带有 500 个端口的单一整体板(我假设您_至少_可以共享每个控制器 2 张卡而不会出现拥塞)。因此,您可能还需要在板上设计某种光纤通道/光纤以太网解决方案,以便您可以将所有这些设备插入交换机。如果构建仅从 20 张卡或更少卡中获取数据的单个板,以太网才真正有意义。(60 * 20 = 1200 MB/s,这正好是 10Gb 以太网的限制)。

无论哪种方式,您都需要某种基础设施级别的交换机来处理所有这些数据,其背板能够处理 100GB 的网络负载。

最后一部分是用于驱动所有这些控制器并保持它们工作、聚合数据并将数据发送到网络接口进行处理的自定义固件。加上您在服务器端使用的任何软件来提取 60GB 的数据并对其进行处理(这不是一件容易的事)。

正如您所看到的,这是一个极其复杂的项目,需要按要求完成。另一种选择是购买大量的廉价迷你 PC 或树莓派,并将它们视为 5 美元的 MicroSD 卡读卡器。您最终会花费大量资金来为这 100 多个设备购买电源和网络设备,但这也有效。

如果您确实选择了 100 个树莓派路线,请购买台式电源,并使用它创建一个公共总线,该总线驱动大约 20-30 个树莓派,而不是为每个树莓派都配备一个壁式适配器。这将大大提高效率。

由于如此多的设备靠得如此之近,Wifi 实际上无法工作,因此预计必须使用某种物理网络,因此每个树莓派都需要一个以太网帽。 2 bearsquarterly 10天 感谢您详尽的回复!这或多或少是我期望听到的,但我想尽到我的职责。这肯定超出了我的实施能力(我实际上只是组装计算机),但我会提出迷你 PC 的想法。我认为现实的选择是,如果他们想同时读取更多的卡,他们只需要拥有更多像第一个这样的设置。

谢谢! Murphy_Walker 10天

我想说,理论上可以通过 PCIe 以某种方式实现。

需要大量的 PCIe-SD 控制器和一个 PCIe 交换机树。 ozlay 10天

SD 复制器也是一种东西。如果您想一次性擦除 200 张 SD 卡,您可能会从中受益。 ThisMightBeAFish 10天 bearsquarterly:

理想目标是接近一次性处理 1000 张卡。

为什么?说真的,为什么?这是关于一些有趣的幻想构建?还是一个严肃的问题?

如果是后者,您目前正在使用什么?有哪些限制? bearsquarterly 10天

现在我们有一个 threadripper pro 7965x,它运行 pcie USB C 卡,这些卡连接到运行 SD 卡读卡器的集线器

我们每周在数百个摄像头上录制数百小时的素材,所有这些摄像头都录制到 micro sd 卡上。

因此,目前,我们可以在一个系统上一次上传大约 200 张卡。这个系统现在的限制是我们拥有的主板只能容纳 6 个 PCIe 卡。并且根据其他回复之一,我们可能会遇到某种瓶颈,因为所有这些都在 USB 上运行,但这尚未发生。 3 回复 1 Murphy_Walker 1 10天

我认为你可以使用 PCIe 交换机。每个 PCIe 插槽将连接到主干上的 PCIe 交换机,下游有 N 个分支。

类似于这样的东西,只是在一张卡上:Microchip Switchtec™ PFX/PSX Gen 5 Fanout PCIe® Switch Family 17

最大的型号具有 100 个 PCIe5 通道,可以分成 52 个端口。

因此,对于你的 Threadripper 上的每个端口有 16 个 PCIe5 通道,你可以有 50 个下游端口 PCie5x1

或者你可以使用带有大量 MCIO-FF-TA1016 连接器(每个连接器都为电缆携带 PCIe5x8)的 EPyc 主板:

ASRock Rack GENOA2D24G-2L+ 13

在此类 PCIe5x8 电缆上使用这样的交换机可以让你获得更宽的树…

双 EPYC 系统主板将为你提供更多的通道… :roll_eyes: xzpfzxds 可靠用户 10天 bearsquarterly:

threadripper pro 7965x

对于此任务,您需要那么多的 CPU 性能吗?您可以用相同的成本获得 2 或 3 台具有相同数量 PCIe 通道(但 3.0/4.0,而不是 5.0 - 但我假设您的 USB 卡不是 PCIe 5.0)的 Naples/Rome EPYC 机器,如果您购买二手产品,则可以获得更多。 Murphy_Walker 1 bearsquarterly 10天

哦,还有一件事 - 关于 PCIe5 交换机,有一个新成员 - Kandou。

他们的超小型 PCIe "Zetti" 31 交换机总共只有 6 个通道。

这是一个奇怪的小型(可能超便宜的)交换机,可能正是你需要的。

你可以将这些 PCIe5 通道分成 PCIx5 端口,并使用一个 Zetti 交换机将每个端口转换为 4 或 5 个 PCIe3x1 端口,你可以将它们用于你的 PCie->SD 桥接…

如果这还不够,你可以通过 Microchip 或 Broadcom 的几个大型 PCIe5 100+ 通道交换机在之前拆分这些主机 PCI5 端口… thetazman 常规用户 10天

另一个想法是,是否可以将任何摄像机连接到您的网络,然后将文件保存到/或上传到网络共享? ThisMightBeAFish 9天 bearsquarterly:

因此,目前,我们可以在一个系统上一次上传大约 200 张卡。

所以你现在同时插入 200 张 SD 卡,然后写入到哪里?本地计算机还是某个网络共享?

你获得的速度是多少?速度是问题吗?还是只能插入 1000 张 SD 卡? TryTwiceMedia 9天

你需要 GPU 挖矿主板。

rBVap2FtL4-AXhfBAAm9Xpq2QgM895rBVap2FtL4-AXhfBAAm9Xpq2QgM8951075×637 76.8 KB

18 个 x1 插槽,因此你可以在每个主板上托管 18 个 USB 卡。一个 x16 插槽用于快速 NIC。这可以为你提供所需的端口,因为 USB 具有固有的限制(如上所述),因此解决它的唯一方法是更多的 USB 控制器(如上所述)。

这可以合理地为你提供每张卡 400 MB/s 的提取速度,这正是你想要同时卸载 2 张高性能 SD 卡的速度。

因此,你有 36 张 SD 卡以 7200 MB/s 的速度提取,而无需链接。

要将其从设备上取下,需要 100 Gb 以太网和一个邪恶的 NAS。

这将让你在 20 秒内转储一个 4GB 的视频文件。最难的部分将是保持它的供应,因为你将不停地更换卡片。

添加一些链接以增加循环时间和降低带宽,你可以轻松地击败当前的设置。合理地说,此设置的成本低于 1000 美元。 4 TryTwiceMedia 9天

现在,你可以减轻这种情况的最佳方法是像我们一样,将所有内容从摄像机传回中央服务器。

你可以使用光纤或普通的 ip over ethernet。SDI 在机架外已经死了。显然,你仍然希望在发生丢帧时在本地录制。但这可以无限扩展。

除非你正在拍摄外部纪录片/真人秀风格的工作负载,否则这是一种卓越的方法,因为一条蛇可以保持一切供应,并且你的时间同步更容易维护,因为它是在 cam op 处捕获的。 WillR 7天

你多久进行一次这些提取?坦率地说,听起来你的公司通过不联网其摄像机并 1) 要求物理访问和干预来保存数据,以及 2) 允许物理访问完全破坏数据,从而使自己陷入了一个疯狂的不必要的问题。

你能错开提取吗?这意味着,如果你现在每周都这样做,而不是每周同时进行 1000 次,而是每天进行 200 次?

另一个想法,你是否运行了基准测试来查看尝试一次进行 200 次是否实际上比 50 次甚至 10 次更快