庄周梦蝶

生活、程序、未来
   :: 首页 ::  ::  :: 聚合  :: 管理

hack,hacker

Posted on 2007-10-15 09:09 dennis 阅读(669) 评论(0)  编辑  收藏 所属分类: 涂鸦linux & C
    hack有水平高低之分,最近看到一个blog,牛人的hack水平让你不得不服。情况是这样的,牛人在使用 mongrel_light_cluster的过程中,发现这个cluster违反了copy-on-write的语义,导致占用了太多的内存。根本原因在于Ruby的GC机制是marks all memory pages as dirty。为了减少内存的占用,让集群跑更多mongrel,牛人走上了hack之路,给c ruby打补丁,他也真的做到了。c ruby的GC使用的是mark and sweep(标记并清除)的垃圾收集算法,他发现在mark过程中使用了st_table,这个数据结构占用了很大的内存,那么就改用Google’s sparse_hash。然后他又写了一个memory pool,以应对marking和sweep使用过程中对malloc和free调用带来的内存损失,因为在x86 GNU/linux gcc上,malloc函数如果申请的内存小于76KB,那么当free的时候这些内存不会被返还给操作系统。他的hack之路还没结束,有兴趣的关注他的blog:

 http://izumi.plan99.net/blog/index.php/



只有注册用户登录后才能发表评论。


网站导航: