精华内容
下载资源
问答
  • 计算密集型、IO密集型、数据密集型

    万次阅读 2018-12-10 22:11:48
    计算密集型(CPU-Intensive) 1、特点:要进行大量的计算,消耗CPU资源。比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。 2、计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的...

    计算密集型(CPU-Intensive)

    1、特点:要进行大量的计算,消耗CPU资源。比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。

    2、计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。

    3、计算密集型任务由于主要消耗CPU资源,因此,代码运行效率至关重要。Python这样的脚本语言运行效率很低,完全不适合计算密集型任务。对于计算密集型任务,最好用C语言编写。

    IO密集型(IO-Intensive)

    1、涉及到网络、磁盘IO的任务都是IO密集型任务。

    2、特点:CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。

    3、对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。常见的大部分任务都是IO密集型任务,比如Web应用。

    4、IO密集型任务执行期间,99%的时间都花在IO上,花在CPU上的时间很少,因此,用运行速度极快的C语言替换用Python这样运行速度极低的脚本语言,完全无法提升运行效率。对于IO密集型任务,最合适的语言就是开发效率最高(代码量最少)的语言,脚本语言是首选,C语言最差。

     

     

    数据密集(Data-Intensive)

       在2011年,"大数据"的概念已经赚足了人气,调研机构IDC数字宇宙在2011年6月的报告显示,全球数据量在2011年已达到1.8ZB,在过去5年里增加了5倍,而到2015年将达到近8ZB.进入2012年,大数据丝毫不会放慢增长的步伐,全球制造业、政府、零售商、金融等众多机构已经陷入"数据爆炸"的困境。随着数据量的急剧增长,以及对数据在线处理能力的要求不断提高,海量数据的处理问题越来越受到关注。在金融、电信等领域,都需要通过对大量的用户数据进行分析,才能做出相应的决策。对互联网数据进行存储和处理的海量数据处理系统也开始向数据密集型计算系统发展。

       数据密集型应用与计算密集型应用是存在区别的,传统的计算密集型应用往往通过并行计算方式在紧耦合的超级计算机上运行少量计算作业,即一个计算作业同时占用大量计算机节点;而数据密集型应用的特点主要是:

    • 大量独立的数据分析处理作业可以分布在松耦合的计算机集群系统的不同节点上运行;
    • 高度密集的海量数据I/O吞吐需求;
    • 大部分数据密集型应用都有个数据流驱动的流程。

    数据密集型计算指能推动前沿技术发展的对海量和高速变化的数据的获取、管理、分析和理解。这包含了三层含义:

    ●    它所处理的对象是数据,是围绕着数据而展开的计算。它需要处理的数据量非常巨大,且快速变化,它们往往是分布的、异构的。因此,传统的数据库管理系统不能满足其需要。

    ●    "计算"包括了从数据获取到管理再到分析、理解的整个过程。因此它既不同于数据检索和数据库查询,也不同于传统的科学计算和高性能计算。它是高性能计算与数据分析和挖掘的结合。

    ●    它的目的是推动技术前沿发展,要想推动的工作是那些依赖传统的单一数据源、准静态数据库所无法实现的应用。

     

    数据型密集计算的典型应用可概括为以下三类:

    1)Web应用:无论是传统的搜索引擎还是新兴的Web 2.0应用,它们都是以海量数据为基础,以数据处理为核心的互联网服务系统。为支持这些应用,系统需要存储、索引、备份海量异构的Web页面、用户访问日志以及用户信息(Profile),并且还要保证对这些数据快速准确的访问 。显然,这需要数据密集型计算系统的支持,因而WEB应用成为数据密集型计算发源地。

    2)软件即服务(Software as a Service, SaaS)应用:SaaS通过提供公开的软件服务接口,使得用户能够在公共的平台上得到定制的软件功能,从而为用户节省了软硬件平台的购买和维护费用,也为应用和服务整合提供了可能。由于用户的各类应用所涉及的数据具有海量、异构、动态等特性,有效地管理和整合这些数据,并在保证数据安全和隐私的前提下提供数据融合和互操作功能需要数据密集型计算系统的支持。

    3)大型企业的商务智能应用:大型企业往往在地理上是跨区域分布的,互联网提供了统一管理和全局决策的平台。实现企业商务智能需要整合生产、销售、供应、服务、人事、财务等一系列子系统。数据是整合的对象之一,更是实现商务智能的基础。由于这些系统中的数据包括产品设计、生产过程以及计划、客户、订单、售前后服务等数据,除类型多样,数量巨大外,结构也是复杂、异构的。数据密集型计算系统是实现跨区域企业商务智能的支撑技术。

    展开全文
  • 计算密集型和IO密集型

    千次阅读 2019-04-23 19:19:27
    什么是计算密集型 计算密集型就是计算、逻辑判断量非常大而且集中的类型,因为主要占用cpu资源所以又叫cpu密集型,而且当计算任务数等于cpu核心数的时候,是cpu运行效率最高的时候。 特点:消耗cpu 什么是IO密集型 ...
    什么是计算密集型

    计算密集型就是计算、逻辑判断量非常大而且集中的类型,因为主要占用cpu资源所以又叫cpu密集型,而且当计算任务数等于cpu核心数的时候,是cpu运行效率最高的时候。
    特点:消耗cpu

    什么是IO密集型

    IO密集型就是磁盘的读取数据和输出数据非常大的时候就是属于IO密集型
    由于IO操作的运行时间远远大于cpu、内存运行时间,所以任务的大部分时间都是在等待IO操作完成,IO的特点是cpu消耗小,所以,IO任务越多,cpu效率越高,当然不是越多越好,有一个极限值。

    IO密集型任务执行期间,99%的时间都花在IO上,花在CPU上的时间很少,因此,用运行速度极快的C语言替换用Python这样运行速度极低的脚本语言,完全无法提升运行效率。对于IO密集型任务,最合适的语言就是开发效率最高(代码量最少)的语言,脚本语言是首选,C语言最差。

    cpu核心数

    cpu核心数是指一个cpu由几个核心组成,核心数越多,cpu运行速度越快,比如处理同一份数据,单核是指一个人处理,双核是指两个人处理,所以核心数越多,cpu性能越好。

    展开全文
  • 计算密集型和IO密集型的区别 IO 密集型:系统运作,大部分的状况是CPU 在等I/O (硬盘/内存)的读/写。 CPU 密集型:大部份时间用来做计算、逻辑判断等CPU 动作的程序称之CPU 密集型。 (CPU密集型)计算密集型任务的...

    计算密集型和IO密集型的区别

    IO 密集型:系统运作,大部分的状况是CPU 在等I/O (硬盘/内存)的读/写。
    CPU 密集型:大部份时间用来做计算、逻辑判断等CPU 动作的程序称之CPU 密集型。

    (CPU密集型)计算密集型任务的特点:
    要进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。
    这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。

    计算密集型任务由于主要消耗CPU资源,因此,代码运行效率至关重要。Python这样的脚本语言运行效率很低,完全不适合计算密集型任务。对于计算密集型任务,最好用C语言编写。

    IO密集型任务的特点:
    涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。常见的大部分任务都是IO密集型任务,比如Web应用。

    IO密集型任务执行期间,99%的时间都花在IO上,花在CPU上的时间很少,因此,用运行速度极快的C语言替换用Python这样运行速度极低的脚本语言,完全无法提升运行效率。对于IO密集型任务,最合适的语言就是开发效率最高(代码量最少)的语言,脚本语言是首选,C语言最差。

    主要使用场景:
    多进程适合在CPU 密集型操作(cpu 操作指令比较多,如位数多的浮点运算)。
    多线程适合在IO 密集型操作(读写数据操作较多的,比如爬虫)。

    展开全文
  • 与公有云计算相比,针对数据与计算双重密集型任务的私有云计算系统对计算效率系统管理效率提出了更高的要求,目前的公有云计算系统显得过于复杂繁琐,因此需要一种简便易用的能够适应数据计算密集型任务的私有...
  • 行业分类-电子电器-基于移动边缘计算的计算密集型数据状态更新实现方法.zip
  • 计算密集型&IO密集型

    万次阅读 2017-03-10 16:50:30
    原文:...我们介绍了多进程多线程,这是实现多任务最常用的两种方式。现在,我们来讨论一下这两种方

    原文:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001397567993007df355a3394da48f0bf14960f0c78753f000


    进程 vs. 线程


    我们介绍了多进程和多线程,这是实现多任务最常用的两种方式。现在,我们来讨论一下这两种方式的优缺点。


    首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker。


    如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker。


    如果用多线程实现Master-Worker,主线程就是Master,其他线程就是Worker。


    多进程模式最大的优点就是稳定性高,因为一个子进程崩溃了,不会影响主进程和其他子进程。(当然主进程挂了所有进程就全挂了,但是Master进程只负责分配任务,挂掉的概率低)著名的Apache最早就是采用多进程模式。


    多进程模式的缺点是创建进程的代价大,在Unix/Linux系统下,用fork调用还行,在Windows下创建进程开销巨大。另外,操作系统能同时运行的进程数也是有限的,在内存和CPU的限制下,如果有几千个进程同时运行,操作系统连调度都会成问题。


    多线程模式通常比多进程快一点,但是也快不到哪去,而且,多线程模式致命的缺点就是任何一个线程挂掉都可能直接造成整个进程崩溃,因为所有线程共享进程的内存。在Windows上,如果一个线程执行的代码出了问题,你经常可以看到这样的提示:“该程序执行了非法操作,即将关闭”,其实往往是某个线程出了问题,但是操作系统会强制结束整个进程。


    在Windows下,多线程的效率比多进程要高,所以微软的IIS服务器默认采用多线程模式。由于多线程存在稳定性的问题,IIS的稳定性就不如Apache。为了缓解这个问题,IIS和Apache现在又有多进程+多线程的混合模式,真是把问题越搞越复杂。


    线程切换


    无论是多进程还是多线程,只要数量一多,效率肯定上不去,为什么呢?


    我们打个比方,假设你不幸正在准备中考,每天晚上需要做语文、数学、英语、物理、化学这5科的作业,每项作业耗时1小时。


    如果你先花1小时做语文作业,做完了,再花1小时做数学作业,这样,依次全部做完,一共花5小时,这种方式称为单任务模型,或者批处理任务模型。


    假设你打算切换到多任务模型,可以先做1分钟语文,再切换到数学作业,做1分钟,再切换到英语,以此类推,只要切换速度足够快,这种方式就和单核CPU执行多任务是一样的了,以幼儿园小朋友的眼光来看,你就正在同时写5科作业。


    但是,切换作业是有代价的,比如从语文切到数学,要先收拾桌子上的语文书本、钢笔(这叫保存现场),然后,打开数学课本、找出圆规直尺(这叫准备新环境),才能开始做数学作业。操作系统在切换进程或者线程时也是一样的,它需要先保存当前执行的现场环境(CPU寄存器状态、内存页等),然后,把新任务的执行环境准备好(恢复上次的寄存器状态,切换内存页等),才能开始执行。总之,CPU给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一任务。任务的状态保存及再加载,这段过程就叫做上下文切换。时间片轮转的方式使多个任务在同一颗CPU上执行变成了可能,但同时也带来了保存现场和加载现场的直接消耗。(Note. 更精确地说, 上下文切换会带来直接和间接两种因素影响程序性能的消耗. 直接消耗包括: CPU寄存器需要保存和加载, 系统调度器的代码需要执行, TLB实例需要重新加载, CPU 的pipeline需要刷掉; 间接消耗指的是多核的cache之间得共享数据, 间接消耗对于程序的影响要看线程工作区操作数据的大小)。虽然这个切换过程很快,但是也需要耗费时间。如果有几千个任务同时进行,操作系统可能就主要忙着切换任务,根本没有多少时间去执行任务了,这种情况最常见的就是硬盘狂响,点窗口无反应,系统处于假死状态。所以,多任务一旦多到一个限度,就会消耗掉系统所有的资源,结果效率急剧下降,所有任务都做不好。


    计算密集型 vs. IO密集型


    是否采用多任务的第二个考虑是任务的类型。我们可以把任务分为计算密集型和IO密集型。


    计算密集型任务的特点是要进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。


    计算密集型任务由于主要消耗CPU资源,因此,代码运行效率至关重要。Python这样的脚本语言运行效率很低,完全不适合计算密集型任务。对于计算密集型任务,最好用C语言编写。


    第二种任务的类型是IO密集型,涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度。常见的大部分任务都是IO密集型任务,比如Web应用。


    IO密集型任务执行期间,99%的时间都花在IO上,花在CPU上的时间很少,因此,用运行速度极快的C语言替换用Python这样运行速度极低的脚本语言,完全无法提升运行效率。对于IO密集型任务,最合适的语言就是开发效率最高(代码量最少)的语言,脚本语言是首选,C语言最差。


    异步IO


    考虑到CPU和IO之间巨大的速度差异,一个任务在执行的过程中大部分时间都在等待IO操作,单进程单线程模型会导致别的任务无法并行执行,因此,我们才需要多进程模型或者多线程模型来支持多任务并发执行。


    现代操作系统对IO操作已经做了巨大的改进,最大的特点就是支持异步IO。如果充分利用操作系统提供的异步IO支持,就可以用单进程单线程模型来执行多任务,这种全新的模型称为事件驱动模型,Nginx就是支持异步IO的Web服务器,它在单核CPU上采用单进程模型就可以高效地支持多任务。在多核CPU上,可以运行多个进程(数量与CPU核心数相同),充分利用多核CPU。由于系统总的进程数量十分有限,因此操作系统调度非常高效。用异步IO编程模型来实现多任务是一个主要的趋势。


    展开全文
  • 数据密集型应用

    2019-01-29 14:00:04
    数据密集型应用(data-intensive applications)正在通过使用这些技术...一个应用被称为数据密集型的,如果数据是其主要挑战(数据量,数据复杂度或数据变化速度)—— 与之相对的是计算密集型,即处理器速度是其瓶颈。
  • 计算密集型 计算密集型应用领域的软件系统是指CPU资源消耗多, 计算量大...数据密集型系统应用领域的软件系统复杂性高于计算密集型,这样的系统处理大量的数据业务规则,例如电子商务系统。 特点: 1.大量独...
  • 与公有云计算相比,针对数据计算双重密集型任务的私有云计算系统对计算效率系统管理效率提 出了更高的要求,目前的公有云计算系统显得过于复杂繁琐,因此需要一种简便易用的能够适应数据计算 密集型任务的私有...
  • 行业分类-设备装置-一种云计算平台下数据计算密集型处理系统.zip
  • CPU io-密集型 计算密集型

    千次阅读 2018-08-10 10:17:35
    核心是可以分别独立运行程序指令的计算单元。 线程是操作系统能够进行运算调度的最小单位。 ...在Java并发编程方面,计算密集型与IO密集型是两个非常典型的例子,这次大象就来讲讲自己在这方面...
  • 判断一个程序属于IO密集型还是计算密集型有利于后续对程序进行并行优化,尤其是Cpython解释器下的python程序(GIL锁)。本文将先介绍判断方法,再结合一个实际案例进行分析。 上下文切换 上下文切换一般指用户态...
  • IO密集型任务 VS 计算密集型任务 所谓IO密集型任务,是指磁盘IO、网络IO占主要的任务,计算量很小。比如请求网页、读写文件等。当然我们在Python中可以利用sleep达到IO密集型任务的目的。 所谓计算密集型任务,...
  • 日益增长的数据量对数据处理的要求越来越高,于是出现了数据密集...为了评估该算法的适用性收敛性,使用遗传算法模拟退火算法与其对比,结果显示,提出的算法在这种数据密集型服务组件的部署问题中表现得更为出色。
  • 面向数据密集型计算Hadoop及其应用研究.pdf
  • 云计算在工业界学术界的火热升温,一方 面体现出人们对大规模数据处理日益...这就带来了一个研究方向——数据密集型计 算。据IDC(互联网数据中心)统计,2008年全球 产生的数据量约为270000PB(拍字节,1015B)[1]。
  • 面向新型处理器的数据密集型计算.pdf
  • 在Java并发编程方面,计算密集型与IO密集型是两个非常典型的例子,这次大象就来讲讲自己在这方面的内容,本篇比较基础,只适合刚入门的童鞋,请各种牛人不喜勿喷。  计算密集型  计算密集型,顾名思义就是应用需要...
  • 设计数据密集型应用

    2018-12-27 18:30:45
    第一部分,主要讨论有关增强数据密集型应用系统所需的若干基本原则。首先开篇第1章即瞄准目标:可靠性、可扩展性与可维护性,如何认识这些问题以及如何达成目标。第2章我们比较了多种不同的数据模型查询语言,讨论...
  • H.264计算密集型任务在可重构处理器上的映射.pdf
  • https://zhuanlan.zhihu.com/p/24283040IO密集型任务 VS 计算密集型任务所谓IO...所谓计算密集型任务,是指CPU计算占主要的任务,CPU一直处于满负荷状态。比如在一个很大的列表中查找元素(当然这不合理),复杂的...
  • 一种面向数据密集型计算环境的聚类算法.pdf
  • G-Hadoop:跨分布式数据中心的MapReduce,用于数据密集型计算
  • 记一次计算密集型服务的性能优化 性能优化是一个庞杂的话题,不同的场景,不同的视角都会得到不同的理解。...本文讲述的是对计算密集型服务提高吞吐降低延迟的优化经验理解。 一、背景 这是微服务框...
  • 信息系统工作论文系列
  • 根据应用领域的不同,目前主流的分布式并行文件系统可分为2类:面向高...面向数据密集型计算(DISC: Data Intensive Scalable Computing)的并行文件系统,典型代表为Google FS,以及重现Google FS的开源文件系统Had
  • 互联网数据处理、科学计算、商业智能等领域都存在着海量数据处理需求,存在大量数据密集型应用[1]。Google提出了MapReduce[2]编程模型,开发人员只需要编写单个节点的处理任务,由计算平台来提供任务的并行处理及...
  • 本实践研讨会将向您介绍使用 MATLAB:registered: Simulink:registered: 的并行计算,以便您可以使用多核处理器、GPU 计算机集群解决计算和数据密集型问题。 通过处理常见场景以并行化 MATLAB 算法并并行运行多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,354
精华内容 29,341
关键字:

计算密集型和数据密集型