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
  • 相关阅读:
    UVA 401 回文词
    n的阶乘分解成素数幂的积
    DSSM问答匹配模型
    Enhanced LSTM for Natural Language Inference
    Bidirectional LSTM-CRF Models for Sequence Tagging
    Attention Is All You Need 学习笔记
    BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
    C++学习笔记(四)
    C++学习笔记(三)
    java学习笔记(七)
  • 原文地址:https://www.cnblogs.com/hugetong/p/8974107.html
Copyright © 2011-2022 走看看