hack,hacker

    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/

你可能感兴趣的:(PHP,linux,算法,gcc,Ruby)