Recent Posts
-
March 19, 2014
Cmake使用protobuf编译器自动生成proto文件对应的源码的例子
cmake的标准模块支持protobuf的,参考官方文档对于FindProtobuf的说明http://www.cmake.org/cmake/help/v2.8.12/cmake.html#module:FindProtobufwebrtc项目里面一个例子if (${enable_protobuf}) set(PROTOBUF_SRC_ROOT_FOLDER "${webrtc_root}/third_party/protobuf-2.5.0") #include(FindPro...
-
March 04, 2014
Signal会分发到多线程的任意一个线程上面去的
http://man7.org/linux/man-pages/man7/signal.7.html没有使用pthread_sigmask(3) 设置mask拒接这个信号的线程都有可能收到kill 发给进程的信号,系统任意选可以接收信号的线程来投递。该线程怎么处理这个信号的结果作为整个进程的行为。如果这个线程没有捕获退出信号,那么改进程的所有线程都会被杀死了了。可以用pthread_kill 给指定的线程发送信号,这样可以避免系统随机选择一个符合条件的线程来投递信号。但即使这样,收到信号的...
-
February 21, 2014
Linux 上面试用一下tcmalloc 的heap profiler
参考文档http://google-perftools.googlecode.com/svn/trunk/doc/heapprofile.htmlhttp://goog-perftools.sourceforge.net/doc/heap_profiler.html在debian 7的虚拟机上面测试,libtcmalloc-minimal4 包是不包含heap profiler之类的工具在里面的吧普通的内存分配可以用 libtcmalloc-minimal4,但如果使用profiler就要...
-
January 22, 2014
C++ memory profiler 检查c++ 程序内存都消耗在什么地方
C++ memory profiler 检查c++ 程序内存都消耗在什么地方Analyzing the Performance Impact of Memory Utilization and Garbage Collectionhttp://javabook.compuware.com/content/memory/analyzing-java-memory.aspx好像这些带GC的语言分析内存问题比较方便。C++我很想有一个这样的工具可以使用,比如可以在运行时attach到某个进程,...
-
January 21, 2014
Cpu instruction cache misses优化和gcc的profile Guided optimization( Coverage 和 O3 Profile Use)
下载LOFTER我的照片书 |40% better single-threaded performance in MariaDBhttp://kristiannielsen.livejournal.com/17676.html微博看到有人提到这篇文章,还是有点料的首先有perf 观察instruction cache misses。原文提到的这个技巧很有参考价值,以前没怎么注意这个 level 1 instruction cache ("icache").,看来这个东西对性能...
-
January 17, 2014
Cmake的function(函数)如何传递和返回list参数
作为参数传进去的时候,可以只写list的名字,而不是list的值比如下面脚本要把systerm_wrappers_sources这个list传过去,那么只想下面这样写就可以了extract_platform_specific_source(systerm_wrappers_sources)不要写extract_platform_specific_source(${systerm_wrappers_sources})然后里面函数根据这个字符串参数的值(内容为systerm_wrappers_...
-
January 02, 2014
看到libtorrent两篇不错的高性能的文章(内存cache优化和 网络消息批处理等)
下载LOFTER我的照片书 |1. memory cache optimizationshttp://blog.libtorrent.org/2013/12/memory-cache-optimizations/又是使用mprotect,和用户态的SIGSEGV signal handler来处理缺页异常(可以参考下面的access_profiler项目源码学习一下)。然后记录所有的类的成员的访问内存的偏移,这样就可以把类里面所有的成员访问的次数进行可视化。两个工具结合起来...
-
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 ...