erlang tcp发包速度测试
http://blog.sina.com.cn/s/blog_96b8a1540101317m.html
这段时间我们的项目遇到广播包的一些性能问题,想起之前看到yufeng老大提到的1s广播40K包的问题,我也想测试测试我们机器的IO能力。
这次仅仅测试发包的能力,采用的是一对一的方式。
测试代码:
-module(socket_io_test).
-export([server/0, client/1]).
server() ->
spawn(fun() -> do_server() end).
do_server() ->
case gen_tcp:listen(38888, [binary, {reuseaddr, true}, {active, false}]) of
{ok, ListenSocket} ->
do_server_loop(ListenSocket);
{error, Reason} ->
io:format("listen 38888 failed: ~p", [Reason])
end.
do_server_loop(LSock) ->
case gen_tcp:accept(LSock) of
{ok, ClientSocket} -> do_recv(ClientSocket);
{error, Reason} ->
io:format("accept failed: ~p", [Reason])
end.
do_recv(ClientSocket) ->
gen_tcp:recv(ClientSocket, 0),
do_recv(ClientSocket).
client(N) ->
case gen_tcp:connect("127.0.0.1", 38888, [binary]) of
{ok, Socket} ->
erlang:statistics(runtime),
erlang:statistics(wall_clock),
do_send(N, Socket),
{_, T1} = erlang:statistics(runtime),
{_, T2} = erlang:statistics(wall_clock),
io:format("~p ~p", [T1, T2]);
{error, Reason} ->
io:format("connect failed: ~p", [Reason])
end.
do_send(N, Socket) ->
lists:foreach(fun(_) -> gen_tcp:send(Socket, <<"Hello world!">>) end, lists:seq(1, N)).
启动服务端:
socket_io_test:server().
启动发包客户端:
socket_io_test:client(100000). 100000表示发包的数量,每个包的大小为12个字节,加上TCP头部,一共36字节。
测试包的数量: 400000(40W)
服务器环境:
Intel(R) Xeon(R) CPU E5420 @ 2.50GHz 双四核
12G内存
100M带宽独享
测试结果:
|
runtime |
wall_clock |
|
|
-smp auto |
650 |
1558 |
|
-smp auto +h 99999 |
630 |
1641 |
|
+K true |
670 |
1626 |
|
-smp disable |
410 |
770 |
|
+K true -smp disable |
430 |
797 |
|
+K true -smp disable +h 99999 |
420 |
1133 |
结果表明 smp disable模式下发包速度明显快于smp auto模式,原因在于多核模式下,CPU切换的代价是相当高的。另外由于是一对一的发包,所以+K参数也没有什么效果。
产生的问题:
多核并发IO是否没有优势?得去看看Linux底层的实现了。(原谅我对这块的无知)
1.如果多核并发进行网络IO的能力要弱于单核,那么在用erlang进行服务端设计的时候就应该尽量让网关独占某个CPU并设置为-smp disable模式。
2.如果有优势,如何利用呢?嗯,这又是一个问题。
erlang tcp发包速度测试的更多相关文章
- 网络带宽和速度测试windows和linux用iperf工具
网络带宽和速度测试windows和linux用iperf工具 Iperf是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量.Iperf可以测量最大TCP带宽,具有多种参数和UDP特性 ...
- snprintf/strncpy/strlcpy速度测试
速度测试代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <un ...
- iOS5系统API和5个开源库的JSON解析速度测试
iOS5系统API和5个开源库的JSON解析速度测试 iOS5新增了JSON解析的API,我们将其和其他五个开源的JSON解析库进行了解析速度的测试,下面是测试的结果和工程代码附件. 我们选择的测试对 ...
- TF卡速度测试对比 Class数越高速度越快
存储卡(TF卡)是手机扩展存储的大杀器,让你多装n部学习资料,多装n个外语听力练习.除了装东西外,存储卡性能不佳也会影响手机的整体性能以及体验的.本文主要针对Android手机,我是懒人,但我讨厌懒人 ...
- Erlang 集群互连测试
Erlang 集群互连测试Erlang节点相同cookie全互联成为一个集群(cluster).如果2个集群不同cookie, 然后其中有节点连接到对方集群的节点,这2个集群会合并成一个集群吗?连接到 ...
- 使用 PsPing & PaPing 进行 TCP 端口连通性测试
PsPing & PaPing 介绍 通常,我们测试数据包能否通过 IP 协议到达特定主机时,都习惯使用 ping 命令.工作时 ping 向目标主机发送一个 IMCP Echo 请求的数据包 ...
- 手机闪存速度测试工具,AndroBench
手机闪存速度测试工具,AndroBench
- VPS性能测试(3):磁盘IO读写速度、SSD硬盘速度测试
1.磁盘IO,即输入/输出(Input/Output),这是测试磁盘性能一个重要指标,一些便宜的VPS主机为了降低成本,以大量的低性能的硬盘来充当服务器,导致VPS主机因为IO差而拖了整个主机性能的后 ...
- 在线HTTP速度测试(响应时间测试)及浏览器兼容测试
一.前言 网站的响应时间,是判断一个网站是否是好网站的重要的因素之一.百度首页的响应时间在全国各个省份小于10ms.这个响应时间远远好于竞争对手.根据美丽说的技术负责人分析,美丽说访问速度提升10%, ...
随机推荐
- golang recover
package main import "fmt" func divideByZero() { // Use this deferred function to handle er ...
- 15、python学习手册之:列表和字典
1.列表属于可变序列,支持在原处的修改 2.在标准python解锁器内部,列表就是C数组而不是链接结构 3.内置函数map对序列中的各项应用一个函数并把结果收集到一个新的列表中 eg:list(map ...
- WebService学习总结(5)——WebService常见开发框架比较
在SOA领域,我们认为Web Service是SOA体系的构建单元(building block).对于服务开发人员来说,AXIS和CXF一定都不会陌生.这两个产品都是Apache孵化器下面的Web ...
- vs2015 EF code first 问题待解决
在vs 2013 上可以成功ef 生成代码.EF power Tools 安装在vs 2015 :一般不可安装, 把扩展名改成zip,解压缩. 打开extension.vsixmanifest文件 找 ...
- net基础题
1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保 ...
- 最新GitHub账号注册(详细图解)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一.简介 GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub. ...
- 关于mybatis中,批量增删改查以及參数传递的问题
1.參数传递的问题 大多数情况下,我们都是利用map作为參数,而且大部分情况下都是仅仅有一个參数. 可是,我们也能够利用@param注解,来传入多个參数,此时,mybatis会自己主动将參数封装成ma ...
- 3D游戏《龙心传奇Dragona》全套完整源码
<龙心传奇Dragona>全套完整源码,<Dragona Online>也叫<龙心传奇>是一款3D中古奇幻风格网络游戏,描写叙述一个充满剑.魔法.恶魔和龙的魔法大陆 ...
- 简介及环境搭建跑通Hello
简介及环境搭建跑通Hello Spring Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.是为了解决企业应用程序开 ...
- Sass(SCSS)中文手册——入门
简书原文 https://www.jianshu.com/p/e82c27aa05c7 前言 该中文手册是我在Sass中文文档的基础上编辑的,或者也可以理解为就是Sass中文文档的翻版.之所以有这篇文 ...