0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

低延迟SSD上的快速图处理

SSDFans 来源:SSDFans 2023-10-12 09:12 次阅读

一、背景

图处理在社交媒体、导航、推荐等领域应用广泛。很多场合下图数据往往非常大以至于难以在单个机器的内存中存储。分布式图处理选择将图数据存储在分布式集群的内存中;而与分布式图处理不同,外部图处理系统选择在单台机器上利用二级存储来辅助存储图数据,同时也能提供与分布式图处理相近或更优的性能。外部图处理系统根据存储方式可以进一步分为半外部系统和全外部系统。前者将图数据中的顶点数据存储在内存、边数据存储在SSD中;后者则将两者都存储在SSD中。本文提出的Blaze就属于半外部系统。

二、问题

8587359e-688f-11ee-939d-92fbcf53809c.png

尽管现在新兴的快速NVMe SSD提供了比过去的SSD更高的带宽,但是现有的半外部图处理系统不能充分利用这些快速SSD带来的性能提升。本文通过实验(上图)发现主要问题为IO利用率低下,可以看出在两个代表性的半外部处理系统中除了BFS算法以外其他例程的执行中IO带宽(柱)都远未达到快速SSD的最大带宽(红线)。

本文作者认为IO利用率低下的原因主要包含3个方面:计算倾斜、IO倾斜、IO快计算慢。

1. 计算倾斜

并行图处理系统需要同步机制来避免并发更新算法相关的顶点数据时出现竞争。现有的半外部图处理系统FlashGraph采用消息机制来解决同步问题,它为每个顶点分配了一个消息队列,并按照顶点ID将每个顶点分派给一个计算线程。图算法迭代性地执行,在执行的每一个迭代中顶点间通过消息通信;在迭代结束的时候系统处理这些消息,并根据处理的结果更新顶点数据。

对于FlashGraph而言,由于图结构服从照幂律分布,一些线程需要比其他的处理更多消息,即计算倾斜。而(下一迭代的)IO必须得等待这种落伍线程完成处理才能开始。快速SSD在本轮迭代中的IO操作很可能比这个落伍线程完成的早,导致其空闲。

下图的实验证明快速SSD(Optane SSD)相较于低速SSD(图中NAND SSD)带来的带宽提升(红线为磁盘最大读取带宽)确实造成了上述问题,造成了IO更多的空闲。

85a2838a-688f-11ee-939d-92fbcf53809c.png

2. IO倾斜

为了更大的容量和带宽,一些半外部图处理系统会将边数据分布在多块磁盘中。而当IO负载不均的时候显然会造成部分磁盘比其他磁盘完成IO更慢而造成其他磁盘的空闲。

另一个半外部图处理系统Graphene采用了一种2D图分区技术以将边均匀地分配到每个分区,并将这些分区均匀分布到多个磁盘上。尽管其分布均匀,但是Graphene在执行采用了边数据选择性调度的算法的时候仍然受IO倾斜的影响。

下图中的实验证实了上述问题,图中纵轴表示每轮迭代中各个磁盘间最大IO量减去最小IO量。尽管均匀分布的数据集可能有着低于1MB的倾斜,但对于其他幂律分布的图则有着最大可达100MB的倾斜。

85b2ddc0-688f-11ee-939d-92fbcf53809c.png

3. IO快计算慢

Graphene为每个SSD分配了一个计算核心和一个IO核心,对于慢速SSD而言这样的设计可以最大化IO带宽;然而对于快速SSD而言这样的设计导致计算速度比IO更慢,IO填满缓冲区的速度比计算使用的速度更快,导致缓冲区填满后IO必须等待新的缓冲区。

下图中的实验对比了计算的速度和存储设备的读取带宽,可以看出计算的速度比快速SSD要慢得多,证明了上述问题。

85ce369c-688f-11ee-939d-92fbcf53809c.png

三、设计

1. Online binning

Blaze采用名为Online binning的机制应对计算倾斜的问题。Bin是存储在内存中的数据结构,存储了多条bin record,而bin record则是包含顶点ID和一个数值。Blaze在算法执行时根据目标顶点ID和用户定义的scatter函数的返回值创建bin record,然后对顶点ID取模计算出需要进入的bin ID。填满的bin被推入名为full_bins的并发队列,由gather线程取出处理。每个gather线程独自处理一个填满的bin,以避免同步开销。

2. 页面交织

为了应对IO倾斜的问题,Blaze采用了页面交织的存储方式来存储边数据。页面交织基本类似RAID 0的方式。Blaze将CSR格式存储的边数据以4KB粒度交织分布到多个SSD上。

3. Blaze整体执行流程

85dbaf7a-688f-11ee-939d-92fbcf53809c.png

图算法一般按迭代执行,上图提供了Blaze中每轮迭代中的处理流程。

作为输入之一,算法程序会提供需要处理的顶点ID。为了接下来访问各个顶点的边列表,Blaze在第1步发动所有可用的线程将顶点ID集合转换成其边列表所在的磁盘页面ID集合(即page frontier内容)。转换完成后根据其磁盘页面ID从SSD中访问数据,写入到空的IO buffer中,生成满的IO buffer。Scatter线程取出填满的IO buffer,计算并生成bin record装入对应的bin,并将用完的IO buffer还给空IO buffer池。Gather线程取出填满的bin并处理,根据处理结果修改算法相关的顶点数据。最后返回下一个迭代所需要处理的顶点集合。

四、实验评估

1. 实验设置

实验测试平台是一台单处理器Intel Xeon Gold 6230,20核心,禁用超线程),96GB内存的机器,存储配置了一块960GB的快速SSD(Intel DC P4800X)。

对比的算法包含:BFS、PageRank、WCC、稀疏矩阵乘(SpMV)、BC。

数据集如下表所示:

85f980a4-688f-11ee-939d-92fbcf53809c.png

2. 系统对比

本文将Blaze与FlashGraph和Graphene分别作了对比计算了加速比,加速比如下图所示(Graphene没有实现BC算法所以没做对比)。除了sk2005数据集中FlashGraph表现更优以外总体都有一定提升。sk2005数据集上的处理有着更高的局部性,FlashGraph的LRU页面缓存借此减少了存储访问,而Blaze并没有针对页面缓存做专门的优化。

860d4210-688f-11ee-939d-92fbcf53809c.png

3. IO利用率

IO利用率的评估如下图所示,可以看出Blaze的平均IO带宽基本达到快速SSD的带宽。

8618ede0-688f-11ee-939d-92fbcf53809c.png

4. 可扩展性

实验表明Blaze的性能大致随着核心数的增加而线性增长,除了少部分负载下(如sk2005上的BFS)较快地饱和了IO带宽而不能扩张其性能。

862b70d2-688f-11ee-939d-92fbcf53809c.png

五、总结

本文提出了一个新的半外部图处理系统Blaze。Blaze采用了全新的scatter-gather技术,online binning,解决了现有半外部图处理系统应用快速SSD后不能充分利用其高带宽的问题。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18275

    浏览量

    222158
  • CSR
    CSR
    +关注

    关注

    3

    文章

    117

    浏览量

    69430
  • SSD
    SSD
    +关注

    关注

    20

    文章

    2689

    浏览量

    115493
  • BFS
    BFS
    +关注

    关注

    0

    文章

    9

    浏览量

    2129

原文标题:Blaze:低延迟SSD上的快速图处理

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Xilinx FPGA高性能NVMe SSD主机控制器,NVMe Host Controller IP

    NVMe Host Controller IP1介绍NVMe Host Controller IP可以连接高速存储PCIe SSD,无需CPU和外部存储器,自动加速处理所有的NVMe协议命令,具备
    发表于 03-27 17:23

    路由器延迟高怎么回事 路由器延迟高怎么解决?

    问题。 二、路由器高延迟的原因 1.硬件问题:路由器本身的硬件可能存在问题,例如老化、过热、不足的处理能力等,都可能导致延迟增加。 2.网络拥堵:如果网络中有大量用户同时使用,或者有大量数据流通过路由器,网络拥堵就
    的头像 发表于 02-19 11:46 6396次阅读

    Splashtop如何提供快速连接和低延迟

    为了使远程访问按预期运行,用户需要尽可能减少延迟,这既是为了提高用户体验,也是为了增强一般性能。延迟令人沮丧,影响工作。在进行VoIP 或视频通话时,音频不同步会导致沟通不畅,令人感到沮丧。
    发表于 01-04 10:53 144次阅读
    Splashtop如何提供<b class='flag-5'>快速</b>连接和低<b class='flag-5'>延迟</b>

    Splashtop如何提供快速连接和最小延迟

    远程访问软件非常适合日常知识工作者,但是对于需要精确、资源密集型软件的团队成员来说,这增加了流程的复杂性。远程访问软件严重依赖网络速度和最小延迟,因此当出现延迟时,这可能会使工作更具挑战性。
    的头像 发表于 12-26 10:30 218次阅读
    Splashtop如何提供<b class='flag-5'>快速</b>连接和最小<b class='flag-5'>延迟</b>

    滤波器的群延迟是什么?

    滤波器的群延迟是什么? 滤波器的群延迟是指滤波器对不同频率信号的延迟程度以及频率响应的相位响应之和。它是滤波器在处理输入信号时引入的总延迟
    的头像 发表于 12-18 13:40 1295次阅读

    如何衡量工业交换机的延迟

    网络延迟是指在工业网络交换机中,数据在传输和处理过程中产生的额外时间延迟。网络延迟是由许多不同因素造成的,这些因素包括数据包在交换机缓冲区等待处理
    的头像 发表于 12-13 16:08 178次阅读

    谈谈SSD主控芯片

    SSD主控芯片(SSD controller)好比固态硬盘的大脑。
    的头像 发表于 11-29 12:16 1108次阅读
    谈谈<b class='flag-5'>SSD</b>主控芯片

    SSD1306数据表

    128*64 OLED的驱动芯片SSD1306的数据手册0.96oled一般用ssd1306驱动,ssd1306的指令丰富,但是在平常显示使用默认的初始化命令,之后就是读写显示数据了,网上的例程很多,除了常用的命令,还描述工作模
    发表于 09-27 07:59

    Andes晶心科技N25F RISC-V处理器协助驱动群联电子X1企业级SSD控制芯片

    群联X1 SSD平台是一款针对企业级SSD市场的U.3 PCIe 4.0 x4 NVMe SSD存储方案。它在随机读取IOPS速度方面的大幅提升, 使其非常适用于处理数千个客户端的人工
    的头像 发表于 08-17 15:17 606次阅读

    ARM Cortex-M7处理器参考手册

    Cortex-M7处理器是一款高效、高性能的嵌入式处理器,具有中断延迟、低成本调试的特点,并具有与现有Cortex-M Profile处理
    发表于 08-17 07:55

    GPUOpenVINO基准测试的推断模型的默认参数与CPU的参数不同是为什么?

    model.xml -d CPU 导致的 GPU 延迟和吞吐量高于 CPU。 无法确定为什么 GPU 延迟和吞吐量都高于 CPU,因为延迟
    发表于 08-15 06:43

    如何利用神经网络预测闪存尾端延迟的发生?

    由于用户对低且稳定的延迟(微秒级)的需求越来越大,人们对SSD的百分比延迟越来越关心,即SSD有99%的概率可以提供低且稳定的延迟,但有1%
    发表于 07-21 09:12 246次阅读
    如何利用神经网络预测闪存尾端<b class='flag-5'>延迟</b>的发生?

    规格GaN快速充电器的脉冲ACF解读

    规格GaN快速充电器的脉冲ACF
    发表于 06-19 12:09

    如何将GPIO0和GPIO4用于SCL/SDA ssd1306?

    模式要做,但因为我已经有了 pcb,我希望有办法保存它。 为了进行测试,我使用了 Adafruit SSD1306 测试草图,其中添加了“Wire.begin(4,0);” 无效。设置。但是,当我再次变黑之前按下按钮时,我只能在屏幕
    发表于 06-01 07:23

    使用Arduino IDE 1.8.15为NodeMCU/AmicaD1和D2SSD1306和3.3V电源编译无显示的示例代码怎么处理

    我正在使用 Arduino IDE 1.8.15 为 NodeMCU/Amica D1 和 D2 SSD1306 和 3.3V 电源编译无显示的示例代码。I2C 监视器报告其存在。我尝试
    发表于 05-25 07:31