Lukas Larsson,核心的VM开发者,最近很活跃,在Erlang内存体系上做了不少工作,包括recon项目的贡献。
他最近在erlang factory会议上分享了“Memory Allocators in the VM, Memory Management: Battle Storie”, 参见这里。
Erlang内存体系架构是个复杂的体系,一般的开发人员能难一眼就能搞清楚:
所以我们需要专家的经验把我们迅速带入门,他的PPT不再提供下载,我拉了一份,在 这里,原理、方法以及案例分析,很不错。
祝玩得开心!
这么多年过去了,社区还在讨论erlang是不是小众语言,各种怀疑的时候,whatsapp已经把erlang用到了极致。
whatsapp是什么? 参见它的 官网
WhatsApp Messenger is a cross-platform mobile messaging app which allows you to exchange messages without having to pay for SMS.
更为搞笑的是 主要开发者Rick Reed(rr@whatsapp.com),之前在Yahoo!, SGI工作,有着深厚的系统性能的背景。
在2012年开发push服务器的时候:efsf2012-whatsapp-scaling
Joined WhatsApp in 2011,New to Erlang
完全是个新手。
在2013年开发多媒体支持系统的时候:reed-efsf2013-whatsapp
Joined server team at WhatsApp in 2011,No prior Erlang experience
2-3年后他已经是Erlang的最高级别的行家了。
从他的二篇ppt的内容来看, 他把erlang的特性发挥到了极致,利用到了它最好的vm、 集群基础设施、数据库mnesia, 消除了非常多的数据Scale、内存池和锁的问题, 提到的技术和修正点非常值得我们参考。
虽然大部分的解决方法我们在日常都差不多用过。但是他很系统的整理出来,用在商业系统了,这是个非常大的飞跃。
下面摘抄几个数据,希望能让继续怀疑erlang的人能重新思考下:
whatsapp后台架构以erlang为主:
Read more…
我们在做IO密集型的应用程序的时候,比如MySQL数据库,通常系统的表现取决于workload的类型。 比如我们要调优,我们就必须非常清楚的知道数据的访问规律,收集到足够的数据,用来做调优的依据。
有很多工具可以收集系统层面的,设备层面的,进程层面的IO数据,但是没有一个现成的工具可以回答我们比如应用打开了多少文件,文件的读和写的比例是多少,调用了多少次sync, 每次的数据大小是多少,调用了多少次,每次用了多少时间, 是顺序操作还是随机操作,是那个线程发起的操作。
当然如果你对系统足够熟悉的话,你可以用systemtap来编写脚本获取这些数据,也不是什么难事。但是大部分的同学没有足够的耐心去做这个。
这时候Percona同样来救助了。他提供了一整套工具来协助定位MySQL服务器的问题。这套工具适合于大部分的IO服务器。
Aspersa is a collection of open-source system utilities primarily designed to ease the work of Percona consultants. This manual is the primary documentation for Aspersa tools. Please contribute your improvements.
项目地址: http://code.google.com/p/aspersa/
ioprofile的使用文档: http://aspersa.googlecode.com/svn/html/ioprofile.html
它依赖于strace和lsof来做统计,所以在运行的时候会对目标系统产生一定的性能影响,不过还好,你可以指定收集数据的时间。
现在我们来试验下效果:
Read more…
Recent Comments