网络应用在商用多核体系上的并行化.pptVIP

网络应用在商用多核体系上的并行化.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络应用在商用多核体系上的并行化

网络应用在商用多核体系上的并行化 指导老师:郭燕 组员:王金雷、周岳峰、禹龙、 马旭光、陈龙 主要内容 项目背景 设计概要 无锁队列的研究 Libnids并行化 人员分工 结语 参考资料 背景概览 因特网是建在TCP/IP协议上的、万维网是建立在HTTP协议上的,现有的网络协议都是在单核上运行,无法充分利用多核的特点,根本达不到网络高速处理的要求。 使用多核技术对TCP/IP和HTTP等网络协议加速,尽可能的提高因特网和万维网的吞吐率,对网络应用产生促进作用。比如,对网络上的数据包进行详细的深层分析,从而可以应用于企业、银行、教育、医疗、政府的信息安全和数据防盗上。 构建基于多核平台的并行网络程序 利用通用多核处理器建立高速网络处理平台,实现网络程序并行化处理。 通过在多核平台上并行化已有的串行网络程序来达到利用多核结构的目的,而不是完全从头开始编写一个并行的网络程序。 实验平台为学院提供的多核处理器 设计概要: 设计概要 由于没有提供硬件级的fifo为了要达到核与核之间高速共享数据,设计了一种并发无锁的FIFO队列,实现相邻核之间的高效通信。 使用对称的hash函数对包进行分派。 尽可能消除全局变量以及程序中显示或隐式的锁操作。比如,采用预分配缓冲区的方法去除malloc()操作(从而消除隐含的锁操作)。 任务映射 无锁队列的研究 Lock_free fifo 性能分析 算法改进 性能对比 FIFO实现:Locking queue implementation FIFO实现:Lamport queue implementation FIFO实现:FastForward CLF Queue Slip maintenance 以上算法在初始化时运行。 如果阶段的处理时间呈现非零均值的波动,或者具有非均衡的阶段,则需要周期性地运行该算法进行调整。 FIFO实现:Read/Write aggregate Queue FIFO_ELEM tmp[ELEM_PER_CACHELINE] ; int enqueue_aggregate(FIFO_ELEM *data) { if (NULL != queue[head]) return FALSE ; tmp[current] = *data ; current++ ; if (current == ELEM_PER_CACHELINE) { memcpy(queue[head], tmp, sizeof(FIFO_ELEM) * ELEM_PER_CACHELINE) ; head = NEXT(head) ; current = 0 ; } return TRUE : } 虽然有效的避免了false sharing问题。 但是引入的tmp进行了多余的拷贝,访存操作。 FIFO实现:Align-shift queue implementation init_queue() { p = pre_malloc(QUEUE_SIZE * sizeof(FIFO_ELEM) + CACHE_LINE_SIZE - 1) ; if (! (p mod CACHE_LINE_SIZE)) queue = p + CACHE_LINE_SIZE - 1 ; else queue = p + CACHE_LINE_SIZE - 1 - p mod CACHE_LINE_SIZE ; return TRUE ; } 队列初始化,完成“对齐”工作。 FIFO实现:Align-shift queue implementation enqueue_align_shift(FIFO_ELEM *data) { if (count == ELEM_PER_CACHE_LINE queue[next(head)] != NULL) return FALSE ; if (count == ELEM_PER_CACHE_LINE) { head = NEXT(head); count = 1; } else count ++; if (count == ELEM_PER_CACHE_LINE ) queue[head] = data; else queue[head + count] = data; return TRUE ; } 交替的读写并且写入标记位 性能比较:Fast Forward VS R,W Aggregate VS Align Shift 性能比较:Fast Forward不同实现 性能比较:Optimized FastForward vs Align Shift L

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档