首页 > 其他分享 >性能调优学习

性能调优学习

时间:2023-05-22 16:22:56浏览次数:41  
标签:性能 网络 学习 调优 内存 IO cpu

性能调优攻略

  • 测试:两个关键指标:吞吐量,延迟

  • 测试之后,定位性能瓶颈

查看操作系统负载

​ 看看操作系统的CPU利用率,看看内存使用率,看看操作系统的IO,还有网络的IO,网络链接数,等等

​ 比如linux系统:top命令

  1. 如果cpu利用率不高,但是两个关键指标上不去了,说明可能IO耗时较大,就看一下IO大不大(磁盘文件IO,驱动程序IO,内存换页率)
  2. 然后查看网络带宽情况,可以使用tcpdump查看
  3. 如果上面所说的都没问题,说明是程序问题(锁,资源获取等待,切换上下文等等)

一般的非程序问题都可以通过配置硬件或操作系统的配置来解决(带宽,内存,tcp缓冲区)

使用profiler测试(性能检测工具)

可查看程序中各个模块函数和指令的运行时间,调用次数,cpu利用率

重点观察那些运行时间最长,调用次数最多的函数和指令,对于调用次数很多但是耗时很短的函数,如果缩短10ns的时间,性能提升也会非常大

常见的系统瓶颈

  • 空间换时间:缓存
  • 时间换空间:网络传输时所用的压缩算法,虽然耗时,但是此时的系统瓶颈在于网络io,用时间换空间反倒节省时间
  • 简化代码

二八原则,20%的代码消耗了80%的性能,优化那20%的代码

算法调优

  • 过滤算法
  • hash算法
  • 分治法,预处理

代码调优

  • 字符串操作
  • 多线程调优
  • 内存分配
  • 异步操作
  • 语言和代码库

网络调优

  • TCP调优

会产生开销:占用文件描述符和缓存

会有很多timewait链接在HTTP服务器上,下面是相关的两个参数:前者表示重用timewait,后者表示回收

net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
  • UDP调优

MTU----最大传输单元,要设置达到带宽资源的充分利用

UDP最大的一个好处是多播,对于在内网中通知多台节点时非常方便和高效

  • 网卡调优

把Buffer调大对于需要大数据量的网络传输非常有效。

系统调优

  • IO模型
  • 多核CPU调优:cpu0是很关键的,它被用的过狠的话别的cpu性能也会下降,所以我们可以手动为程序分配cpu核
  • NUMA技术:传统的多核运算是使用SMP(Symmetric Multi-Processor对称多处理器)模式,多个处理器共享一个存储器和IO总线,就会出现数据一致性问题。但是NUMA模式下,处理器被划分成多个node, 每个node有自己的本地存储器空间。
  • 文件系统调优

数据库调优

摘选自酷壳 RSS:https://coolshell.cn/feed

标签:性能,网络,学习,调优,内存,IO,cpu
From: https://www.cnblogs.com/zz01/p/17420946.html

相关文章

  • vscode配置远端服务器深度学习项目
    vscode配置远端服务器深度学习项目1.安装vscode官网地址:https://code.visualstudio.com/下载安装程序,运行安装即可2.连接服务器2.1安装相关插件需要安装Remote-SSH和RemoteDevelopment这两个插件2.2配置服务器连接插件安装完成后,在SSH一栏中点击OpenSSHCo......
  • 【研究生学习】Batch Normalization和Layer Normalization
    本篇博客记录一下在深度学习中常用的BatchNormalization和LayerNormalization方法的基本原理,参考的资料的链接如下:独立同分布的数据可以简化常规机器学习模型的训练,提升机器学习模型的预测能力,因此把数据喂给机器学习模型之前,白化是一个重要的数据预处理步骤,......
  • 如何严谨地做性能测试
    性能测试应该怎么做?一般来说,性能测试要统一考虑这么几个因素:Thoughput吞吐量,Latency响应时间,资源利用(CPU/MEM/IO/Bandwidth…),成功率,系统稳定性。下面的这些性能测试的方式基本上来源自我的老老东家汤森路透,一家做real-time的金融数据系统的公司。一,你得定义一个系统的响应时间l......
  • 44 | 理解IO_WAIT:I/O性能到底是怎么回事儿?
    在专栏一开始的时候,我和你说过,在计算机组成原理这门课里面,很多设计的核心思路,都来源于性能。在前面讲解CPU的时候,相信你已经有了切身的感受了。第36讲讲解局部性原理的时候,我们一起看了通过把内存当作是缓存,来提升系统的整体性能。在第37讲然而,我们知道,并不......
  • 03 | 通过你的CPU主频,我们来谈谈“性能”究竟是什么?
    00:10讲述:徐文浩大小:11.62M时长:12:41我们常常挂在嘴边的“性能”到底指的是什么呢?我们能不能给性能下一个明确的定义,然后来进行准确的比较呢?学习和研究计算机组成原理,就是在理解计算机是怎么运作的,以及为什么要这么运作......
  • 新手如何学习爬虫
    作为一种常见的网络技术,网络爬虫有很多相关的资源可以帮助新手学习。以下是一些有效的学习路径和资源:1、爬虫基础知识网络爬虫的基础知识包括HTTP协议、HTML/CSS/JavaScript,以及Python等编程语言的基础语法和库等。2、掌握Python编程Python是网络爬虫最常用的编程语言之一,新......
  • 一些关于运筹学和机器学习之间协同作用的思考
    几十年来,运筹学(OR)和机器学习(ML)一直作为两个相对独立的研究领域不断发展。数据科学和人工智能领域的专家可能更熟悉机器学习而不是运筹学,尽管每个机器学习实践者都应该至少了解一些优化技术,因为每个机器学习问题本质上都是一个优化问题。在本文中,我将把运筹学和机器学习视为一个整......
  • 多方安全计算Secure Multi-Party Computation(SMPC)学习笔记
    引言随着数字化时代的到来,数据的价值变得前所未有的重要。然而,随之而来的是对数据隐私和安全的日益关注。个人和组织都希望能够利用敏感数据进行有益的分析和合作,但又不希望将这些数据暴露给其他人。在这种情况下,安全多方计算(SMPC)崭露头角。SMPC是一种创新的加密技术,它允许多个参与......
  • python学习笔记32:操作sqlite数据库
    importsqlite3#1.创建数据库连接#如果test.db存在,则建立连接,返回connect对象#如果test.db不存在,则新建数据库,再建立连接,返回connect对象conn=sqlite3.connect(database='test.db')#2.创建cursor对象cursor=conn.cursor()#SQL指令sql='''......
  • .NET入门相关学习
    2023年05月22日笔记项目信息实体添加新属性①类增加对应属性声明。②快捷键Ctrl+Shift+B生成新应用;或者终端指令dotnetbuild生成新应用。③对应Controller字段增加属性;View视图增加对应部件(Index/Create/Edit);更新 SeedData 类。④PMC中输入指令进行数据库模型迁移:Add-Mi......