Recent Posts
-
December 12, 2013
Systemtap 2.4 在linux 3.11的一个bug,导致uprobe探测点设置不成功
systemtap 2.4 在内核3.11里面注册uprobe点失败,stapiu_probe_prehandler 函数返回UPROBE_HANDLER_REMOVE。导致probe点注册不成功。如果你的用的用户程序探测,use space probe点触发频率很高就会发现这个问题。经常看到只有第一个probe点起作用,或者probe点全部设置不成功。kprobe没有这个问题。原因是stapiu_change_minus函数里面 设置uprobe_register 在&targe...
-
December 06, 2013
Virtuabox 4.3.4虚拟机guest里面的虚拟tsc性能问题clock_gettime等时间函数性能差的解决办法
http://man7.org/linux/man-pages/man2/clock_gettime.2.htmlCLOCK_MONOTONIC_COARSECLOCK_REALTIME_COARSEhttp://lwn.net/Articles/347811/ http://patchwork.freedesktop.org/patch/1673/参考上面两篇文章,带COARSE的这种应该是不会去访问硬件时钟的,相对来说会快很多,在虚拟机表现的更明显。在程序的时间超时之类的地方,能用C...
-
December 05, 2013
Virtualbox 4.3.4虚拟机上面linux guest的tsc时钟源不可用,降级使用acpi_pm的问题(导致clock_gettime函数和gettimeofday性能变差,debian内核升级等)
测试发现,程序的时间获取函数clock_gettime 导致内核路径的acpi_pm_read 函数代价很大。---------------------------------------------perf top -e cpu-cycles -G -c 1 -p 4120- 38.17% [kernel] [k] acpi_pm_read ...
-
November 27, 2013
常用git命令
所有的命令不理解都可以git help 来查看manaul的帮助,最好的参考来的最简单最常用的git clone http://192.168.1.100:8080/git/repos/freediameter.gitgit pull #从远程仓库下载更新到本地git branch -r #查看远程分支名字git checkout -b <branch> <remote>/<branch> ...
-
October 18, 2013
Xml的escape string字符转换优化和gnu perfect hash function generator(gperf)
html和xml里面是有类似这样的escape string的编码转换的。比如xml的/** * & --> & * < --> < * > --> > * " --> " * ' --> ' */这个转换,很容易成为程序的性能热点,现在的一个模块就是这样。之前刚好看到类似问题相关的文章,escape string的转换相关函数优化之后,响应时间好很多。When...
-
September 30, 2013
C C++ 准确的随机数生成
下载LOFTER我的照片书 |一提到随机数生成,一般联想到类似c的这个代码#include<cstdlib>#include<ctime>srand(time(0));int r = rand() % (50) + 10;用这个 取余操作和 加上偏移来生成一个指定范围的随机数。一般应用这个应该是可以了,不过之前看到文章说,这样的其实不是很准确的。如果这个范围不是2的n次方的话(上面那个50就不是).那么这样取余数操作之后得到的随机分布跟以前的默认访问的...
-
September 18, 2013
Epoll和eventfd之“惊群(thundering herd)”问题
微博上面有人回复我说epoll的的惊群问题,不是很理解。带着疑问看一下linux kernel的epoll 和 eventfd相关的代码。因为我局的epoll和eventfd一起使用应该是比较简单的。?http://lxr.linux.no/linux+v3.11/fs/eventpoll.chttp://lxr.linux.no/linux+v3.11/fs/eventfd.c------------------情况1 调用 epoll_waitepoll_wait ep_poll ...
-
August 27, 2013
构建实时监控系统,统计可视化,和日志采集系统相关的开源软件和论文等
下载LOFTER我的照片书 |关键字(log trace Tracing metric monitor statistics Observability Visibility )直到2014年3月7号所了解到的资料或者开源软件有。logstash + Elasticsearch http://logstash.net/Mozilla Heka http://heka-docs.readthedocs.org/en/latest/ hekad http://he...
-
August 06, 2013
把整数格式化为字符串的c++代码(itoa和sprintf相关的问题,快速格式化ip地址为字符串
程序里面有一个格式化ip地址的地方使用sprintf写的,大概这样sprintf("%d.%d.%d.%d", b[0], b[1],b[2],b[3])性能测试的时候发现这句代码,要cpu消耗占整个的%1左右,看上去比较突出。网上很多也自己写了itoa函数,比如http://www.jb.man.ac.uk/~slowe/cpp/itoa.html /** * C++ version 0.4 char* style "itoa": * Written by Lukás Chmela...
-
July 29, 2013
快速字符串hash算法murmurhash3 和cityhash还有 spookyhash
Murmurhash3 按它自己的测试说已经比fnv要快5倍了,我一直以为fnv是最快了的,vc 2010里面的std默认用的就是fnv。CityHash 是后来Google受了Murmurhash3的启发,再改进了的? Google内部的hash_map<string, int> 都是用这个算法了。http://blog.reverberate.org/2012/01/state-of-hash-functions-2012.html这篇文章比较了上面3个算法的特点,但好像说...