性能压测过程中关于CPU使用率的思考

最近在压测过程中,遇到了很多问题,也加深了自己对于程序性能包括CPU使用率,内存占用等各个指标的深入思考。测试同学在压测过程中主要考虑的是TPS,CPU使用率,延迟这几个指标。我们先介绍这个几个常用的性能指标,然后再进入我们的本文的正题,CPU的使用率是怎么来计算的,以及怎么来评估CPU的使用情况。

Read More

initializer_list 引发的栈溢出问题

最近项目要进行最后一次线上测试,对一些新增的server进行压测,在对同事用我写的协程框架搭建的ranksvr的时候进行压测的时候,ranksvr挂掉了,由于是压了一段时间才挂掉,所以有特定的业务逻辑触发了栈溢出,由于涉及到调用公司第三方API所以,查起来还是比较麻烦,一开始经过加日志,查看栈使用情况,但是发现在栈溢出前业务逻辑的栈使用情况正常。

Read More

性能分析利器之perf浅析

作为服务器后台开发,不仅仅要写业务逻辑,后台意味着高并发,稳定性,当你写了很多逻辑,发现性能有问题的时候,也要学会性能分析,进行性能优化, 也许你会接触很多性能分析工具:valgrind,gperftools,gprof, oprofile, 有时间慢慢一一介绍,在学习perf的过程中,也学习和加深了很多之前的知识,本文抛砖引玉,希望能帮助大家了解一些性能分析更深的一些东西。

1. perf简介

perf是一款linux内置的性能分析工具,随着内核发布,也被称为perf_events, perf tools, PCL(Performance Counters for Linux), 发布于Linux kernel version 2.6.31, perf是怎么工作的呢?perf如何使用?本文是来介绍一下。

perf官方wiki的介绍是:Linux profiling with performance counters

Read More

func_calling_conventions

实际上,GCC的Windows 端口必须有 __stdcall,因为它应该能够为Win32平台生成一致的代码。 但是由于Linux下只有一个标准调用约定,并且它与缺省编译器输出一致,因此不需要这个语句。

Read More