首页 文章 精选 留言 我的

精选列表

搜索[Markdown改进],共10000篇文章
优秀的个人博客,低调大师

Mesa Zink 驱动的一个改进补丁降低了 50% 内存占用

Zink 是基于 Vulkan 的 OpenGL 实现,Valve 公司 Linux 图形驱动程序团队的 Mike Blumenkrantz 最近在研究 Zink 过度使用内存问题的来源。他已经为 Mesa 23.1 提交了一个 Zink 驱动内存优化补丁,这个改动使 Mesa Zink 驱动程序的内存使用率在大多数游戏中减少一半,但不会对性能产生任何负面影响。 背景 OpenGL 的游戏很多都是 x86 二进制文件,它们在 32 位进程中运行,而 32 位地址空间意味着可寻址内存有 4GB 限制,这个限制包括游戏的可寻址内存(例如,游戏的内部 malloc 调用)以及驱动程序的可寻址内存(例如,所有 GPU 映射内存),一旦内存占用临界或者超过该限制,应用就会崩溃。 之前Mesa RADV 驱动程序就出现过内存问题,在打开 Dota 2 时,RADV驱动程序占用了 3GB 主机内存。其中大部分内存占用都来自于内存着色器 IR,最后通过序列化内存中的着色器,节省了 85% 的内存,解决了内存占用异常问题。 Mesa Zink 驱动程序的内存使用和 RADV 驱动的问题有点相似。、Mike 在一篇博文中讲述了自己的内存优化过程,这次作为实验的游戏是古墓丽影三,最初打开游戏时内存占用 2.4 G,而且几乎全部由驱动程序分配: 第一步是着手序列化所有 NIR 着色器(NIR 是一种中间表示 (IR),专为满足 Mesa 中图形驱动程序的需求而设计。)。因为克隆 NIR 着色器会消耗过多的 RAM,对于创建大量图形的游戏来说,这很容易导致内存爆炸。序列化 NIR 比对象形式的 NIR 更紧凑,内存占用量小了一个数量级,使用序列化的 NIR 着色器对内存问题有很大帮助。第二步是压缩链接着色器时发生的 NIR 副本。最后将 Mesa RADV 的修复程序应用到Mesa Zink 中。 最终将古墓丽影 3 的内存使用量降到 482.7 MB,减少了 79.9% 。 目前该内存优化补丁已成功合并到 Mesa 23.1 主线,感兴趣的便宜可以在 Mike 的博客中阅读技术细节。

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

袋鼠云平台代码规范化编译部署的提效性改进实践

一、前言 作为全链路数字化技术与服务提供商,袋鼠云提供了从数据湖、大数据基础平台、离线开发、实时开发、数据服务、数据治理、指标管理、客户数据洞察、数据孪生可视化等全产品体系的服务。 围绕着“行业应用”及“通用应用”,袋鼠云聚焦数智提供全维数字解决方案,帮助企业实现降本增效、快捷转型,迄今为止袋鼠云已服务超过5000家的客户。 面对如此庞大的客户,平台需要不断更新迭代,以适应最新的产品特性,给客户呈现更完备的功能,以达到客户使用平台的极佳体验效果。 为了高效部署和监控袋鼠云平台中的各个产品,袋鼠云自研了新产品大数据基础平台EasyMR,提供快速构建和运维大数据集群的能力,帮助提升大数据平台运维与交互能力。平台层的代码在面向客户升级部署时,需要定义标准化打包规范,以快速和标准化的输出平台层面代码的标准包,借助于大数据基础平台EasyMR,可进行一站式产品包服务的部署、升级、卸载、配置等操作,解放人工运维的成本。 在ToB的客户环境下,我们需要考虑从产品功能迭代到运维出包再到部署的提效优化。面对大型客户的场景,局域网化的部署必然涉及到平台增量包的传输大小限制,特别是在不断增量部署的情况下,客户需要不断审核产品包,而又因为产品包过大而耗费大量时间,大大影响了平台部署产品的效率 基于产品包内存过大影响平台部署效率的问题,袋鼠云技术团队不断探索实践,从平台对编译策略的优化,结合袋鼠云内部产品包的出包优化,来探讨如何在增量策略下,更优的解决产品包的内存大小问题,以解决增量升级的效率性。 二、代码编译优化策略 1、编译 袋鼠云平台层代码使用java开发语言,基于maven的module进行各个平台产品的模块划分,平台层关注的是代码层面功能性,产品的编译包通常基于简单的如: 编译方式,通过内部的maven-shard-plugin插件编译 executable shard jar。 maven-shade-plugin内含有大量的资源转换器(Resource Transformers),可以通过追加的策略来避免因不版本相同属性资源的覆盖错误。 官方参考文档: https://maven.apache.org/plugins-archives/maven-shade-plugin-3.3.0/examples/resource-transformers.html#AppendingTransformer 2、产品包 运维基于平台编译的可执行的jar包例如: {project.name}-{project-version}-jar-with-dependency.jar 需要整合shell启停脚本和配置资源以及sql等输出标准的适配EasyMR部署的标准tar包,大致的整个平台编译的策略如下图: 通过上面的编译到产品包的具体步骤,我们会发现,平台层通过maven-shade-plugin编译为一个executable shard jar的策略下,我们可以思考下面几个问题: 漏洞修复 增量发布包的tar包大小 平台与EasyMR的直接联通 ● 漏洞修复问题 针对这个问题,目前的编译策略无法解决,只能在面对客户漏洞修复的场景下,将整体shade jar做整体产品部署包输出,进行全量升级来解决。 ● 增量发布包的tar包大小问题 针对这个问题:通过编译可执行jar包的策略,即依赖jar和平台自身jar编译为一个整体的jar包的策略是无法解决最小代价的增量升级一个单一jar的问题,该问题势必会导致在toB客户升级场景下的增量jar升级的传包大小的问题。实际上在增量升级的策略下,对于不变的jar包无需做升级替换,对可变的jar包才需要做增量升级替换。 ● 平台与EasyMR的直接联通的问题 目前平台基于EasyMR部署的策略下,还需要通过运维层去出标准的产品包,这个内部无形增加了开发到部署的能力,未来平台会基于EasyMR的标准打包规范,直接能够联通EMR做标准产品tar的产品包编译。 本文主要针对目前平台的第一个问题,即通过拆分平台产品层面的的自身jar和第三方依赖jar的策略来解决。 三、优化策略设计原则 1、规范目录 基于拆分各个平台自身的jar和第三方依赖的jar的原则,我们可以约定平台层输出的编译包的制定统一路径,以便运维统一路径下的产品包的输出。 规范化的编译指定目录,将对于的平台服务层面的配置文件、脚本、依赖等相关的核心内容进行目录拆解,这个也是平台层面去统一抽离编译目录的核心部分。 2、平台编译 基于规范化的编译目录的制定,我们通过assembly maven: (https://maven.apache.org/plugins-archives/maven-assembly-plugin-LATEST/examples/single/including-and-excluding-artifacts.html) 做指定依赖包的隔离,最终通过java -cp CLASSPATH 类加载器加载路径策略将对应的不同隔离jar加载到类加载器中。例如: 3、增量策略 全量包策略下,目录下的lib和dtstack都需要加载到对应的classpath下。 下面分析在增量出包的前提下,一种基于项目为纬度产品出包策略: 即:基于客户A出增量包场景下,对于下次的增量升级策略下,我们可以通过MD5增量比对上次系统出包的lib/dtstack依赖的md5值,增量打包变更/新增的jar包。 基于增量打包的策略能更细粒度的对于升级包的大小和增量升级的维护,需要注意的是,系统运维出包需要维护当前内部jar包的md5值,以作为下次增量产品包输出的依据。 四、总结 基于规范编译目录到平台编译策略的小优化小改造,再到从增量的角度去探讨增量包的出包策略,我们可以均衡的抽离出平台自研的jar包和平台依赖的jar包。 基于此我们能够为未来更细粒度的升级和部署运维袋鼠云平台产品打下基础,同时也是在toB场景下,对于运维部署效率的小提升。无论从引擎层面,平台层面或者是运维层面,袋鼠云持续的产品迭代以及功能特定的增强都是为了面向客户达到更好的运维,部署,以及平台使用的最好的体验。 袋鼠云开源框架钉钉技术交流群(30537511),欢迎对大数据开源项目有兴趣的同学加入交流最新技术信息,开源项目库地址:https://github.com/DTStack/Taier

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

Chrome 改进 Enhanced Safe Browsing 功能,强化扩展程序和文件下载安全性

Google 在 Chrome 浏览器中为 Enhanced Safe Browsing(增强型安全浏览)增加了新的保护功能,如今在安装不受信任的扩展程序时将向用户发出警告,并允许用户要求对下载文件进行更深入的扫描。 Safe Browsing 功能自 2007 年起就内置于 Chrome 浏览器中,当访问恶意网站(例如,试图窃取用户凭证、下载有害文件)时,它会根据存储在 Chrome 浏览器中的不安全网站列表来检查 URL,对这类危险事件发出警告。 Enhanced Safe Browsing 则是 Safe Browsing 的加强版,通过向 Chrome 用户提供的 Enhanced Safe Browsing 功能,Chrome 具有了更快、更主动的保护措施和对密码泄露的警告,大大增加了对危险网站、下载和扩展的保护。 Google 表示,"自推出以来,我们一直在幕后不断改善 Chrome 浏览器的安全功能,以增强实时 URL 检查,并应用机器学习模型来警告以往不知道的攻击。因此,启用了 Enhanced Safe Browsing 的用户成功被钓鱼的次数比其他用户少了 35%。" 如今,一项新的 Enhanced Safe Browsing 功能正陆续向所有用户推出,以提醒他们是否正在安装一个由不值得信任的开发商制作的扩展。 Google 补充道:"当用户从 Chrome Web Store 安装一个新的扩展程序时,Enhanced Safe Browsing 现在将提供额外的保护。如果你要安装的扩展程序不在所信任的扩展程序列表中,浏览器将弹出对话框通知用户。" 开发者们也不必过于担心,根据 Google 的说法,任何遵循 Chrome Web Store 开发者计划政策而开发的扩展程序,都将被视为受到 Enhanced Safe Browsing 的信任。 目前,已有将近 75% 的 Chrome Web Store 扩展程序被标记为受信任,后续随着越来越多的开发者加入这一计划,这个数字还会增长。 加强对风险文件的保护 当一个下载的文件被标记为不安全时,以往用户只有无视警告继续查看或者删除该文件两种选择,用户现在可以选择要求进行更深入的扫描,进一步确认文件的安全性。 针对这个功能,Chrome 浏览器会把需要扫描的文件上传到 Google Safe Browsing,该系统将使用其静态和动态分析分类器实时扫描该文件。上传的文件在扫描后就会从系统中删除。

资源下载

更多资源
Mario

Mario

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

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文件系统,支持十年生命周期更新。

用户登录
用户注册