转载:http://chaoslawful.iteye.com/blog/310346
评测目的
本测试主要目的是考察Erlang文件I/O同C标准I/O之间具体的性能差异。
预备知识
Erlang中有普通文件I/O和裸文件I/O两类操作,其中普通文件I/O的文件句柄是一个进程ID,因此可以从Erlang节点网络的任意位置访问该句柄;而裸文件I/O的文件句柄是一个tuple结构,只在同一节点上打开该文件的进程内有效,无法跨进程跨节点访问。一般来说裸文件I/O速度要远高于普通文件I/O。
此外Erlang RTS还有一些选项能够改善大I/O流量情况下的进程响应速度,这里主要使用的是如下2个选项:
- +K true|false - 该选项用于打开(true)或关闭(false,默认)Erlang RTS的Kernel poll功能。当Kernel poll被关闭时,RTS使用普通的用户态事件轮询接口select/poll进行进程和I/O调度,调度开销较大;打开Kernel poll时,RTS将使用内核级事件轮询接口(如Linux上的epoll等)进行调度,开销较小,可以提高存在大量进程时的响应速度。
- +A integ