首页 文章 精选 留言 我的

精选列表

搜索[快直播],共10000篇文章
优秀的个人博客,低调大师

林俊旸从阿里离开后首度发声:推理模型的时代快结束了

过去两年重塑了我们评估模型的方式和对模型的期望。OpenAI的o1证明了「思考」可以成为一种核心能力——一种你专门训练并向用户开放的能力。DeepSeek-R1证明了推理风格的后训练可以在原始实验室之外被复现和规模化。OpenAI将o1描述为一个通过强化学习训练的模型,让它「在回答之前先思考」。DeepSeek则将R1定位为一个与o1竞争的开源推理模型。

优秀的个人博客,低调大师

MySQL一会儿快,一会儿慢的,我该怎么办?

Mysql中的WAL机制,InnoDB在处理更新语句的时候,只做了写日志这一个磁盘操作。这个日志叫作redo log(重做日志)。 做下类比的话,掌柜记账的账本是数据文件,记账用的粉板是日志文件(redo log),掌柜的记忆就是内存。 平时执行很快的更新操作,其实就是在写内存和日志,而MySQL偶尔慢一下的那个瞬间,可能就是在刷脏页(flush)。 当内存数据页跟磁盘数据页内容不一致的时候,称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。 1.1 什么情况会引发数据库的flush过程? 第一种场景是,InnoDB的redo log写满了。这时候系统会停止所有更新操作,把checkpoint往前推进,redo log留出空间可以继续写。 checkpoint可不是随便往前修改一下位置就可以的。比如图2中,把checkpoint位置从CP推进到CP’,就需要将两个点之间的日志(浅绿色部分),对应的所有脏页都flush到磁盘上。之后,图中从write pos到CP’之间就是可以再写入的redo log的区域。 第二种场景是,系统内存不足。当需要新的内存页,而内存不够用的时候,就要淘汰一些数据页,空出内存给别的数据页使用。如果淘汰的是“脏页”,就要先将脏页写到磁盘。如果刷脏页一定会写盘,就保证了每个数据页有两种状态: 内存里存在,内存里就肯定是正确的结果,直接返回; 内存里没有数据,就可以肯定数据文件上是正确的结果,读入内存后返回。 第三种场景是,MySQL认为系统“空闲”的时候。即使是用的比较多的时候,也要见缝插针地找时间,只要有机会就刷一点“脏页”。 第四种场景是,MySQL正常关闭的情况。这时候,MySQL会把内存的脏页都flush到磁盘上,这样下次MySQL启动的时候,就可以直接从磁盘上读数据,启动速度会很快。 1.2 上面四种场景对性能的影响 第三种情况是属于MySQL空闲时的操作,这时系统没什么压力,而第四种场景是数据库本来就要关闭了。这两种情况下,不会太关注性能问题。 第一种是“redo log写满了,要flush脏页”,这种情况是InnoDB要尽量避免的。因为出现这种情况的时候,整个系统就不能再接受更新了,所有的更新都必须堵住。如果从监控上看,这时候更新数会跌为0。 第二种是“内存不够用了,要先将脏页写到磁盘”,这种情况其实是常态。InnoDB用缓冲池(buffer pool)管理内存,缓冲池中的内存页有三种状态: 第一种是,还没有使用的; 第二种是,使用了并且是干净页; 第三种是,使用了并且是脏页。 InnoDB的策略是尽量使用内存,因此对于一个长时间运行的库来说,未被使用的页面很少。 而当要读入的数据页没有在内存的时候,就必须到缓冲池中申请一个数据页。这时候只能把最久不使用的数据页从内存中淘汰掉:如果要淘汰的是一个干净页,就直接释放出来复用;但如果是脏页,就必须将脏页先刷到磁盘,变成干净页后才能复用。 所以,刷脏页虽然是常态,但是出现以下这两种情况,都是会明显影响性能的: 一个查询要淘汰的脏页个数太多,会导致查询的响应时间明显变长; 日志写满,更新全部堵住,写性能跌为0,这种情况对敏感业务来说,是不能接受的。 所以,InnoDB需要有控制脏页比例的机制,来尽量避免上面的这两种情况。 2 InnoDB刷脏页的控制策略 首先,要正确地告诉InnoDB所在主机的IO能力,这样InnoDB才能知道需要全力刷脏页的时候,可以刷多快。 这就要用到innodb_io_capacity这个参数,表示InnoDB的磁盘能力。这个值建议设置成磁盘的IOPS。磁盘的IOPS可以通过fio这个工具来测试命令: fio -filename=$filename -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size=500M -numjobs=10 -runtime=10 -group_reporting -name=mytest 复制代码 2.1 设计策略控制刷脏页的速度,会参考哪些因素? 这个问题可以这么想,如果刷太慢,会出现什么情况? 首先是内存脏页太多,其次是redo log写满。所以,InnoDB的刷盘速度就是要参考这两个因素:一个是脏页比例,一个是redo log写盘速度。InnoDB会根据这两个因素先单独算出两个数字。 参数innodb_max_dirty_pages_pct是脏页比例上限,默认值是75%。InnoDB会根据当前的脏页比例(假设为M),算出一个范围在0到100之间的数字,计算这个数字的伪代码类似这样: F1(M) { if M>=innodb_max_dirty_pages_pct then return 100; return 100*M/innodb_max_dirty_pages_pct; } 复制代码 InnoDB每次写入的日志都有一个序号,当前写入的序号跟checkpoint对应的序号之间的差值,设为N。InnoDB会根据这个N算出一个范围在0到100之间的数字,这个计算公式可以记为F2(N),N越大,算出来的值越大。 然后,根据上述算得的F1(M)和F2(N)两个值,取其中较大的值记为R,之后引擎就可以按照innodb_io_capacity定义的能力乘以R%来控制刷脏页的速度。 图中的F1、F2就是上面我们通过脏页比例和redo log写入速度算出来的两个值。 InnoDB会在后台刷脏页,而刷脏页的过程是要将内存页写入磁盘。所以,无论是查询语句在需要内存的时候可能要求淘汰一个脏页,还是由于刷脏页的逻辑会占用IO资源并可能影响到了更新语句,都可能是造成从业务端感知到MySQL“抖”了一下的原因。 要尽量避免这种情况,就要合理地设置innodb_io_capacity的值,并且平时要多关注脏页比例,不要让它经常接近75%。 其中,脏页比例是通过Innodb_buffer_pool_pages_dirty 除以 Innodb_buffer_pool_pages_total得到的,具体的命令参考下面的代码: select VARIABLE_VALUE into @a from global_status where VARIABLE_NAME = 'Innodb_buffer_pool_pages_dirty'; select VARIABLE_VALUE into @b from global_status where VARIABLE_NAME = 'Innodb_buffer_pool_pages_total'; select @a/@b; 复制代码 一个有趣的策略: 一旦一个查询请求需要在执行过程中先flush掉一个脏页时,这个查询就可能要比平时慢了。而MySQL中的一个机制,可能让你的查询会更慢:在准备刷一个脏页的时候,如果这个数据页旁边的数据页刚好是脏页,就会把这个“邻居”也带着一起刷掉;而且这个把“邻居”拖下水的逻辑还可以继续蔓延,也就是对于每个邻居数据页,如果跟它相邻的数据页也还是脏页的话,也会被放到一起刷。 在InnoDB中,innodb_flush_neighbors 参数就是用来控制这个行为的,值为1的时候会有上述的“连坐”机制,值为0时表示不找邻居,自己刷自己的。 找“邻居”这个优化在机械硬盘时代是很有意义的,可以减少很多随机IO。机械硬盘的随机IOPS一般只有几百,相同的逻辑操作减少随机IO就意味着系统性能的大幅度提升。 而如果使用的是SSD这类IOPS比较高的设备的话,就建议把innodb_flush_neighbors的值设置成0。因为这时候IOPS往往不是瓶颈,而“只刷自己”,就能更快地执行完必要的刷脏页操作,减少SQL语句响应时间。 在MySQL 8.0中,innodb_flush_neighbors参数的默认值已经是0了。 最后 如果你觉得此文对你有一丁点帮助,点个赞。或者可以加入我的开发交流群:1025263163相互学习,我们会有专业的技术答疑解惑 如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star:http://github.crmeb.net/u/defu不胜感激!

优秀的个人博客,低调大师

除了比4G快,5G还有哪些你不知道的秘密?

2020年已经过去,展望2021年,我们希望新常态是一条比过去12个月更少未知的道路。事实上,我们希望未来的未知对我们的家庭和工作生活都是积极的。对我们大多数人来说,手机、互联网和技术的进步仍然是积极的,而且总体上持续增长。因此,2020年蜂窝网络和物联网(IoT)世界的新“流行语”是5G。4GLTE的这种演变不应该让人感到意外,因为自上世纪80年代中期第一代模拟手机技术问世以来,我们就一直处于手机进化的世界。大约每隔10年,就会出现一代又一代的“G”蜂窝技术。人们已经开始期待它了。未知或期望的是,新技术将带来什么,以及它对整个行业和整个人口的意义。 当然,新技术的许多好处只能在与新应用程序和用例配对后才能实现。因此,你可能会说,5G连接更快,那又怎样?但远远不止这些;其实,消费者手机数据传输速度只是冰山一角。下面是一组令人惊叹的复杂网络元素,它们被设计用来产生前所未有的连通性。 URLLC和mMTC 另外两项突破性的技术进步来自5G连接,这将补充速度,并提供了启动应用程序和用例的能力,这是以前不可能的。这些是超可靠低延迟通信(URLLC)和大规模机器类型通信(mMTC)。事实上,早在2019年5月,《福布斯》杂志就发表过一篇关于5G的文章,标题是《为什么5G不仅仅是更快的4G》。在这篇文章中,《福布斯消费科技》(ForbesConsumerTech)的前撰稿人西蒙·洛克曼(SimonRockman)讨论了将推动5G超越我们所见过的一切的三个主要因素。要完全掌握这些概念,需要对背景中发生的事情有一个基本的了解。这是技术性的;然而,真实世界的例子并非如此。 是的,5G的连接速度更快。这是快得多。它被称为eMBB(增强移动宽带或极端移动宽带)。这是非常先进的工程,围绕着三个相互交织的组件:天线、基站无线电和软件。 MIMO 通过在设备(和相应的基站)中合并大量的分组天线,可以创建多条数据流路径,然后将这些路径组合形成信息高速公路。这被称为大规模MIMO(多进多出),为非常高的吞吐量奠定了基础。在MIMO技术之前,如果设备从塔接收到多个信号,则会被视为干扰,会产生相反的效果(称为多径传播),并且会严重降低数据吞吐量。通过融合先进的天线技术和高度计算的信号处理,曾经被认为是“无线电噪声”的东西现在被用作加速器,为我们提供5G速度。 这些庞大的MIMO天线组与频谱共享、无许可Wi-Fi辅助和专门的信道编码软件等先进无线电技术相结合,为eMBB提供用户所需的功能,以满足用户对流媒体HD/4K视频、移动虚拟现实(VR)耳机和用于远程医疗等行业垂直市场的大容量物联网数据流的需求。有趣的是,构成4GLTE潜在50-100倍速度的组件还对其他方面有很大影响:延迟。 延迟 为了直观地理解什么是延迟,我们需要理解它与速度之间的关系。如果我们把速度比作汽车行驶的速度,那么延迟就是“0-60”。它表示比特和字节到达所需的时间或延迟。减少延迟(降低延迟)允许出现以前从未出现过的新应用程序和技术。例如,一辆自动驾驶汽车可以感知周围环境,并在无人参与的情况下进行操作。为了让汽车在马路上与其他车辆、行人和交通灯安全行驶,就需要与周围的环境进行互动。这就要求它们以某种方式连接起来,比如通过蜂窝网络。 在5G连接带来极低的延迟之前,蜂窝网络的延迟太大了,让这些车辆来不及做出足够快的反应来创造一个安全的环境。这种互动中的任何延迟都可能造成毁灭性的影响。在5G中,低延迟在车辆与周围任何事物快速通信和安全提供适当响应方面发挥着重要作用。这被称为“车辆至万物”(VehicletoEverything,简称V2X)通信,不仅在自动驾驶汽车上,还将在运输卡车、铁路/船舶/航空运输或任何在其他环境中运行的机器上发挥巨大作用。 布里斯托大学组织了一场关于5G低延迟特性的精彩演示。名为《管弦乐》的小提琴家AnnekaSutcliffe在布里斯托尔演奏,MischaDohler教授在伦敦市政厅的钢琴前演奏,歌手NoaDohler和小提琴家RitaFernandes在伦敦尤斯顿的DigitalCatapult通过5G网络在他们的偏僻地点表演。通过移动蜂窝连接同步音乐家的要求非常高,因为人的耳朵非常善于感知哪怕是最轻微的延迟。然而,当他们排练这首曲子时,这两把小提琴听起来就像一只小提琴。观众的体验就像音乐家在同一场地表演一样。 规模 在5G三大突破性进步中,最后一点(但肯定不是最不重要的一点)是关注机器连接到互联网的大规模。5G网络能够在一个小而专注的领域内连接数百万个物联网设备,这种能力被称为大规模机器类型通信(mMTC)。5G规范要求mMTC要求每平方公里有100万个连接。这种能力远远超过4G的容量,将允许大量运行、监测和控制许多类型的小型传感器设备。 一个很好的例子是,汽车工业将装配机器人和它们包含的许多传感器连接到工厂内的一个中央“状态监控”软件。状态监控是指监督这些机器人及其内部工作状态(工厂状态),以防止计划外缺陷。沿着生产过程记录条件特征,使产品的持续质量控制成为可能。这些机器中嵌入的数百个无线传感器节点(例如,摄像头、声音检测、接近传感器、温度传感器)通过5G网络进行无线连接。如果没有这种无线网络,这些机器将受制于有线网络连接,并限制它们可以放置在工厂车间的位置。这意味着生产设置可以很容易地改变和单位移动,以最大限度地提高工厂效率。 总而言之,5G连接最明显、最容易展示的优势就是令人难以置信的下载速度。但当我们深入研究时,我们会发现这种进化还有更多的奥秘。事实上,利用5G无线网络的业内人士刚刚意识到,当你将速度、可靠性和规模结合到一个前所未有的程度时,你会发现大量的、广泛的(还有一些尚未发现的)机会。

优秀的个人博客,低调大师

首批商用5G国家网速一览:比Wi-Fi快几条街

即将开播:5月14日,Jenkins在K8S下的三种部署流程和实战演示 一直有声音称,5G的大面积商用将是对Wi-Fi的加速淘汰,从单从实际的速度上来看,似乎是这样。 Opensignal的数据显示,在下一代移动技术已被成熟部署的八个国家中,有七个国家的5G网络的下行数据速率比Wi-Fi快得多。沙特阿拉伯的5G速度最快,典型的下载速度为291.2Mb/s,而Wi-Fi的下载速度为21.4Mb/s,其次是韩国、瑞士、科威特、澳大利亚、西班牙和英国。 在大多数国家,最初的5G网络部署在高容量的中频段,通常是3.5GHz频段,也即是所谓“C-band”。 在移动技术方面,5G相对于4G的下载速度优势,介于沙特阿拉伯的11.9倍到美国的近2倍不等。在韩国,尽管4G速率是八个市场中最快的,但平均5G速率仍要快过4G 4倍多。 研究结果表明,不要让新冠肺炎病毒危机推迟5G的推出,因为该技术带来的更大的容量和更快的速度对保持人们与不断增长的网络使用的联系至关重要。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册