`
cloudtech
  • 浏览: 4606281 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

操作系统基于多核平台的优化

 
阅读更多

一、多核多线程技术的发展


1)内存与处理器速度的差距导致cpu浪费时间等待访存获取数据,两种基本的方法可以从物理上进行一定的改进:增大缓存;提高时钟频率。

但是,缓存成本较大,在物理上也有一定限制;时频的提高,可以在相同时间完成更多的操作,但随之也带来问题:程序间的相关性和延迟的影响随之增加。

2)于是,人们想到,不只有突破物理上的限制来提高性能,在空间和时间上并行,增加吞吐量也是一种途径。因为虽然用户最关心的是交互性程序的响应时间,管理者关心单位时间的任务完成量;但最终都是在最短时间内完成最多任务。

既然原来的瓶颈在于访问时处理器需阻塞等待而浪费硬件资源,那么可以让cpu在这个延迟时间内干其它的事,譬如从其它的指令流读取指令运行已经准备就绪的进程或线程。

二、多核多线程与传统程序运行的不同带来的问题


1、传统系统运行的程序只需很少的改变便可以运行在cmt系统中,但不可避免的某些线程会影响到另外线程的执行,这该如何处理?

2、负载平衡与热缓存有时矛盾,如何处理?比如为了减少资源的争用,将争用少的放到一个核,导致这个核负载大。

3、进程与其包含的线程的调度分别在什么时候,两者有何关系?

4、多核的调度与核内多线程的调度分别配合?先将任务调到核,再在核内调度个线程还是怎样?

5、如果任务很少,是只让部分cpu工作,避免调度分发带来的复杂冗余的工作,还是依旧负载平衡?

三、solaris对多核的支持
1)solaris中线程的体系结构

a、分为用户级和内核级;用户级也可以在核内或核外运行。但是核外需要上下文切换开销很大;核内更有利于并发使用cpu,同时成为多个用户线程的调度者。
b、每个进程需要一个线程作为其指令执行体,线程分配到各个cpu运行。而每个用户级线程必须绑定到一个LWP,LWP再将它关联到一个内核线程。LWP并不一定是进程创建时就建立,而是在虚要使用时再被请求创建。这个用户级线程可以作为调度的执行实体,有独立的优先级调度,这与内核的优先级调度是分离的,并且对内核不可见。
LWP存在于内核里,记录着线程的状态,但内核级线程并不一定有LWP,如服务线程。
c、用户级线程有线程库中的每个进程的调度线程调度管理。
每个线程存在于他所属的进程链表,也存在于内核级线程链表。内核级线程决定线程运行在哪个cpu上,自己则被调度什么时候执行。

2)solaris采用调度等级(classes)定义内核调度和执行进程的规则,总共有6个classes,可以在同一核中调度,可以自适应。每个classes有一个列表,用来寻找线程。

3)负载平衡(load balancing)
为了让各个核之间少无用的调度,每个核有自己的调度队列,其线程可以重赋值时间片大小,用完后放回队列。
内核可以抢占其它时间片,可以同时多个调度类,但是每个决定要调度的地方必须有一个间接函数调用调度类相关代码。
有一种内核抽象,代表逻辑cpi,共享物理资源如cache、sockets接口。

4)热缓存机制(充分利用缓存里已经存在的数据)
可公用线程的线程放在同一逻辑cpu;
可公用缓存的线程也放在同一逻辑cpu。


四、Linux2.6及以上的调度


1)对SMP的支持,负载平衡
创建任务时,被放到一个给定的逻辑cpu运行对列,但并不知道这个任务运行的时间长短,因此开始的分配可能不理想,于是任务可以重新分发。于是将负载较重的cpu中的可执行进程或线程重新调度到负载较轻的cpu,即使现负载平衡。
事实上,每隔200ms,处理器就会检查cpu的负载是否均衡,不是,则重分配一次。
但是,显然,这样就带来了另外一个负面影响,即新任务对cpu冷缓存,需重新加载数据。

2)热缓存
每个cpu一个运行队列,各个任务与cpu密切相关,可以更好的利用热缓存。即任务在cpu上运行所需相关的数据都被放到这个cpu的缓存,可直接读取;而缓存是本地的存储器(片上),进而提高了访存速度,减少延迟。

分享到:
评论

相关推荐

    基于ARM的嵌入式Linux终端系统性能实时优化.pdf

    基于ARM的嵌入式Linux终端系统性能实时优化.pdf

    基于TI C6678多核处理器的HEVC视频解码软件设计

    设计并实现了一种基于TI C6678多核处理器的视频解码软件,在实时操作系统SYS/BIOS下利用C6678多核DSP强大的处理性能,对HEVC码流进行高效地解码。论文的主要内容如下:(1)对HEVC的关键技术进行介绍,并采用openHEVC的...

    大场景点云文件多核并行批量压缩方法研究

    为了减少大场景点云文件无损压缩时间,避免数据处理过程中人工操作造成的时间浪费和输入失误,本文引入LASzip点云无损压缩算法和OpenMP并行编程技术,提出了在单机多核CPU系统环境下基于LASzip的大场景点云文件多核并行...

    Mentor推出针对异构多核芯片的全面解决方案

    Mentor Graphics正在推出一个集成开发解决方案,该方案可为包括Linux平台、实时操作系统(RTOS)和裸系统应用的多操作系统设备进行设备配置、部署和系统优化。Mentor Graphics的异构多核系统嵌入式开发方案具备一些...

    Mentor推出针对异构多核芯片的首个全面解决方案

    Mentor Graphics正在推出一个集成开发解决方案,该方案可为包括Linux平台、实时操作系统(RTOS)和裸系统应用的多操作系统设备进行设备配置、部署和系统优化。Mentor Graphics的异构多核系统嵌入式开发方案具备一些...

    基于ROS机器人操作系统的树莓派智能小车.zip

    跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...

    Wind River联手飞思卡尔为多核MPC5121e处理器推出基于Linux的解决方案

    该平台采用飞思卡尔的多核MPC5121e处理器和Wind River的Linux操作系统(OS),旨在简化和加速嵌入式计算应用的应用开发。  MPC5121e联合平台包含飞思卡尔硬件开发工具包,同时捆绑了专门为优化构建在Power ...

    通信与网络中的飞思卡尔推多核远程通信处理器旗舰产品综合生态系统支持

    五家业界领先的开发工具和实时操作系统(RTOS)厂商宣布支持飞思卡尔半导体推出的MPC5121e系统芯片处理器。这款多核MPC5121e处理器基于Power Architecture技术,是飞思卡尔最强大的、高度集成的设备,适合远程通信、...

    单片机与DSP中的Freescale推出多核远程通信处理器旗舰产品

    五家业界领先的开发工具和实时操作系统(RTOS)厂商日前宣布支持飞思卡尔半导体推出的MPC5121e系统芯片处理器。这款多核MPC5121e处理器基于Power Architecture技术,是飞思卡尔最强大的、高度集成的设备,适合远程...

    通信与网络中的飞思卡尔推出多核远程通信处理器旗舰产品MPC5121e

    五家领先的开发工具和实时操作系统(RTOS)厂商日前宣布支持飞思卡尔半导体推出的MPC5121e系统芯片处理器。这款多核MPC5121e处理器基于Power Architecture技术,适合远程通信、以及需要复杂图像、多媒体和实时声音...

    通信与网络中的飞思卡尔推出多核远程通信处理器 MPC5121e

    五家业界领先的开发工具和实时操作系统(RTOS)厂商日前宣布支持飞思卡尔半导体推出的MPC5121e系统芯片处理器。这款多核MPC5121e处理器基于Power Architecture?技术,是飞思卡尔最强大的、高度集成的设备,适合远程...

    QNX Neutrino 操作系统 6.5 版的特点

    QNX 软件系统公司今日发布了 QNX Neutrino 实时操作系统 (RTOS) 6.5.0 和 QNX Momentics Tool Suite 6.5.0。新版本为汽车、工业、医疗、网络和国防市场等领域的嵌入式系统开发人员量身打造,这些新特性包括增强的...

    嵌入式系统/ARM技术中的QNX Neutrino 操作系统 6.5 版的特点

    QNX 软件系统公司今日发布了 QNX Neutrino 实时操作系统 (RTOS) 6.5.0 和 QNX Momentics Tool Suite 6.5.0。新版本为汽车、工业、医疗、网络和国防市场等领域的嵌入式系统开发人员量身打造,这些新特性包括增强的...

    基于Python+OpenCV的车牌识别系统.zip

    跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...

    基于openCV人脸识别的课堂考勤系统服务端.zip

    跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...

    基于Django+OpenCV的二维码生成与识别系统.zip

    跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...

    基于opencv的仪表盘指针读数识别系统.zip

    跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...

    android平台基于openCV人脸检测,添加宠萌效果.zip

    跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...

    基于OpenCV和卷积神经网络的预防驾驶疲劳系统.zip

    跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...

    基于MFC+Opencv的立体图像质量评测系统。.zip

    跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像...

Global site tag (gtag.js) - Google Analytics