代码改变世界

随笔档案-2012年06月

folly学习心得

2012-06-27 12:42 by zhenjing, 12757 阅读, 收藏, 编辑
摘要: 通过看folly自带doc和源码,学习了facebook的folly(C++)库。folly最大的不足就是需要C++11的新特性,需要gcc4.6以上的编译器方能使用。若是从学习的角度去看,folly有很多小技巧可学习;若从实用的角度看,folly能够极大地方便多线程编程;若从性能角度看,folly对不少C++功能做了增强和扩展。总之,folly是一个很不错的C++库。就冲着Andrei Alexandrescu的大名也该学习学习。不过从实际工作中看,就不要指望folly能够大大降低工作量了 ^_^。 阅读全文

过载保护

2012-06-26 13:04 by zhenjing, 3934 阅读, 收藏, 编辑
摘要: 什么情况会导致系统过载?系统处理能力 请求量 = 系统过载。设计系统时都需要系统的处理能力,比如每秒的处理能力、请求峰值、平均处理时延等。这3个指标可很好地估计系统最大处理能力、需要多少机器提供服务、是否需要扩容等。但评估容易只关注 请求量峰值,而忽略系统处理能力的变化。从公式上看,系统处理能力降低同样会造成过载。 阅读全文

facebook folly编译脚本

2012-06-23 22:19 by zhenjing, 4205 阅读, 收藏, 编辑
摘要: 总结了下自己编译facebook folly库的经验,希望后来者编译顺利,少花些时间。 阅读全文

linux的IO调度算法和回写机制

2012-06-20 11:29 by zhenjing, 12716 阅读, 收藏, 编辑
摘要: Linux IO调度程序是块设备I/O子系统的主要组件。块设备I/O子系统最核心的任务也就是提高块设备的整体性能,为此Linux实现了四种IO调度算法,算法的基本思想就是通过合并和排序IO请求队列中的请求大大降低所需的磁盘寻道时间,从而提供整体IO性能。 不管如何优化块设备调度算法,也不可能解决磁盘IO和CPU速度严重不匹配的问题,为此Linux引入了页高速缓存。页高速缓存最开始是为内存管理而设计的,在2.6内核中,各种基于页的数据管理都纳入页高速缓存。因此块设备的IO缓冲区也属于页高速缓存。这些和使用者无关,是内核开发者需要关心的。对于开发者,需要知道的是:所有文件的IO操作都是“读写缓存”。对于读操作,只有当数据不在缓存时才需要IO操作。对于写操作,一定需要IO操作,但内核把数据写到高速缓存后write系统调用立马返回,内核采用特定的写进程统一回写dirty的缓存页。即内核对读写是分别对待的:“同步读,异步写”! 阅读全文

linux性能监控

2012-06-17 15:30 by zhenjing, 3838 阅读, 收藏, 编辑
摘要: linux的性能监控对于分析各种系统问题至关重要。一般情况下,直接启动命令看输出。但有时需要监控某个特定时间系统的运行状况,简单办法就是定时启动命令,并将命令输入打印到log, 或者使用诸如sar这类强大的性能监视工具。 贴几个监控工具的包装脚本,结合crontab即可实现定时启动、收集一定时间间隔的性能数据。 阅读全文

c库的rand/random随机数产生函数性能差?

2012-06-10 19:17 by zhenjing, 9868 阅读, 收藏, 编辑
摘要: 有网文称c标准库的rand/random随机数产生函数性能极差。一直信以为真,但从没做过验证。最近因其他因缘,写了些代码专门验证rand/random的性能。结果大出意料,颠覆之前的成见。 结论如下: 1) rand/random性极佳。在64位机器上,其性能大约比简单自增略低30%(32位的自增比64位性能高出1倍以上)! 2) srand/srandom性能极差极差。绝对不能每次调用rand之前都调用srand。这么做不仅没必要,还会极大降低性能,性能只有调用rand的1%!!! 阅读全文

通用高效的c++内存池(特定类型)

2012-06-03 15:35 by zhenjing, 4469 阅读, 收藏, 编辑
摘要: 介绍一最近实现的特定类型的通用高效C++内存池。 特点: 1)基于共享内存; -- 不会因为进程挂掉而丢失数据。 2)快速分配; -- 在内存池接近满时,效率不高。 3)快速回收;-- 常数 4)空间利用率高 -- 利用bit标识内存块使用与否 (《C++设计新思维》的小对象分配器不占用额外空间!!) 阅读全文
点击右上角即可分享
微信分享提示