【性能调优】真实体验 “系统调用是重开销”

这篇具有很好参考价值的文章主要介绍了【性能调优】真实体验 “系统调用是重开销”。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实践背景是开发云原生背景下的指纹识别插件,主要针对的是镜像、容器等云时代的软件资产。

信息安全语境下的 指纹识别 指的是定位软件的特征,如名称、版本号、开源许可证等,就像指纹是人的独特生物凭证,这些特征是软件的独特电子凭证。除了识别软件外,指纹识别还用于上报资产,即辅助探针发现镜像中的软件资产,包括组件、中间件、系统工具、系统库、CMS(Content Management System)等。

一、调优背景 🂠

Trivy 是一个优秀的用于扫描镜像漏洞的开源工具,但商业场景下需要定制化开发,因此自研指纹识别工具。
根据知乎文章的介绍,Trivy 有以下特点:

【性能调优】真实体验 “系统调用是重开销”

因此自研产品应当对标 Trivy 且有一定改进,但在首次 Benchmark 测试时,针对 4.9G 大小的镜像,自研产品扫描用时 53 秒,且占用了一个 CPU 核。这个时间和硬件开销和 Trivy 相比是不可接受的,因此分析 CPU 用时信息。具体如何分析,见之前的博客 单元测试、基准测试和性能分析 。

二、分析 CPU Profile ⚛︎

分析 cpu.prof 后发现系统调用占了 38 秒,往上查找,发现 IsExist() 是主要的时间消耗对象,其底层实现是 Stat() 系统调用 。IsExist() 用于判断文件是否存在,但在遍历镜像的文件系统时,各个检测器都要对所有的文件进行检测(Detect 函数),而 Detect 函数中都有一个 IsExist() 判断,这将造成海量的系统调用,使检测速度大幅下降。

解决策略:

  1. 根据计算机领域的万能准则,以空间换时间,只考虑遍历一次文件系统,记录下有用信息到 map 中,后续使用时从 map 中取出。
  2. 后续详细阅读代码,发现 IsExist() 函数逻辑根本没必要,因为在遍历文件系统时不可能遍历到不存在的文件。

因此修改代码逻辑后,系统调用大大减少,整体扫描时间下降至 14 秒。

三、为什么系统调用是重开销 💸

所谓的重开销指的是消耗 CPU 资源,CPU 资源较为宝贵,因此需要合理分配。此外,从用户态陷入内核态时,还有上下文切换和现场保护,这部分也需要消耗较多资源。要理解为什么系统调用是重开销,就需要知道系统调用时发生了什么,进而分析哪些部分是开销大头。

3.1 什么是系统调用

系统调用(System Call,syscall)是用户态进程在请求系统资源时向操作系统内核发起的请求,如文件 I/O 操作、进程间通信等。这种将用户态与内核态隔离的方式,便于集中管理计算机资源,也使用户态的程序开发不需过多关注与硬件的交互。

【性能调优】真实体验 “系统调用是重开销”

根据中断触发来源的不同,可以将中断(Interrupt)分为 软件中断硬件中断

一般而言,系统调用是通过软件中断实现的,即 CPU 在执行特定指令时触发的。文章来源地址https://www.toymoban.com/news/detail-467740.html

到了这里,关于【性能调优】真实体验 “系统调用是重开销”的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【业务功能篇86】微服务-springcloud-系统性能压力测试-jmeter-性能优化-JVM参数调优

      压力测试是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,是通过搭建与实际环境相似的测试环境,通过测试程序在同一时间内或某一段时间内,向系统发送预期数量的交易请求、测试系统在不同压力情况下的效率状况,

    2024年02月10日
    浏览(55)
  • 面试官:如何进行 JVM 调优(附真实案例)

    面试官:在工作中做过 JVM 调优吗?讲讲做过哪些 JVM 调优? 我一个QPS不到10的项目,上次问我缓存穿透缓存雪崩,这次问我 JVM 调优,我是真滴难。 不过大家别慌,热心的我给大家找来了几个满分回答,大家选择合适的使用。 回答1:听好了,下面将是我第一次 JVM 调优。 回

    2024年01月19日
    浏览(54)
  • 【业务功能篇86】微服务-springcloud-系统性能压力测试-jmeter-性能优化-JVM参数调优-Nginx实现动静分离

      压力测试是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,是通过搭建与实际环境相似的测试环境,通过测试程序在同一时间内或某一段时间内,向系统发送预期数量的交易请求、测试系统在不同压力情况下的效率状况,

    2024年02月07日
    浏览(65)
  • 案例实践丨基于SkyWalking全链路监控的微服务系统性能调优实践篇

    1背景 随着开源社区和云计算的快速推进,云原生微服务作为新型应用系统的核心架构,得到了越来越广泛的应用。根据Gartner对微服务的定义:“微服务是范围狭窄、封装紧密、松散耦合、可独立部署且可独立伸缩的应用程序组件。” 微服务之父,马丁.福勒,对微服务概述

    2024年02月09日
    浏览(37)
  • JVM系列(9)——调优初体验

    学习这篇文章之前,要了解: JVM系列(2)——垃圾回收 JVM系列(3)——内存分配与回收策略 先了解概念: 吞吐量 :用户执行时间/(用户执行时间+垃圾回收时间);就是干正经事的时间占比。 响应时间 :STW越短,响应越好。 调优调的就是这两个。 经常组合使用: Serial+S

    2024年02月16日
    浏览(37)
  • 华为产品测评官-开发者之声 - ModelArts 真实体验感想

    我先是在6月17日参加了华为在深圳举办的开发者大会,后面看到群里发的\\\"2023华为产品测评官-开发者之声\\\"活动,简单看了一下体验活动的具体事情,感觉好玩又能学到东西,还有群里的小伙伴一起交流,碰到什么问题大家一起互帮互助,还有这么多丰富礼品可以兑换,就果

    2024年02月17日
    浏览(55)
  • 在国企和央企当程序员体验,太真实了。。

    大家好,又到了求职季,给大家分享一段一位网友的央企工作经历: 来源:zhihu.com/question/276681361/answer/2134441878 希望对于观望工作机会的小伙伴,有些参考~ 我校招加入了某垄断央企,在里面从事研发工程师的工作。下面我将分享一些入职后的一些心得体会。在国企中,开发

    2024年02月09日
    浏览(36)
  • Spark(30):Spark性能调优之常规性能调优

    目录 0. 相关文章链接 1. 最优资源配置 2. RDD优化 2.1. RDD复用 2.2. RDD持久化 2.3. RDD尽可能早的 filter 操作 3. 并行度调节 4. 广播大变量 5. Kryo序列化 6. 调节本地化等待时长  Spark文章汇总          Spark 性能调优的第一步,就是为任务分配更多的资源,在一定范围内,增

    2024年02月16日
    浏览(53)
  • 从虚拟现实到真实现实:沉浸式体验的未来 (ps beta)

     首先,您需要创建一个免费的Adobe账户,如果您还没有一个账户的话。您可以在Adobe的注册页面上填写必要的信息来创建一个新账户。  Adobe: Creative, marketing and document management solutions login 创建账号:      编一个google邮箱,要记住。 填写名字以及生日。 地区最好填写“美国

    2024年02月15日
    浏览(53)
  • 【建议收藏】新到手的电脑Windows10/11系统优化、使用规范和技巧及软件推荐,提升范电脑性能和体验

    目录 一、了解电脑 1. 查看电脑和系统的基本信息  2. 电脑测评 二 、Windows10/11系统优化及设置 1. 控制面板、回收站等桌面图标显示设置 2. 任务栏管理 3. 桌面图标排列 4. 卸载程序 5. 关闭P2P分享(传递优化) 6. 电设置脑为高性能 7.  删除存储中的临时文件 8. 磁盘清理 9.

    2024年02月12日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包