精华内容
下载资源
问答
  • 计算密集型和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性能越好。

    展开全文
  • 什么是计算密集?举个例子,把SQLite数据库放到Linux内存文件系统/dev/shm上对100万数据进行SELECT查询操作,那么这个SELECT查询,在使用了B+树索引时,在B+树索引上的二分查找就是典型的密集计算,如果没有使用索引,那...

    什么是计算密集?举个例子,把SQLite数据库放到Linux内存文件系统/dev/shm上对100万数据进行SELECT查询操作,那么这个SELECT查询,在使用了B+树索引时,在B+树索引上的二分查找就是典型的密集计算,如果没有使用索引,那单纯的扫描整个表也是密集计算.所以说,像关系数据库这种东西,普遍都是使用C/C++实现,保证性能和控制内存占用.

    什么是IO密集?比如SQLite数据库不在内存,而在普通机械磁盘上,这时写操作(INSERT/UPDATE/DELETE)都是典型的IO密集操作,因为这时就算CPU再快,SQLite引擎再快,也会被机械磁盘的写入操作拖慢.所以为了并发,SQLite后来引入了WAL(write-ahead log)预写式日志支持,具体配置就是执行一下SQLite查询:

    PRAGMA synchronous = NORMAL;

    PRAGMA journal_mode = WAL;

    WAL机制的原理是: 修改并不直接写入到数据库文件中,而是写入到另外一个称为WAL的文件中(data.db3-wal). 如果事务失败,WAL中的记录会被忽略,撤销修改. 如果事务成功,它将在随后的某个时间(PRAGMA synchronous = NORMAL)被写回到数据库文件中,提交修改. 同步WAL文件和数据库文件的行为被称为checkpoint(检查点),它由SQLite自动执行, 默认是在WAL文件积累到1000页修改的时候(PRAGMA wal_autocheckpoint). 在适当的时候,也可以手动执行checkpoint,SQLite提供了相关的接口,执行 PRAGMA wal_checkpoint 之后,WAL文件会被清空. 在读的时候,SQLite将在WAL文件中搜索,找到最后一个写入点,记住它,并忽略在此之后的写入点(这保证了读写和读读可以并行执行). 随后,它确定所要读的数据所在页是否在WAL文件中,如果在,则读WAL文件中的数据,如果不在,则直接读数据库文件中的数据. 在写的时候,SQLite将之写入到WAL文件中即可,但是必须保证独占写入,因此写与写之间不能并行执行. WAL在实现的过程中,使用了共享内存技术(data.db3-shm),因此,所有的读写进程必须在同一个机器上,否则,无法保证数据一致性.

    像WAL和checkpoint这种概念,在其他数据库比如MySQL中也存在,只不过MySQL会更复杂,能支持更大规模的并发写操作.像WAL+checkpoint这种写入方式,你就可以看做是一种异步的写入.

    Node的JS解释器基于Chromium的V8,而V8具有JIT即时编译机制,所以Node的密集计算的性能是要比PHP强的.虽然PHP官方现在也在开发PHP的JIT试验分之,但其性能仍然不如V8.不过就算Node计算性能好,也几乎不会有人推荐在Node里执行大规模的密集计算,因为密集计算耗必定阻塞Node服务,这和Node倡导的无阻塞理念相背.

    Node利用JS事件驱动的特性,做到了无阻塞,但基于回调的事件编程方式不利于代码维护.而且Node这种服务不能像Tomcat这类Java服务使用单进程多线程利用多核,而V8也并不是为多线程设计,所以Node官方只能自己搞了一个cluster多进程模块来利用多核.

    PHP比较中庸,计算速度比不上JIT语言,但在非JIT的通用脚步语言中,PHP并不慢,比方说PHP5就已经比Python快,PHP7更是比Python快得多,比如php-src/Zend/bench.php测试中,PHP 7.1的耗时只有5.4的1/4.

    另外PHP的PHP-FPM和Apache MOD_PHP这类多进程的FastCGI运行方式,也很容易利用多核.而且还能开启opcache缓存PHP脚本的opcode到共享内存.也就是说,假设你定义了很多函数在functions.php里,opcache缓存该脚本在内存后,其后每次请求PHP都不必重新解析脚本,直接就能执行opcode,性能提升是非常明显的,尤其对于复杂的PHP应用.

    展开全文
  • 计算密集型 计算密集型应用领域的软件系统是指CPU资源消耗多, 计算量大...数据密集型系统应用领域的软件系统复杂性高于计算密集型,这样的系统处理大量的数据业务规则,例如电子商务系统。 特点: 1.大量独...

    计算密集型

    计算密集型应用领域的软件系统是指CPU资源消耗多, 计算量大的系统,主要以追求计算速度为主要指标。例如超级计算机

    特点:

    传统的计算密集型应用往往通过并行计算方式在紧耦合的超级计算机上运行少量计算作业,即一个计算作业同时占用大量计算机节点

    数据密集型

    数据密集型系统应用领域的软件系统复杂性高于计算密集型,这样的系统处理大量的数据和业务规则,例如电子商务系统

    特点:

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

    I/O密集型

    I/O密集型系统应用领域的软件系统CPU效能高、占用率低,大部分时间都用于等待I/O操作,例如web应用

    特点:

    I/O bound 指的是系统的CPU效能相对硬盘/内存的效能要好很多,此时,系统运作,大部分的状况是 CPU 在等 I/O (硬盘/内存) 的读/写,此时 CPU Loading 不高。

    展开全文
  • 日益增长的数据量对数据处理的要求越来越高,于是出现了数据密集...为了评估该算法的适用性收敛性,使用遗传算法模拟退火算法与其对比,结果显示,提出的算法在这种数据密集型服务组件的部署问题中表现得更为出色。
  • 根据应用领域的不同,目前主流的分布式并行文件系统可分为2类:面向高...面向数据密集型计算(DISC: Data Intensive Scalable Computing)的并行文件系统,典型代表为Google FS,以及重现Google FS的开源文件系统Had
     
     

    根据应用领域的不同,目前主流的分布式并行文件系统可分为2类:面向高性能计算(HPC:High Performance Computing)应用的并行文件系统,典型代表如Luster、Panasas和PVFS;面向数据密集型计算(DISC: Data Intensive Scalable Computing)的并行文件系统,典型代表为Google FS,以及重现Google FS的开源文件系统Hadoop HDFS等。这两种应用领域有何不同?它们对并行文件系统的需求有何本质差异?有无可能在并行文件系统中兼顾两种应用的需求?本文探讨并试图回答这些问题。

    • HPC系统架构

        长期以来,HPC应用的主要领域是科学与工程计算,诸如高能物理、核爆炸模拟、气象预报、石油勘探、地震预报、地球模拟、药品研制、CAD设计中的仿真与建模、流体力学的计算等。

        体系结构上,目前HPC系统中采用较多的是MPP架构,系统由计算节点和I/O节点、存储设备组成,这种架构也称为“Partitioned Architecture”,如图1所示【1】。计算节点上运行定制的、轻量化的OS,所有计算所需的数据都加载到DRAM中;I/O节点则使用传统的重量级的操作系统如Linux实现文件的访问。


    图1  HPC系统结构

     在过去几十年里,HPC系统的计算能力快速提高,系统的规模也大规模扩展。表1显示了过去20年中HPC系统规模、以及计算节点和I/O节点数比例的变化趋势【1】。可以看出HPC系统中计算节点数高达几万,CPU数达到数十万,与此同时,计算节点和I/O节点的比例一直呈增加之势。

     

    表1   HPC系统规模及计算节点与I/O节点的比例变化趋势


            HPC执行的计算任务可能需要几个小时,也可能长达几天甚至数周。由于高性能计算系统规模高达上万个节点,故障难以避免,因此HPC系统中普遍使用“checkpoint”技术周期性地保持计算的状态和中间结果,当发生故障时,则从上次保存的“checkpoint”状态恢复计算。虽然由OS实现“checkpoint”在理论上是可行的,但开销巨大;由应用程序将任务分解为多个阶段,在每个阶段完成后保存计算结果的方法则更简单而高效。

        目前HPC中使用较多的I/O (存储)系统的架构分别如图2(a)、(b)所示。


     

    图2   HPC中的计算节点与I/O子系统

     

    在图2(a)中,多个I/O节点为对称结构,以共享存储局域网(SAN)的方式组成集群文件系统,每个文件以条带化方式分布到多个存储设备上。计算节点则使用最广泛的网络文件访问协议NFS来访问集群文件系统。这种架构的典型代表是IBM研制的GPFS并行文件系统【8】。在图2(a)所示系统中,多个I/O节点以紧耦合方式协同工作,其扩展性受到很大限制,I/O节点数一般不超过32。

    面向对象的并行文件系统具有更好的可扩展能力,其结构如图2(b)所示。典型的用于HPC的并行文件系统有Luster、Panasas、PVFS等。资料表明Luster系统的I/O节点数可扩展到103数量级。

    在数据访问模式上,HPC呈现出高并发的特征。需要处理的数据往往以稀疏矩阵方式保存在一个或多个巨大的文件中(GB级甚至TB级),多个计算节点往往需要并发读写同一文件;而在有些应用中则会生成或访问大量的小文件,每个计算节点分布访问不同的文件。

        HPC对存储系统的性能,包括吞吐量和延迟都有很高要求,因此大量使用并发技术来提高性能,如在存储节点内部基于RAID来实现多磁盘并发访问,采用条带花技术实现多个存储节点的并发访问;另外在数据访问时采用小块数据流水线传输的方式以隐藏延迟。

    • DISC系统架构

    DISC是在近年来兴起的一种新型的计算方式,在互联网应用、超级计算、环境科学、生物医药、商业数据挖掘等领域具有广泛而重要的应用,已成为互联网和计算机科学研究的重要内容之一。

    DISC所处理的对象是数据,是围绕数据而展开的计算,其计算方式完全不同于传统的高性能计算,HPC系统并不适用于DISC。首先,HPC系统动辄高达百万甚至千万元的价格使其很难应用到民用领域;从技术角度看,HPC的计算方式需要将数据从存储节点传输到计算节点,而对于高达PB级的海量数据而言,数据读取的时间将远高于数据处理所需时间,很显然,HPC的计算方式不适用于DISC。

    出于成本考虑,DISC系统通常都采用大量廉价的商业化PC机;DISC面向的是理海量数据的处理,这些处理任务应尽量在存储节点本地进行,避免数据的迁移,因此DISC系统中的计算和存储是一体化的,节点是对等的。

    由于DISC采用廉价的商业PC机,而且规模庞大,因此容错成为需要优先考虑的问题,目前采用的方法主要是数据复制,通常一份数据有3份副本,分别存储到不同的节点上,从而实现节点级的容错。数据访问模式上,呈现WORM(Write Once,Read Many)特性,系统实现上主要针对读操作进行优化;DISC系统对数据的处理为批处理方式、顺序访问,因此大块数据传输方式效率更高。

    Google公司的基础信息支撑系统(GFS/Bigtable/MapReduce)是典型的DISC系统,而Hadoop则是该系统的开源实现,目前已被广泛研究和部署。

    • DISC与HPC的存储需求差异

             DISC和HPC对存储系统有许多共性要求,如可扩展性和高I/O吞吐量。存储系统架构也是类似的,都采用面向对象的方法,存储系统都由MDS和OSD两类节点组成。虽然在宏观上有诸多相似,但深入分析就会发现两者在微观上有很多差异,这些差异见表2

     

    表2  DISC与HPC的存储需求差异


    Panasas和Luster都实现了细粒度的分布式锁;PVFS不支持锁操作,需要应用程序避免数据访问中可能存在的冲突。


    从前面的分析可以看出,DISC和HPC对存储系统的需求有比较大的差异。从目前已有并行文件系统或存储产品来看,都未同时支持上述两种应用。

    CMU大学的PDL实验室对传统面向HPC的存储系统能否适用于DISC计算进行了探索和研究【6】。他们将PVFS文件系统进行了局部改进,加入了数据复制、数据预取等优化。初步测试表明在经过上述改进后PVFS可达到与Hadoop HDFS同样的性能,但PVFS仍然缺乏DISC所必需的自动负载均衡等关键特征。

    • 结语

    面向HPC的存储系统所管理的是“一次性”使用的数据,系统关注于高吞吐量和并发性;而DISC面向长期存储的数据,系统更侧重于渐进的可扩展性和数据的保护。虽然两者在宏观上有诸多相似,但在决定性的细节上有更多不同。兼顾两种应用增加了系统的技术复杂度,性能优化变得更加困难。大量分布式系统设计的经验表明,根据应用需求进行定制和简化是解决复杂问题行之有效的方法。在IT应用系统的“个性化”要求越来越高而技术发展相对成熟的今天,“One size fit all”模式已不再适用。

    面向DISC和HPC的存储系统,是否应各行其道?

    • 参考文献

    【1】      Data movement approaches for HPC. http://www.crcnetbase.com/doi/abs/10.1201/b10249-15

    【2】      Dean, J., S. Ghemawat, “MapReduce: Simplified Data Processing on Large Clusters.” In 6th Symposium on Operating Systems Design and Implementation (OSDI’04).

    【3】      Hadoop. Apache Hadoop Project. HTTP://HADOOP.APACHE.ORG/

    【4】      Borthakur, D., “The hadoop distributed file system: Architecture and design, 2009.”  HTTP://HADOOP.APACHE.ORG/COMMON/DOCS/CURRENT/HDFS_DESIGN.HTML

    【5】      Ghemawat, S., H. Gobioff, S.-T. Lueng, “Google File System.” In 19th  ACM Symposium on Operating Systems Principles (SOSP’03)

    【6】      Tantisiriroj, W., S. V. Patil, G. Gibson. “Data intensive file systems for internet services: A rose by any other name…” Tech. Report CMU-PDL-08-114, Carnegie Mellon University, Oct. 2008.

    【7】      Garth Gibson. Understanding and Maturing the Data-Intensive Scalable Computing Storage Substrate. Carnegie Mellon University. 10-1-2009.

    【8】      Frank Schmuck,Roger Haskin. GPFS: A Shared-Disk File System for Large Computing Clusters. Proceedings of the Conference on File and Storage Technologies (FAST’02),28–30 January 2002, Monterey, CA, pp. 231–244.

    【9】      PVFS2. Parallel Virtual File System, Version 2. HTTP://WWW.PVFS2.ORG/ 

    展开全文
  • 从微小而且集成度非常高的片上系统,到大型数据中心,多核革命已经呈现出烽火燎原之势。那么,当你在设计自己的系统时,怎样才能把多核技术发挥到极致呢?另外需要注意的是,要在一个多核系统中把每一份计算能力都...
  • 避嫌声明:所有图文都是根据自己的理解原创...关系数据库处理永久、稳定的数据,内存数据库就是将其数据放在内存中,活动事务只与内存数据打交道,重新设计了体系结构并且在数据缓存、快速算法、并行操作方面也进...
  • CPU密集型和IO密集型

    2018-04-11 14:52:00
    对于Python如果是CPU密集型应该用多进程模型(大量的计算)  如果是IO密集型应该用多线程模型(数据的读取写入、网络IO数据传输)  由于GIL的存在,CPython不能有效的利用多核处理器,表现为任意时间一个进程...
  • CPU密集型和I/O密集型

    2019-04-08 11:17:15
    一、CPU密集型也叫计算密集型,指的是硬盘、内存在读写数据时要比CPU速度快的多,CPU要读写I/O时,I/O在很短的时间内完成,CPU有很多的运算还要处理 二、在多重程序系统(即同时运行多道程序或多处理机同时执行多个...
  • 本质上,每个软件应用程序都可以分为两种类型:计算密集型应用程序和数据密集型应用程序。 然后,有一些应用程序介于这两个极端之间。 今天,我将讨论如何为专注于利用企业数据的应用程序定义高级体系结构,以...
  • 避嫌声明:所有图文都是根据自己的...关系数据库处理永久、稳定的数据,内存数据库就是将其数据放在内存中,活动事务只与内存数据打交道,重新设计了体系结构并且在数据缓存、快速算法、并行操作方面也进行了相应的
  • 阿里云服务器计算型c5 是一款常用的独享服务器机型,而阿里云密集计算型ic5 也是计算型中的一款机型。那么这两款机型有什么区别呢?对于日常业务又该如何选择? 阿里云计算型c5 I/O优化实例 处理器与内存配比为1:2...
  • 按照使用的资源类型划分,我们可以把系统分为三大类型:IO密集型、计算密集型数据密集型。系统的类型反映了系统的主要瓶颈。现实情况中,大部分系统在由小变大的过程中,最先出现瓶颈的是IO。IO问题体现在两个方面...
  • 作为一个开发者来说,目前绝大多数应用程序都是数据密集型的,而不是计算密集型的。CPU的计算能力不再成为这些应用程序的限制因素,而更加亟待解决的问题是海量的数据、数据结构之间的复杂性,应用的性能。 先看看...
  • 读过很多讲解Numpy的教程后,我准备写一个Numpy系列。结合工作项目实践,以Numpy高效使用哲学为主线,重点讲解高频使用函数。1 Numpy更高效使用Python...之所以性能高是由于它在密集型计算任务中,向量化操作是用C...
  • day35一丶GIL锁什么是GIL锁:存在Cpython解释器,全名:全局解释器锁.(解释器级别的锁)​GIL是一把互斥锁,将并发...保证数据的完整性安全性​自动上锁解锁,不需要人为的添加.减轻开发人员的负担所谓诟病:单进程的多...
  • 互联网数据处理、科学计算、商业智能等领域都存在着海量数据处理需求,存在大量数据密集型应用[1]。Google提出了MapReduce[2]编程模型,开发人员只需要编写单个节点的处理任务,由计算平台来提供任务的并行处理及...
  • Python的GIL(global interpreter lock):用于解决多线程之间的数据完整性状态同步而存在,使得不管线程分布在多少个CPU上,解释器同一时刻只允许1个线程运行。所以Python是thread_safe的。这样其实Python就几...
  • IO密集型和CPU密集型 1. 两者的区别 1.1 什么是IO,什么是IO操作 什么是IO I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分 什么是IO操作 处理器访问任何寄存器和 Cache 等封装以外的数据资源都可以...
  • 针对数据密集型工作流的高能耗问题,提出通过引入“虚拟数据访问节点”的方法来量化评估工作流任务的数据访问能耗开销,并在此基础上设计了一种“最小能耗路径”的启发式策略。在经典的HEFT算法CPOP算法基础上,...
  • 基于并行GATS-TS算法的数据密集型应用调度,李肯立,刘丹,科技的进步使得应用不仅需要巨大的计算能力,同时还需要访问处理异常庞大的数据,由此导致了数据网格的出现。在数据网格中,数
  • 互联网络用户的剧增宽带网络的普及,使得互联网络服务的本质是以海量数据处理为中心的服务。从搜索引擎、视频共享到电子商务,互联网络服务的成功与否在 很大程度上依赖于所提供数据的规模质量,数据处理的及时...
  • 本质上,每个软件应用程序都可以分为两种类型:计算密集型应用程序和数据密集型应用程序。 然后,有一些应用程序介于这两个极端之间。 今天,我将讨论如何为专注于利用企业数据的应用程序定义高级体系结构,以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 651
精华内容 260
关键字:

计算密集型和数据密集型