精华内容
下载资源
问答
  • 影响缓存的三个因素(命中率、缓存更新策略、缓存最大数据量)
    千次阅读
    2018-12-07 16:27:23

    我们经常通过命中率来衡量缓存机制的好坏和效率,这个命中率指的就是请求缓存次数和缓存返回正确结果的次数的一个比例,这个比例越高,就表明缓存的使用率越高。

    正常的缓存命中率也会因为不同的缓存应用而大不相同,咱们以query cache为例来说明一下,经过服务器一段时间的运行和积累,query cache的命中率在98%以上,而另外的能在85%就算是很高了,这个跟我们的缓存机制的实现有关系,一般来说,越复杂的缓存机制,越难以保证命中率,随着系统的积累,缓存命中率会逐渐增长至稳定状态。

    我们需要注意的是,就是不要频繁的更新缓存数据,这样会降低命中率,如果不得不做的话,就得考虑缓存在这里是否合理了。

    缓存更新策略一般有以下三种:

    1. FIFO(first in first out),也就是说,最先进入缓存的数据,在缓存空间不够的情况下,将会被先清除
    2. LFU(less frequently used),这里是说,最少使用的元素会先被清理,这里需要标记元素使用情况
    3. LRU(least recently used),这个说的是最近最少使用的元素会先被清理,需给元素标记时间戳,距离当前时间最远的元素,将会先被清理

    缓存最大数据量是指在缓存中能处理元素的最大个数或者说所能使用的最大空间。通常来讲,各种缓存机制都会对缓存的最大数据量进行限制,可以是固定大小的存储空间、集合个数,或者是由操作系统所能处理和分配的存储空间决定。

    而超过缓存机制所允许的最大数据量,系统会进行相应的处理,一般有四种处理方式:

    1. 停止缓存服务,把所有的缓存数据清空
    2. 拒绝写入,不再对缓存数据进行更新
    3. 根据缓存更新策略,清除旧数据
    4. 在第三点的基础上,将淘汰的数据备份,腾出新的空间

    好啦,咱们也不废话,今天的记录就到这里了。

    如果感觉不错的话,请多多点赞支持哦。。。

    更多相关内容
  • 利用仿真得到不同条件下影响缓冲容量大小的因素,得出在无数据丢失的前提下,缓冲区大小与数据输入流和输出流两者差值的关系:在其他条件不变的情况下,输入流速率与输出流速率的差值越大,所需要的环形缓冲容量就越...
  • 基于质量守恒以及电中性条件,采用化学平衡计算法,计算机模拟研究了高岭石固相平衡的酸性天然地表水中铝的缓冲作用对pH值,酸中和容量ANC和缓冲强度β的影响。讨论了影响酸性地表水pH值估算的各种因素、如溶解硅酸的...
  • 三、影响缓存命中率的几个因素 1、业务场景和业务需求 缓存适合“读多写少”的业务场景,反之,使用缓存的意义其实并不大,命中率会很低。 业务需求决定了对时效性的要求,直接影响到缓存的过期时间和更新...

     

    一、缓存命中率的介绍

    命中:可以直接通过缓存获取到需要的数据。

    不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。

    通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。

    由此可见,在高并发的互联网系统中,缓存的命中率是至关重要的指标。

     

    二、如何监控缓存的命中率

    在memcached中,运行state命令可以查看memcached服务的状态信息,其中cmd_get表示总的get次数,get_hits表示get的总命中次数,命中率 = get_hits/cmd_get。

    当然,我们也可以通过一些开源的第三方工具对整个memcached集群进行监控,显示会更直观。比较典型的包括:zabbix、MemAdmin等。

    如图:MemAdmin对memcached服务的命中率情况的监控统计

    同理,在redis中可以运行info命令查看redis服务的状态信息,其中keyspace_hits为总的命中中次数,keyspace_misses为总的miss次数,命中率=keyspace_hits/(keyspace_hits+keyspace_misses)。

    开源工具Redis-star能以图表方式直观redis服务相关信息,同时,zabbix也提供了相关的插件对redis服务进行监控。

     

    三、影响缓存命中率的几个因素

    1、业务场景和业务需求

    缓存适合“读多写少”的业务场景,反之,使用缓存的意义其实并不大,命中率会很低。

    业务需求决定了对时效性的要求,直接影响到缓存的过期时间和更新策略。时效性要求越低,就越适合缓存。在相同key和相同请求数的情况下,缓存时间越长,命中率会越高。

    互联网应用的大多数业务场景下都是很适合使用缓存的。

    2、缓存的设计(粒度和策略)

    通常情况下,缓存的粒度越小,命中率会越高。举个实际的例子说明:

    当缓存单个对象的时候(例如:单个用户信息),只有当该对象对应的数据发生变化时,我们才需要更新缓存或者让移除缓存。而当缓存一个集合的时候(例如:所有用户数据),其中任何一个对象对应的数据发生变化时,都需要更新或移除缓存。

    还有另一种情况,假设其他地方也需要获取该对象对应的数据时(比如其他地方也需要获取单个用户信息),如果缓存的是单个对象,则可以直接命中缓存,反之,则无法直接命中。这样更加灵活,缓存命中率会更高。

    此外,缓存的更新/过期策略也直接影响到缓存的命中率。当数据发生变化时,直接更新缓存的值会比移除缓存(或者让缓存过期)的命中率更高,当然,系统复杂度也会更高。

    3、缓存容量和基础设施

    缓存的容量有限,则容易引起缓存失效和被淘汰(目前多数的缓存框架或中间件都采用了LRU算法)。同时,缓存的技术选型也是至关重要的,比如采用应用内置的本地缓存就比较容易出现单机瓶颈,而采用分布式缓存则毕竟容易扩展。所以需要做好系统容量规划,并考虑是否可扩展。此外,不同的缓存框架或中间件,其效率和稳定性也是存在差异的。

    4、其他因素

    当缓存节点发生故障时,需要避免缓存失效并最大程度降低影响,这种特殊情况也是架构师需要考虑的。业内比较典型的做法就是通过一致性Hash算法,或者通过节点冗余的方式。

    有些朋友可能会有这样的理解误区:既然业务需求对数据时效性要求很高,而缓存时间又会影响到缓存命中率,那么系统就别使用缓存了。其实这忽略了一个重要因素--并发。通常来讲,在相同缓存时间和key的情况下,并发越高,缓存的收益会越高,即便缓存时间很短。

     

    四、提高缓存命中率的方法

    从架构师的角度,需要应用尽可能的通过缓存直接获取数据,并避免缓存失效。这也是比较考验架构师能力的,需要在业务需求,缓存粒度,缓存策略,技术选型等各个方面去通盘考虑并做权衡。尽可能的聚焦在高频访问且时效性要求不高的热点业务上,通过缓存预加载(预热)、增加存储容量、调整缓存粒度、更新缓存等手段来提高命中率。

    对于时效性很高(或缓存空间有限),内容跨度很大(或访问很随机),并且访问量不高的应用来说缓存命中率可能长期很低,可能预热后的缓存还没来得被访问就已经过期了。

     

    最后

    欢迎大家一起交流,喜欢文章记得点个赞哟,感谢支持!

    展开全文
  • 影响MapReduce性能的因素

    千次阅读 2018-03-24 15:56:41
    Hadoop MapReduce性能优化影响MapReduce输入数据处理时间的因素很多。其中之一是实现map和reduce函数时使用的算法。其他外部因素也可能影响MapReduce性能。根据我们的经验和观察,可能影响MapReduce的主要因素有以下...

    Hadoop MapReduce性能优化
    影响MapReduce输入数据处理时间的因素很多。其中之一是实现map和reduce函数时使用的算法。其他外部因素也可能影响MapReduce性能。根据我们的经验和观察,可能影响MapReduce的主要因素有以下几个。

    • 硬件(或者资源)因素,如CPU时钟、磁盘I/O、网络带宽和内存大小。
    • 底层存储系统。
    • 输入数据、分拣(shuffle)数据以及输出数据的大小,这与作业的运行时间紧密相关。
    • 作业算法(或者程序),如map、reduce、partition、combine和compress。有些算法很难在MapReduce中概念化,或者在MapReduce中效率可能会降低。

    运行map任务时,shuffle子任务的中间输出存储在内存缓冲区中,用以减少磁盘I/O。输出的大小可能会超过内存缓冲区而造成溢出,因此需要spill子阶段把数据刷新到本地文件系统。这个子阶段也会影响MapReduce性能,它经常采用多线程技术实现,以便使磁盘I/O利用率最大化并缩减作业的运行时间。

    MapReduce编程模型允许用户使用自己的map和reduce函数指定数据转换逻辑。本模型并不限定map函数产生的中间对在交由reduce函数处理前如何被分组。因此,归并排序(merge-sort)算法被用作默认的分类算法。然而,归并排序算法并非总是最高效的,尤其是对分析型任务(如聚合和等值连接)而言,这类任务并不关心中间键的顺序。

    提示.tif对于MapReduce编程模型来说,分组(grouping)/划分(partitioning)是一个串行的任务。这就意味着在reduce任务可以运行之前,框架需要等待所有map任务完成。

    想要深入学习归并排序算法,请参考http://en.wikipedia.org/wiki/Merge_sort
    MapReduce性能是以map和reduce的运行时间为基础的。这是因为典型环境下集群节点数目和节点插槽数目这类参数是不可修改的。

    其他可能对MapReduce性能构成潜在影响的因素具体如下。

    • I/O模式:也就是从存储系统获取数据的方式。从底层存储系统读取数据有以下两种模式。
      直接I/O:通过硬件控制器把数据从本地硬盘缓存中直接读到内存,因而不需要进程间通信成本。

    流式I/O:通过特定进程间通信手段,如TCP/IP和JDBC,从其他正在运行进程(典型情况是存储系统进程)读取数据。

    从提高性能的角度看,使用直接I/O比流式I/O更高效。

    • 输入数据解析:是指从存储系统获取数据时,从原始数据到键值对的转换过程。数据解析过程的目标是把原始数据按照原来的格式解码,并转换为可供Java等编程语言处理的数据对象。

    输入数据可以解码为(Java或者其他语言)对象,这样当对象实例创建后,对象内容可以改变,典型的情况是使用对对象实例的引用(这样的对象叫做可变对象),输入数据也可以解码为一经创建其内容就不可改变的对象(叫做不可变对象)。在上百万条记录的情况下,不可变对象的解码过程会明显比可变对象的解码过程慢,这是因为在前者解码过程中产生了大量不可变对象。因此,这会导致系统性能的降低。 - 输入数据存储:当MapReduce获取数据并进行进一步处理时,所在的存储系统必须保证高速访问和数据可用性(如HDFS和HBase)。如果选用的不是那些推荐的与MapReduce一起使用的存储文件系统,那么输入数据的访问会潜在地影响MapReduce性能。

    使用Hadoop框架时,许多因素可能会影响整个系统的性能和作业的运行时间。这些因素可能是Hadoop MapReduce引擎的一部分,也可能是引擎之外的。

    Hadoop配置参数通常会影响并发运行的任务数,并决定作业的运行时间,因为Hadoop集群被建立且作业开始执行后,其他因素就不可改变了。如果Hadoop框架配置不当,可能无法充分利用集群资源,并因此影响MapReduce作业性能。这是因为大量的配置参数控制着Hadoop框架的行为。

    一项Hadoop作业经常由许多实现不同算法的子模块组成,这些子模块要么以串行方式连接,要么以并行方式连接。如果Hadoop框架配置不当,可能会影响内部任务完成的协作方式。所有这类参数(将在第2章讨论)设置的影响都依赖于map和reduce函数的代码、集群资源,当然还有输入数据。

    MapReduce作业的性能也可能受Hadoop集群节点数的影响,以及受所有节点中运行map和reduce任务的可用资源的影响。每个节点的容量决定了一个节点可以执行的mapper和recducer任务的数量。因此,如果节点资源利用不充分或者过度利用,都会直接影响MapReduce任务的性能。

    展开全文
  • 高速缓冲存储器部件结构及原理解析高速缓存 CACHE用途设置在 CPU 和 主存储器之间,完成高速与 CPU交换信息,尽量避免 CPU不必要地多次直接访问慢速的主存储器,从而提高计算机系统的运行效率。高速缓存 CACHE实现...

    高速缓冲存储器部件结构及原理解析

    高速缓存 CACHE用途设置在 CPU 和 主存储器之间,完成高速与 CPU交换信息,尽量避免 CPU不必要地多次直接访问慢速的主存储器,从而提高计算机系统的运行效率。

    高速缓存 CACHE实现原理把CPU最近最可能用到的少量信息(数据或指令)从主存复制到CACHE中,当CPU下次再用到这些信息时,它就不必访问慢速的主存,而直接从快速的CACHE中得到,从而提高了速度。

    评价CACHE性能的关键指标要有足够高的命中率,当CPU需用主存中的数据时,多数情况下可以直接从CACHE中得到,尽量少读主存储器。称二者之比为命中率。

    一、CACHE的基本运行原理

    1、 CACHE的存储单元的组成

    CACHE的存储单元是由三部分组成的

    1位有效位:“0”表示该单元尚未使用,“1”表示数据有效

    eace64c259b6ff2c0b757c10a11df5e1.gif

    (1) CACHE单元不一定以字为单位与主存实现相互对应,因为存储一个完整的主存地址占用位数太多。

    (2) CACHE与主存交换信息时,不一定每次以一个主存字为单位进行交换,常用的是以字块的形式(cache line size)进行数据传送。

    二、CACHE的3种映像方式

    地址映像:把主存地址的数据复制到cache时,还要把该主存的地址经过某种函数关系处理后写进CACHE的标志字段,这一过程称为CACHE的地址映像。

    地址变换:在程序执行时,要把主存地址变换为访问CACHE的地址,这一过程称为CACHE的地址变换。

    这二者的处理方案是密切相关的。

    1、全相联映像方式

    b7121f0fdad5ec81f3dbdbebcabb08a2.gif

    全相联映像方式的优缺点

    地址映像:写入CACHE时,要将主存的全部地址写入CACHE的标志字段

    地址变换:用读主存的整个地址去与CACHE中的每一个单元的标志字段进行比较。

    优点:使用灵活、方便

    缺点:比较地址字段必须与整个CACHE中每一个单元的标志字段都进行比较,所以线路复杂,成本太高,难以实现,只是适用于容量小的CACHE。

    2、直接映射方式

    a87048d5e0f879591fbfeafa2bf7f697.gif

    直接映射方式

    地址映像:写入CACHE时,仅将主存的区段号写入CACHE的标志字段

    地址变换:要将读主存地址中的区段内偏移地址去访问CACHE的一个单元,只需用主存地址的区段号与标志字段内容进行比较。

    3、多路(两路)组相联方式

    61a6dff0cb3dfed9b8c8e4cab161b801.gif

    多路(两路)组相联方式实现原理

    把 CACHE存储器组织为同等容量的多体结构,例如2个存储体。主存仍然划分成容量等于每个CACHE存储体的多个区段。

    主存地址格式如下:

    区段号

    区段内的偏移量

    多路(两路)组相联方式

    地址映像:写入CACHE时,仅将主存的区段号写入CACHE的标志字段

    地址变换:要将读主存地址中的区段内偏移地址去访问每一个CACHE体的一个单元,只需用主存地址的区段号与标志字段内容进行比较。

    三、 CACHE存储器实用中的几个问题

    CACHE存储器的重要技术指标是它的命中率,影响 CACHE 命中率的因素有:

    1.CACHE 的容量与命中率的关系

    虽然容量大一些好,但CACHE 容量达到一定大小之后,再增加其容量对命中率的提高并不明显。

    2、 Cache Line Size ( CACHE每次与内存交换信息的单位量)与命中率的关系:

    每次交换信息的单位量适中,不是以一个字为单位,而是以几个字(称为CACHE行容量,通常为4~32个字节)在主存与CACHE之间实现信息传送。

    3、多级的CACHE结构与命中率的关系:

    668bcd4acf88274a0f78213b3da31ea8.gif

    4.CACHE的不同映像方式与命中率的关系:

    全相联映像方式不适用

    直接映像方式命中率低

    多路组相联方式性能/价格比更好

    直接映像方式中CACHE容量为8K字,被分成1024组,每组8个字,同时,主存也分成8个字的组,1024组构成一页。主存的0组只能映射到CACHE的0组,主存的1组只能映射到CACHE的1组,依次类推。地址结构如下:

    5、写CACHE的策略和对系统的影响

    (1)一个外设向主存写入了一个数据,该主存单元原先的副本在CACHE中,出现不一致,此时最简单的办法就是把CACHE中相应单元的有效位清除掉,当CPU再次需这一主存单元时,只能从主存重新取得而不会使用CACHE中的旧值。

    (2)改写主存储器的策略

    若CPU改写了 CACHE 一单元内容后且尚未改变主存相应单元内容,则出现数据不一致性。两种解决办法:

    第1.接下来直接改写主存单元内容。简便易行, 但可能带来系统运行效率不高的问题,该后未被使用。

    第2.拖后改写主存单元内容,一直拖到有另外的设备要读该内容过时的主存单元时。首先停止这一读操作,接下来改写主存内容,之后再起动已停下来的读操作,否则不必改写。

    矛盾是如何检查是否应该改写,通过监视地址总线完成,记下无效单元地址用于比较。 控制复杂些,但可以提供更高系统的运行效率。

    展开全文
  • 由于 CPU 和主存在速度上的存在着巨大差 异, 现代计算机都在 CPU 和主存之间设置一个高速、 小容量缓冲存储器 cache。 Cache 最重要的技术指标是它的命中率。 本文简单讨论了影响 Cache 命中率的几 个因素。 ...
  • 一:缓冲溶液 1:同离子效应: 在一个弱电解质(弱酸或者弱碱)的平衡体系里面加入与弱电解质具有相同离子的强电解质,可以降低弱电解质的电离程度。 也即: 在弱酸溶液中加入该酸的共轭碱,或在弱碱的溶液中加入该...
  • TCP缓冲区大小及限制

    千次阅读 2019-03-14 17:56:35
    TCP缓冲区大小及限制 这个问题在前面有的部分已经涉及,这里在重新总结下。主要参考UNIX网络编程。 (1)数据报大小 IPv4的数据报最大大小是65535字节,包括IPv4首部。因为首部中说明大小的字段为16位。 IPv6的数据...
  • 环形缓冲区应用实例

    千次阅读 2020-02-25 21:14:20
    一、环形缓冲区的介绍 如果您对CPU缓冲区或者对环形缓冲区有一定了解,您可以直接跳到第二章阅读使用场景 (图来自:来自维基百科) 概念(来自维基百科):圆形缓冲区(circular buffer),也称作圆形队列...
  • 高速缓冲存储器

    千次阅读 2016-02-17 11:35:47
     Cache的出现因素:首先,是由于CPU的速度和性能以及发展速度很快但主存速度较低且价格高,第二就是程序执行的局部性特点。因此,将速度比较快而容量有限的SRAM构成Cache,目的在于尽可能发挥CPU的高速度。  在...
  • 一、MySQL性能优化之-影响性能的因素1.商业需求的影响不合理需求造成资源投入产出比过低,这里我们就用一个看上去很简单的功能来分析一下。需求:一个论坛帖子总量的统计,附加要求:实时更新从功能上来看非常容易...
  • 在信息安全和编程中,缓冲区溢出是一种...缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量溢出的数据覆盖在合法数据上,理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝
  • 第五章 磁盘管理 - I/O控制,缓冲区管理 I/O 设备 按使用特性分类 按传输速率分类 按信息交换的单位分类 I/O 控制器 为什么有 I/O 控制器? I/O 控制器在哪里? 主要功能 组成 两种寄存器编址方式 I/O 控制方式 程序...
  • 内存越多越好,但是对性能的影响有限,并不能无限的增加性能2、磁盘的配置和选择 1、传统磁盘:容量、传输速度、访问时间、主轴转速、物理尺寸 2、使用RAID增加传统机器硬盘的性能:将容量较小的硬盘组装成容量较...
  • 当然,每次调用的成本与缓冲区的当前大小成线性关系,但我在这里简化并计算它们:expandCapacity()的数量(时间)默认配置(16个字符容量)>在60%的情况下,StringBuilder将扩展0次>在39%的情况下,Stri...
  • [操作系统]I/O管理 缓冲区/SPOOLing

    千次阅读 2020-08-29 16:03:31
    主要功能:缓冲区管理,设备分配,设备处理,虚拟设备,实现设备独立性 I/O管理概述 I/O管理目标 提供统一界面、方便用户使用 使用逻辑操作和逻辑设备名掩盖设备的物理细节。 程序对设备的独立性:在源程序和目标...
  • 那回来看这个问题,既然大的时候视频会卡,那么改小了,让应用层早点知道tcp没有收到而已,对整个网络也就是省了点流量,对实时视频是否卡影响不大,自己的分析,待验证。  如果怀疑是机器问题,或者是tcp配置...
  • 文章目录影响性能的几个因素 影响性能的几个因素 硬件资源(CPU 、内存、磁盘等) 操作系统的区别 MySQL的存储引擎的选择 MyISAM: 不支持事务,表级锁 InnoDB: 事务级存储引擎,完美支持行级锁,事务ACID...
  • 超硬核!操作系统学霸笔记,考试复习面试全靠它

    万次阅读 多人点赞 2021-03-22 18:43:49
    1)顺序性:处理机严格按照程序所规定的顺序执行,每一步操作必须在下一步操作开始前执行 2)封闭性:程序在封闭的环境下运行,程序独占资源,资源的状态由程序决定,程序一旦开始执行,外界环境不会影响程序的执行...
  • 缓冲区及缓冲区溢出

    2015-01-26 18:31:51
    这几天看到经常看到缓冲区这个概念,今天上网搜了一下,对缓冲区作出以下解释。  缓冲区  1,概念篇  缓冲区是一个逻辑上的概念,几乎所有的存储设备都有缓冲区,比如硬盘,系统可以指定给硬盘一定量的...
  • 为了解决这个问题,我们在CPU和主存之间加入了一级高速缓冲存储器Cache(SRAM),称为缓存。Cache的速度要高于主存,但容量比较小(价位比较高的原因) 要避免CPU的“空等”现象,这意味着CPU运行所需要的的大部分...
  • 值传递的特点是,被调函数对形式参数的任何操作都是作为局部变量进行的,不会影响主调函数的实参变量的值(形参指针变了,实参指针不会变)。 引用参数传递过程中,被调函数的形式参数也作为局部变量在栈中开辟了...
  • 链段是啤酒生产线设计中需要考虑的重要因素,它直接与影响啤酒生产线性能指标的缓冲容量和缓冲时间参数紧密相关。链段设计本质上是一种组合优化问题。但由于生产线动静特性的影响,不能建立精确的生产线数学分析模型...
  • InnoDB缓冲

    千次阅读 2018-04-03 11:29:07
    一、InnoDB缓冲池用户对数据库的最基本要求就是能高效的读取和存储数据,但是读写数据都涉及到与低速的设备交互,为了弥补两者之间的速度差异,所有数据库都有缓存池,用来管理相应的数据页,提高数据库的效率,当然...
  • L1告诉缓存的容量和结构对CPU性能影响很大,但是由于它的结构很复杂,考虑到成本等方面的因素,一般CPU的一级缓存也就能做到256KB左右的水平。 L2 Cache二级缓存 二级缓存是CPU的第二层级高速缓存,二级缓存的容量会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,798
精华内容 9,519
关键字:

影响缓冲容量的因素