调优&性能tips

0 调优基本思想:
我们知道,程序运行时的90%的时间是用在了10%的代码上。我发现这并不准确。一次又一次地,我发现,几乎所有的程序会在1%的代码上花了99%的运行时间。但是,是哪个1%?

1 多线程调优。有人说,thread is evil,
这个对于系统性能在某些时候是个问题。因为多线程瓶颈就在于互斥和同步的锁上,以及线程上下文切换的成本,怎么样的少用锁或不用锁是根本(比如:多版本并发控制(MVCC)在分布式系统中的应用 中说的乐观锁可以解决性能问题),此外,还有读写锁也可以解决大多数是读操作的并发的性能问题。这里多说一点在C++中,我们可能会使用线程安全的智能指针AutoPtr或是别的一些容器,只要是线程安全的,其不管三七二十一都要上锁,上锁是个成本很高的操作,使用AutoPtr会让我们的系统性能下降得很快,如果你可以保证不会有线程并发问题,那么你应该不要用AutoPtr。我记得我上次我们同事去掉智能指针的引用计数,让系统性能提升了50%以上。对于Java对象的引用计数,如果我猜的没错的话,到处都是锁,所以,Java的性能问题一直是个问题。另外,线程不是越多越好,线程间的调度和上下文切换也是很夸张的事,尽可能的在一个线程里干,尽可能的不要同步线程。这会让你有很多的性能。

译者陈皓注:使用Profiler时,重点需要关注:1)花时间多的函数以优化其算法,2)调用次数巨多的函数——如果一个函数每秒被调用300K次,你只需要优化出0.001毫秒,那也是相当大的优化。这就是作者所谓的1%的代码占用了99%的CPU时间)。

2 tcp调优

调整buffer。比如处理:1万个连接就会占用内存到几百G了
https://blog.csdn.net/russell_tao/article/details/18711023
为了稳定性,各种冗余
https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651959728&idx=1&sn=933227840ec8cdc35d3a33ae3fe97ec5&chksm=bd2d046c8a5a8d7a13551124af36bedf68f7a6e31f6f32828678d2adb108b86b7e08c678f22f&scene=21#wechat_redirect

3 调优:hash有碰撞,可以出现,key相同value不同的情况. hashmap复杂度可能从o(1)变成o(n),变成了单链表
HASH COLLISION DOS 问题 https://coolshell.cn/articles/6424.html

4

 å¨è¿éæå¥å¾çæè¿°

linux performance tools

http://www.vpsee.com/2014/09/linux-performance-tools/
5  perf

a) 第一种常见用法是 perf top 

b) 第二种常见用法,也就是 perf record 和 perf report

查看cpu性能: perf record生成火焰图保存成.svg图片,查看cpu使用情况(on/off-cpu火焰图)
https://mp.weixin.qq.com/s?__biz=MzAwMDUwNDgxOA%3D%3D&mid=2652662668&idx=1&sn=3f0ff6c6028037be7115f80e215f39e7&scene=45#wechat_redirect
perf record 需要安装tool

6 cpu和网卡计算率:
一个 CPU 时钟周期可以处理一位的数据.举例来说,一个 1 GHz 的处理器可以对 1Gbit/s 的网络链接进行传统的数据拷贝操作,但是如果是 10 Gbit/s 的网络,那么对于相同的处理器来说,零拷贝技术就变得非常重要了
CPU一般为P43.0GHZ,如果是32位的处理器,一秒钟大概可以处理6G的字节,那么,128KB的网络速度是远远及不上处理器的速度的。
大数乘法,即将每一位数存在数组中,加法就是对应位相加进位,乘法和加法是一样的

7 1ms计算机能做什么?

CPU至少可以执行1000万条指令,(以主流的主频3GHz不到,4个核心计)
CPU到内存之间可以传输几千万个字节的数据
可以读写普通硬盘1/10次,固态硬盘几十次。
可以在局域网内传输大概十万个字节数据

æä½ç³»ç»çè¿ä¸ç¯å°±å¤äº(ä¸å­é¿æ)_第5å¼ å¾ç

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值