系统性能
文章平均质量分 55
mzhan017
小张
展开
-
Linux:性能分析域
Linux 系统下的性能分析分支原创 2021-10-10 08:12:59 · 395 阅读 · 0 评论 -
Linux: tool: perf使用时遇到的一个问题
但是在使用perf的过程中,遇到了一个题:运行perf record之后没有反应,而且ctrl+C也不能让perf命令结束,相当于接收不到signal,或者即使接收到了,也没做处理queue住了,同时也就意味着perf收集不到程序的运行统计数据。这种问题的debug咱们是比较熟的,就是使用perf命令,来收集一下统计数据,然后再根据结果,进行反编译,看看是具体是哪一个函数使用的比较高,依次往下走就好了。后来分析发现原因,是这个占用CPU比较高的进程是一个FIFO的实时进程而且优先级非常高。原创 2024-05-07 20:20:12 · 289 阅读 · 1 评论 -
性能问题一例strcmp
其实如果一个字符串在运行的过程中一直保持不变,而且被重复的用来做strcmp操作,就不如先用字符串算出一个hash数值来,将其中的差异性用简单的数值比较先做一遍,如果哈希值相同的情况下,再做strcmp的比较,这样可以节省很多的effort,节省效率。最近做性能优化,发现代码里的一个循环里有使用strcmp做比较,这个函数其实比较耗cpu,原创 2024-05-07 20:19:35 · 193 阅读 · 0 评论 -
Linux: security: sudo 的一个隐藏问题
如果interface的数量到了2000多个,这个时间就到了2.5秒多的时间来查所有的interface,然后遍历。虽然是通过netlink的方式进行的读取,也是非常的慢。这个命令在执行的时候会读取本地地址列表。是下面这个commit引进来的一个plugin。如果是三四个interface的情况下,sudo的执行都需要100多毫秒的时间。说这个隐藏是根据一般的知识,肯定是想不到它会读取本机的ip地址和mask。所以如果需要的效率比较高,就不能再使用这个sudo来做操作。原创 2024-04-18 08:59:40 · 289 阅读 · 0 评论 -
[测试] 性能测试 - inet_csk_bind_conflict
再一次说明,使用sipp做性能测试时,需要注意的一个问题:一定要将相关的xml脚本文件,需要放到git repo里,需要使用版本控制的机制来管理,不能每次碰到问题,都是有脚本上的些许区别。每次都需要花费很多精力,时间去调查问题,到底是在哪里?然后就看为什么socket个数使用的多了,最后发现是sipp使用的脚本和之前不一样,其中的一个超时时间设置比之前的短了,导致超时重新发起业务时,老的socket需要一定的time-wait时间来终止,导致最终的新的socket,做bind-conflict。原创 2023-09-20 20:21:56 · 209 阅读 · 0 评论 -
linux: network: sysctl: netdev_budget_usecs的出现
这个参数就是为了在CPU于延迟直接做trade-off的一个参数,在Redhat的性能文档里有提,如果相应的计数有增加,就需要调整这个参数。下面这个修改是,将原来的固定值改成了可修改的一个值。后来又改了一次,防止HZ小于1000时出现问题。这个里面有关于这个参数的调整。原创 2024-03-17 10:20:06 · 166 阅读 · 0 评论 -
[程序员] 网络延迟的一个主要分析点:怎么确定CPU是否在卖力的干活?
比如VMware设置的CPU策略,可能影响Guest层CPU的运行,如果主机上的CPU资源紧张,可能分配给Guest的CPU就不够用,这个时候需要看什么呢?这些资料里面,或者进一步的引用链接里,就是在提一个事情:延迟的产生很大程度上是由于CPU没有卖力工作,导致包的处理不及时,也就是会有延迟。就看客户的具体需求是什么。所以这种性能的问题的一个总结是:对于一个成型的产品,所做的性能测试,可能不只是要保证所声明的业务量,进行性能测试;有没有在内核层面的其他参数,也在控制着CPU的使用率和延迟的参数?原创 2024-03-17 10:02:22 · 362 阅读 · 0 评论 -
[程序员] sipp运行时socket接收队列持续满载 - 文件系统访问慢
不过后来,同事有提到,这个服务器启动的sipp所用的脚本文件,以及日志打印文件所属的目录,是mount的一个网络磁盘;这个信息就非常的关键;今天谈一下,最近和同事一块看到的一个例子,说sipp运行时的某一时刻之后,总是会有408/487/retrans,通过netstat看,还总是会出现接收队列满载的情况。如果是正向的测试,其实应该是按照之前的一个总结来做,这样会避免倒着追查问题的可能:[测试]性能测试之前的工作。具体的问题解决的思路:一开始想到的可能是系统的CPU使用率是不是太高,导致的问题。原创 2024-02-24 07:07:16 · 312 阅读 · 0 评论 -
[测试]性能测试之前的工作
举一个例子:最近遇到一个性能问题,在打起来业务后,发现socket上的发送queue满了,但是不能确定是那一块有问题,是业务数据实际发生了过载,还是网络除了问题呢?所以怀疑是设备的网络问题导致的TCP业务数据有问题。当然比较难debug,需要将两端的网络包都抓取出来,然后对比看网络的哪一个设备有问题。其实在性能测试之前,要准备很多东西其中与一个概念是关于冒烟测试。就是要确保所搭建的测试环境可以完成基本的业务功能。如果手上有上面基础性能测试的性能数据,也许可以帮助我们定位问题的所在之处。原创 2023-07-14 20:36:21 · 415 阅读 · 0 评论 -
[测试]必备技能-性能统计数据分析
在开出来任何一个关于压力测试的问题的分析过程中,都避免不了使用分析工具,而且分析的第一步就是要用分析工具,分析:通过数据来分析压力模型是否是预期的。根据统计报表来判断中间有没有错误出现,有没有异常发生。作为系统测试人员,不管是使用Excel或者是python脚本,或者其他任何可以用来分析的工具,至少需要掌握一门。而且如果用的好,还可以提高自己的知名度。这也算是磨刀不误砍柴功的一个例子。假如产品还没有这样的工具,那就开始准备开发一个吧。如果数据量小,建议用Excel,至少可以画个图,将压力测试结果可视化。原创 2023-06-30 21:59:29 · 125 阅读 · 0 评论 -
[程序员]经典挖坑场景-2
后来调查发现,这个问题的主要原因是在每条记录处理的时候,会在C程序里调用一个shell脚本,调用这个脚本的开销,依据CPU的处理能力来说耗时不等,有的需要20ms,有的需要40ms;不巧的是,这个线程还被用于“表活”的功能,就是每两秒要向其他监控进程发送心跳包(heartbeat),如果记录数太多,而且处理的慢,就会间接导致其他监控进程认为当前进程死掉了,进行未“表活”的一系列的容灾处理。如果想知道精确的时间,说何时会掉进去,就需要对这个坑进行研究,做大量的测试工作。如果有的话,就要平衡两者之间的关系。原创 2023-06-28 05:49:14 · 134 阅读 · 0 评论 -
iperf、netperf:例子;pktgen; sockperf
Server端,没有-u参数,当有client用udp连的时候,才会建立udp;Server端,没有-u参数,当有client用udp连的时候,才会建立udp;iperf3 -c 169.254.32.5 -t 60 -u 是UDP。iperf3 -s -A 0 & 如果不加 port,默认是5201。client 端可以设置udp;-b 速率 256M每秒。原创 2021-04-26 11:40:52 · 462 阅读 · 0 评论 -
[性能]网络包延迟的实例分析
第一个方向,如果是tcpdump抓包可以看到,是否代表kernel已经将事件信息放到了epoll/poll的状态信息里。最近遇到一列,在CPU使用率很高的时候,TCP的包在application有延迟。所以问题分析的第一步还是要从应用下手。验证包是否在进入应用时已经发生延迟,是否应用处理逻辑够复杂,导致接收event延迟。最终确定,是因为应用处理上有一个消息处理逻辑太复杂(有循环)导致下一个消息不能及时得到处理导致延迟。以及下面这个tcpdump抓取的位置,以及实际抓到的数据看,内核导致延迟的可能性极小。原创 2023-02-24 07:33:10 · 570 阅读 · 0 评论 -
glibc性能:改进的一个典型案例
这个性能改进的的出发点是。如果可以将pid缓存在当前应用程序的用户空间,就可以避免用户内核空间的交换。会提高一些性能,只是纯碎的做性能提升。但是当将缓存的代码放到正式glibc库之后,因为改动的代码比较基础,后续发现了一些解决不了的问题,最后这个缓存的功能去掉了。当然这种性能的改进方法可以放到用户层,这样就可以避免动基础的代码,但是缺点就是需要没改应用一份代码,代码重复。其实就这个例子来说,是有很多东西可以总结,比如:做优化不是做了就完了,而且需要做大量的,全面的测试。这个函数就会讲pid缓存在应用层。原创 2023-01-06 08:54:54 · 179 阅读 · 0 评论 -
汇编:寄存器/register,基础概念
如果想将所有的信息放到一篇里,会发现这个文章会变得难于管理。所以要分开,要wiki。关于寄存器的一些说明;原创 2022-12-01 09:27:54 · 851 阅读 · 0 评论 -
Kernel:性能分析实例(一)
性能分析实例一原创 2022-09-29 07:05:46 · 359 阅读 · 0 评论 -
局部变量故意不做初始化的一个例子;埋雷/坑的好例子
局部变量故意不做初始化的一个例子;埋雷/坑的好例子原创 2022-09-09 08:29:47 · 201 阅读 · 1 评论 -
glibc: mprotect: 使用
glibc/kernel,mprotect原创 2022-08-02 22:01:19 · 232 阅读 · 0 评论 -
性能分析:频繁使用fork/exec调用命令
简单介绍了一种在程序里频繁调用命令时的性能问题。原创 2022-06-21 22:04:39 · 296 阅读 · 0 评论 -
glibc: _dl_addr
文章目录问题分析glibc 调用关系问题在调试一个程序的CPU使用率高的案例,发现 _dl_addr 使用比较高;Samples: 895K of event ‘cpu-clock’, Event count (approx.): 223810000000Children Self Command Shared Object Symbol40.34% 39.96% manager libc-2.17.so原创 2021-08-26 16:06:16 · 501 阅读 · 2 评论 -
通信:H248.36 Hangterm: 性能问题(socket buffer)
文章目录链接解释简写问题链接http://rbman.ito.expert/en_lzn7830011_1_r5f/15513-CRA1191170_1Uen.J.htmlhttps://www.itu.int/rec/T-REC-H.248.36-201303-I/en解释检查termination是否hang住的功能。用来检查Media gateway 和 控制器之间的信息是否匹配,以及如果不匹配发生应该怎么处理。MG 向MGC发送通知,检查信息是否对称。简写htb问题如果打开会有性原创 2021-05-31 14:29:30 · 98 阅读 · 0 评论 -
CPU:性能:预测分支
文章目录参考问题原因参考https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-processing-an-unsorted-array问题今天看到Stackoverflow上的一个有意思的问题,是关于CPU的预测分支功能。说,如果一个数组在有序的情况下,执行下面的循环,大大优于无序数组。for (a in array){ if(a>128) ++;}原原创 2021-11-28 17:13:50 · 353 阅读 · 1 评论 -
CPU:性能:乱序执行;循环内连续使用两个数组元素的原因
文章目录参考疑问原因参考How to optimize for the Pentium family of microprocessors By Agner Fog, Ph.D.疑问之前有过疑问,为什么在数组循环时使用的,步长是2,而不是1.原因CPU提供了乱序执行的功能;例如下面的程序片段,在每一次的循环里,sum值都需要重新计算,所以第二次循环依赖于第一次循环。CPU的乱序执行就发挥不了作用。第二个程序片段,分成了两步,计算sum2的值,不依赖于sum1,可以乱序执行,提高CPU的执行效率原创 2022-02-12 16:10:16 · 597 阅读 · 0 评论 -
制造CPU、内存负载;stress-ng
stress-ng -c 1 -l 50 /// 只启一个 thread,只做CPU 的压力。如果要控制 系统运行的使用率提高,可能不能使用第二中方法。原创 2022-01-12 21:30:00 · 541 阅读 · 0 评论 -
CPU x86:64bit vs 32bit
32位程序转64位时需要注意的问题;就是long类型的长度会变。或者类似的其他自定义类型的转换。原创 2021-06-25 13:56:36 · 136 阅读 · 0 评论 -
Linux:内存访问问题检查工具valgrind
文章目录参考介绍memcheckcachegrindmassif手册参考Red Hat Enterprise Linux 8 Monitoring and managing system status and performance介绍valgrind提供了一个框架给用户空间的应用,提供了一组工具,可以用来检查分析程序的性能:memcheck是valgrind默认的工具,可以用来检查报告“难于人为检测与分析的”内存错误,例如:非法访问;未定义/初始化值的使用;错误的堆内存释放;指针覆原创 2021-06-25 04:38:45 · 349 阅读 · 0 评论 -
c/c++: 数据对齐的原因/align; 大端小端问题
数据对齐,与大小端问题原创 2021-06-24 06:22:55 · 818 阅读 · 0 评论