zoukankan      html  css  js  c++  java
  • [dpdk] dpdk多线程任务调度

    DPDK下的线程,叫做EAL线程。

    EAL线程默认是与CPU core一对一绑定的,这样的话,有一些实时性,计算量不高的任务独占CORE是一种浪费,大概找了如下几种解决方案。

    1. dpdk serivce core

    可以实现workload与core之间 N到M的映射关系。

    就是提供一组core实现serivce任务,service顾名思义是一种短时任务,多短时任务的应用场景,适用。

    [dpdk] service core

    2.  LThread, 

    可以实现workload与core之间 N到M的映射关系。

    dpdk的example里提供了一种lightweight的thread解决方案,称为lthread。

    特点是使用协同线程调度,关于抢占式任务调度与协同式任务调动,参见:

    https://blog.csdn.net/jjavaboy/article/details/43340629

    lthread的文档:

    https://dpdk.org/doc/guides/sample_app_ug/performance_thread.html#the-l-thread-subsystem

      1. 这个库并不在dpdk的主代码中,可以稳定性上会有一下问题。

      2. 由于是协同式任务调度,各个thread的逻辑实现上都要有一些注意的地方。

    3. 协程

    没细研究,可参考:

    http://www.yeolar.com/note/2013/02/17/coroutines/

    https://coolshell.cn/articles/10975.html

    库的官方站点:http://dunkels.com/adam/pt/

    4. pthread

    常规的OS thread。

    特点是好多RTE的依赖都不能使用。

    CPU affinity:我之前以为CPU的绑定不能指定组。其实是可以的。

    CPU affinity 是一种调度属性(scheduler property), 它可以将一个进程"绑定" 到一个或一组CPU上.

    https://www.cnblogs.com/LubinLew/p/cpu_affinity.html

    那么,4和以上1,2的最大区别就是不能使用EAL的环境依赖。

    ┬─[tong@T7:~]─[05:35:36 PM]
    ╰─>$ man sched_setaffinity
  • 相关阅读:
    Visual Studio IDE 背景色该为保护眼睛色
    搭建windows server 2008 r2 FTP 后 开启防火墙无法访问的解决办法
    Div+CSS展示物流跟踪轨迹信息
    如何删除打印队列中的任务
    用SoapUI进行Webservice的性能压力测试
    C# httpwebrequest post 传输百分号‘%’
    在线转换工具
    JSON数据转换到POCO的代码
    后端接口的幂等性(转)
    全局流水ID号生成的几种方法
  • 原文地址:https://www.cnblogs.com/hugetong/p/8974107.html
Copyright © 2011-2022 走看看