Recent Posts
-
June 05, 2013
Paul e. mckenney 在acm queue的文章,又来说他的rcu了(hazard pointers 和rcu (read Copy Update)原子操作性能差 )
Structured Deferral: Synchronization via Procrastinationhttps://queue.acm.org/detail.cfm?id=2488549提到hazard pointers 和RCU (read-copy-update) 两种技术是如何克服reference counters的原子操作在多cpu同步时性能比较差的问题的。可以认真去看一下,hazard pointers之前在无锁编程数据结构时见到,不是很理解,这里讲的比较清楚。原子...
-
June 04, 2013
False sharing 问题的一些理解
下载LOFTER我的照片书 |一直对这个问题似懂非懂的样子,再找了一些文章看看。False sharing occurs when multiple concurrent tasks that are running on separate processors write to variables that are located on the same cache line. When one task writes to one of the variables, the cach...
-
May 29, 2013
提高c 和 c++程序的编译速度
C++ 程序编译之所以慢,应该和他的include头文件依赖相关。一个cpp文件,include了一个头文件,头文件又include很多头文件。编译的时候,就需要磁盘不停的打开和加载不同的头文件。但很多cpp文件,包含了很多头文件的时候,即使每个cpp包含的头文件都是一样的,而且,同一个cpp文件里面,有可能由于头文件循环include等依赖关系不是很清楚,导致一个头文件被单一一个cpp文件include 几十次之多。那么磁盘上就同时打开关闭多次这个文件,编译起来就慢了。如果你不能理解这个...
-
May 07, 2013
Inux 3.9的 socket 选项so_reuseport
最近老看别人提起选项SO_REUSEPORT, 应该是Google 工程师做的一个修改,允许里inux tcp程序,可以多个进程绑定到同一个端口上。这样多个进程在accept同一个端口上面过来的连接和数据。这样在多核cpu 上面更能充分发挥多核的优势。 这个patch的改进,就是让这种应用场合更简单性能更好吧。比如连接负载在多线程(或进程)之间分布更均匀,避免“惊群” 之类的。 Nginx本来就有实现多进程在同一个socket上面 accept,然后通过锁来避免多进程竞争(惊群...
-
April 24, 2013
程序性能测试相关的两篇文章
Thinking Methodically about Performancehttps://queue.acm.org/detail.cfm?id=2413037Thinking Clearly about Performancehttp://queue.acm.org/detail.cfm?id=1854041都是大师之做啊,方法论。打算根据第二篇的 QUEUING DELAY 和KNEE方法,测试自己程序是不是符合 M/M/m 模型的。
-
April 24, 2013
Visual studio 2008 调试时中断下来后生成dump文件的办法
程序crash之后,现在i配置默认启动 visutal studio 2008 visual studio 2010的调试器。并不直接生成dump文件或者error report。这个应该是注册表里面的调试器设置相关的一个设置,之前也写文章了。其实在visual studio里面选择 菜单 “Debug” 最后一项-> “Save Dump As”那里就可以生成dump文件,里没有 “mini dump ” “mini dump with heap” 两种类型可以选择。保存就...
-
April 17, 2013
Cc 的#line 宏(#line directive),修改编译报错时提示的源文件名字和行数
使用bison的时候,发现很多有意思,使用gcc编译 c++的源文件的时候,提示的错误还是i显示的位置在 *.y 文件里面的。觉得很有意思的一个功能。查看了一下代码,bison是在生成的代码里面插入了多 #line 来实现的。gcc的文档 “6 Line Control ”http://gcc.gnu.org/onlinedocs/cpp/Line-Control.html这里有详细的说明。#line linenum#line linenum filename#line anythin...
-
April 16, 2013
Flex和bison的用于加载和解析配置文件(参考freediameter用法)
freeDiameter的主配置文件还有那些extension的配置文件,都是用flex 和bison来做解析的。 估计那个作者很熟悉flex和bison吧,当然通过flex 和bision也可以做到很复杂的规则吧。不过有杀鸡用牛刀的感觉。 下面参考freeDiameter的extension里面的用法,写个简单的测试程序,实现字符串还有整数的解析。还有数组的元素的解析。也是熟悉一下flex和 bison的写法吧,很早之前,看thrift的代码的时候,就想试试这两个东西了。Lex...
-
March 31, 2013
Memcached的hash table 和string hashtable和trie数据结构性能优化相关的几篇论文
下载LOFTER我的照片书 |昨天看到微博里面@jametong转的这篇论文“MemC3: Compact and Concurrent MemCache with Dumber Caching and Smarter Hashing” Bin Fan, David G. Andersen, Michael Kaminsky Carnegie Mellon University, Intel Labs这里面说使用了Optimistic Concurrent Cuckoo Has...
-
March 20, 2013
优化程序的cpu cache效率相关知识what every programmer should know about memory
很早之前就看这个系列的文档了 “What every programmer should know about memory” 应该是redhat的一个工程师写的。不过英文的版的,篇幅很长,不怎么认真看过。今天看到开源中国上面有人有翻译成中文版了每个程序员都应该了解的 CPU 高速缓存http://www.oschina.net/translate/what-every-programmer-should-know-about-cpu-cache-part2翻译的很不错!!!原文是在LWN...