libzmq在inproc://模式下性能测试
来源:互联网 发布:资本主义灭亡 知乎 编辑:程序博客网 时间:2024/05/16 16:15
测试环境:
CPU:Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz * 2
内存:64GB 1333 MHz
OS:CentOS release 6.7
Libzmq:
https://github.com/zeromq/libzmq
master分支最新代码,版本号 4.2.1
测试准备:
测试代码perf/inproc_thr.cpp
主要改动(具体改动见附录diff)pull、push分别绑定不同的core(2,3)
测试数据量message count为 200000000
结果展示
附录:
diff --git a/perf/inproc_thr.cpp b/perf/inproc_thr.cppindex e16d5b3..008a30f 100644--- a/perf/inproc_thr.cpp+++ b/perf/inproc_thr.cpp@@ -46,6 +46,21 @@ static int message_count; static size_t message_size;+static int message_clear;++void mybind_cpu(int cpu_id)+{+ cpu_set_t mask;+ CPU_ZERO(&mask);+ CPU_SET(cpu_id, &mask);+ if (sched_setaffinity(0, sizeof(cpu_set_t), &mask) < 0) {+ printf("Error: cpu id %d sched_setaffinity\n", cpu_id);+ printf("Warning: performance may be impacted \n");+ }+ return;+}+ #if defined ZMQ_HAVE_WINDOWS static unsigned int __stdcall worker (void *ctx_)@@ -58,6 +73,8 @@ static void *worker (void *ctx_) int i; zmq_msg_t msg;+ mybind_cpu(2);+ s = zmq_socket (ctx_, ZMQ_PUSH); if (!s) { printf ("error in zmq_socket: %s\n", zmq_strerror (errno));@@ -77,9 +94,9 @@ static void *worker (void *ctx_) printf ("error in zmq_msg_init_size: %s\n", zmq_strerror (errno)); exit (1); }-#if defined ZMQ_MAKE_VALGRIND_HAPPY- memset (zmq_msg_data (&msg), 0, message_size);-#endif+ if (message_clear == 1) {+ memset (zmq_msg_data (&msg), 0, message_size);+ } rc = zmq_sendmsg (s, &msg, 0); if (rc < 0) {@@ -123,13 +140,14 @@ int main (int argc, char *argv []) unsigned long throughput; double megabits;- if (argc != 3) {- printf ("usage: inproc_thr <message-size> <message-count>\n");+ if (argc != 4) {+ printf ("usage: inproc_thr <message-size> <message-count> <message-clear>\n"); return 1; } message_size = atoi (argv [1]); message_count = atoi (argv [2]);+ message_clear = atoi (argv [3]); ctx = zmq_init (1); if (!ctx) {@@ -164,6 +182,8 @@ int main (int argc, char *argv []) } #endif+ mybind_cpu(3);+ rc = zmq_msg_init (&msg); if (rc != 0) { printf ("error in zmq_msg_init: %s\n", zmq_strerror (errno));@@ -172,6 +192,7 @@ int main (int argc, char *argv []) printf ("message size: %d [B]\n", (int) message_size); printf ("message count: %d\n", (int) message_count);+ printf ("message clear: %d\n", (int) message_clear); rc = zmq_recvmsg (s, &msg, 0); if (rc < 0) {
0 0
- libzmq在inproc://模式下性能测试
- IIS 下InProc模式session超时
- windows 下编译使用 libzmq
- Java单例模式在多线程环境下的性能测试对比实验分析
- Winforms:在Winforms中应用Inproc-SxS
- web.config中的InProc模式 与 StateServer模式
- c# Session 的StateServer模式代替InProc模式
- 几个常见CPU在Wince6.0下的性能测试
- 在Cortex-A8平台下memcpy性能的测试
- MariaDB 5.5在Windows下的性能测试
- Windows下测试算法在FDDB数据库的性能
- 在CentOS下安装WebBench进行web 性能测试
- Windows下测试算法在FDDB数据库的性能
- Linux下性能测试
- zeromq在windowsXP使用的libzmq.dll部署
- 性能测试模式之RBI模式
- Linux下测试磁盘性能
- LINUX下测试磁盘性能
- 利用ffmpeg提取视频中的图片
- memcache 基本使用-已测试
- 配置好的checkBox 拿来就用
- Servlet&JSP思维导图
- sqlserver2000 下导出Excel数据
- libzmq在inproc://模式下性能测试
- hduoj 1087 数塔【动态规划】
- Android7(N)开发者应该知道的一切(最全)
- python、psutil、ansible实现集群环境系统巡检工具
- git 服务器+git linux客户端搭建
- Oracle中视图的使用
- Hadoop-Impala优化十大指导原则和最佳实践
- HTML&CSS&JavaScript思维导图
- GC日志的可视化分析