Chinaunix

标题: FreeBSD, NetBSD, Linux简单性能测试 [打印本页]

作者: svenwang    时间: 2005-02-01 03:24
标题: FreeBSD, NetBSD, Linux简单性能测试
使用的操作系统分别是
FreeBSD 4.10
NetBSD 2.0
Slackware 10.0

环境:
vmware-4.5.2,每个虚拟机均分配4G硬盘和48M内存。

三次测试结果(s):
FreeBSD    10. 583041    10.460132    10.526190
NetBSD      4.584173       4.739391     4.557778
Slackware  2.104959       2.103009      2.131719

结论:
Linux >; NetBSD >; FreeBSD

测试方法(220.181.30.11是网易的主机):
$./nonblock 220.181.30.11 80 1000000

测试程序:

  1. // nonblock.cpp
  2. #include <sys/types.h>;
  3. #include <sys/socket.h>;
  4. #include <unistd.h>;
  5. #include <stdio.h>;
  6. #include <arpa/inet.h>;
  7. #include <netinet/in.h>;
  8. #include <stdlib.h>;
  9. #include <string.h>;
  10. #include <fcntl.h>;
  11. #include <sys/time.h>;

  12. void tv_sub(timeval *out, timeval *in)
  13. {
  14.         if (out->;tv_usec < in->;tv_usec) {
  15.                 out->;tv_usec += 1000000;
  16.                 out->;tv_usec -= in->;tv_usec;
  17.                 out->;tv_sec--;
  18.         } else {
  19.                 out->;tv_usec -= in->;tv_usec;
  20.         }
  21.         out->;tv_sec -= in->;tv_sec;
  22. }

  23. int main(int argc, char *argv[])
  24. {
  25.         if (argc != 4) {
  26.                 printf("Usage: %s <ip>; <port>; <count>;\n", argv[0]);
  27.                 return -1;
  28.         }
  29.         const char *host = argv[1];
  30.         unsigned short port = atoi(argv[2]);       
  31.         int count = atoi(argv[3]);

  32.         sockaddr_in addr;
  33.         memset(&addr, 0, sizeof(addr));
  34.         addr.sin_family = AF_INET;
  35.         addr.sin_addr.s_addr = inet_addr(host);
  36.         addr.sin_port = htons(port);

  37.         int fd = socket(AF_INET, SOCK_STREAM, 0);
  38.         if (fd == -1) {
  39.                 printf("Failed to create socket!\n");
  40.                 return -1;
  41.         }
  42.        
  43.         int flag = fcntl(fd, F_GETFL, 0);
  44.         fcntl(fd, F_SETFL, flag | O_NONBLOCK);
  45.        
  46.        
  47.         connect(fd, (sockaddr*)&addr, sizeof(addr));
  48.        
  49.         fd_set rset, wset;
  50.         FD_ZERO(&rset);
  51.         FD_SET(fd, &rset);
  52.         wset = rset;

  53.         select(fd + 1, &rset, &wset, NULL, NULL);
  54.         if (FD_ISSET(fd, &rset) || FD_ISSET(fd, &wset)) {
  55.                 printf("%s is connected!\n", host);
  56.                 timeval begin, end;
  57.                 gettimeofday(&begin, NULL);
  58.                 char buf[1024];
  59.                 for (int i = 0; i < count; i++) {
  60.                         read(fd, buf, sizeof(buf));       
  61.                 }
  62.                 gettimeofday(&end, NULL);
  63.                 tv_sub(&end, &begin);
  64.                 printf("time escaped: %d.%06d\n", end.tv_sec, end.tv_usec);
  65.         }

  66.         close(fd);
  67.         return 0;
  68. }
复制代码

作者: dennis2    时间: 2005-02-01 03:46
标题: FreeBSD, NetBSD, Linux简单性能测试
性能测试在 vmware 里进行,呵呵
作者: svenwang    时间: 2005-02-01 03:53
标题: FreeBSD, NetBSD, Linux简单性能测试
[quote]原帖由 "dennis2"]性能测试在 vmware 里进行,呵呵[/quote 发表:

没办法,条件不够。不过也能说明一些问题了。
作者: scyzxp    时间: 2005-02-01 08:53
标题: FreeBSD, NetBSD, Linux简单性能测试
能说明什么呀!我就觉得FB好呀,因为网络中运行时间最长的最稳定最安全的还是FB,我相信FB是最好的。就用你的虚拟机来测试算什么呀!只有事实才能说明一切的,实事上就是运行时间最长最稳定最安全的服务器还是FB最棒!
作者: 剑心通明    时间: 2005-02-01 09:05
标题: FreeBSD, NetBSD, Linux简单性能测试
这三个系统比较的话,肯定是FB好了
作者: dennis2    时间: 2005-02-01 09:45
标题: FreeBSD, NetBSD, Linux简单性能测试
为什么 FreeBSD 就是最好呢?可以看看这个网站的测试结果(大概是一年多前的测试了):

http://bulk.fefe.de/scalability/
作者: 北京野狼    时间: 2005-02-01 13:34
标题: FreeBSD, NetBSD, Linux简单性能测试
都差不多看各自的应用,
非说什么什么是最好的毫无道理
作者: delphij    时间: 2005-02-01 14:13
标题: FreeBSD, NetBSD, Linux简单性能测试
实验方法有非常严重的缺陷,在有问题的实验方法下得到的所谓结论没有参考价值。

(1) VMWare而不是真实的硬件。你无法排除VM本身的影响、Cache的影响,以及操作系统对VMWare支持问题。头脑正常的管理员不会考虑用VMWare Workstation去跑操作系统。
(2) 采用一个远程站点去做测试,不可能提供可靠的结果。大带宽延迟积条件下不同带宽用户连接服务的时候性能如何?
(3) 同时跑64个这样的测试的时候性能如何?高负载时性能如何?
(4) FreeBSD 5.3上面性能如何?
(5) 使用的gcc版本是否一样?编译优化幅度是否一样?如何排除其影响?
(6) Linux所作的内核是为性能优化的,FreeBSD和NetBSD是首先考虑可靠性,你是否重新编译过内核?如何做的?是否调整过配置去优化具体应用的性能,无论Linux还是*BSD?
(7) 计时方法是否准确?如何排除方法所造成的误差?
作者: rockins    时间: 2005-02-01 14:44
标题: FreeBSD, NetBSD, Linux简单性能测试
还是delphj厉害,一针见血
我相信FreeBSD的性能,尽管我只是用它作为桌面,写写程序。
作者: 北京野狼    时间: 2005-02-01 15:46
标题: FreeBSD, NetBSD, Linux简单性能测试
原帖由 "rockins" 发表:
还是delphj厉害,一针见血
我相信FreeBSD的性能,尽管我只是用它作为桌面,写写程序。


FreeBSD的性能并不好,只是稳定,别盲目崇拜。
作者: 无生相    时间: 2005-02-01 16:01
标题: FreeBSD, NetBSD, Linux简单性能测试
什么也说明不了,该用什么用什么去
作者: 剑心通明    时间: 2005-02-01 16:09
标题: FreeBSD, NetBSD, Linux简单性能测试
稳定就行了,性能只要不差很多就行了嘛
作者: svenwang    时间: 2005-02-01 16:14
标题: FreeBSD, NetBSD, Linux简单性能测试
原帖由 "delphij" 发表:
实验方法有非常严重的缺陷,在有问题的实验方法下得到的所谓结论没有参考价值。

(1) VMWare而不是真实的硬件。你无法排除VM本身的影响、Cache的影响,以及操作系统对VMWare支持问题。头脑正常的管理员不会考虑用V..........

我只是想测试一下在我的应用范围内,这三个系统在我机器上的大致性能,并不想做全面的测试
作者: Macolex    时间: 2005-02-01 17:29
标题: FreeBSD, NetBSD, Linux简单性能测试
原帖由 "svenwang" 发表:

我只是想测试一下在我的应用范围内,这三个系统在我机器上的大致性能,并不想做全面的测试


那么你这样的所谓“测试”发表出来价值何在呢? 除了误导人之外。
作者: svenwang    时间: 2005-02-01 19:58
标题: FreeBSD, NetBSD, Linux简单性能测试
原帖由 "Macolex" 发表:


那么你这样的所谓“测试”发表出来价值何在呢? 除了误导人之外。

有误导的可能性,不过对我自己来说这样一个所谓的“测试”还是有意义的,起码我知道了对于*某种应用*这几种系统的差别。虽然在vmware下不是很精确,但是大致的结果还是可以确定的。
作者: slzq    时间: 2005-02-01 21:06
标题: FreeBSD, NetBSD, Linux简单性能测试
我用过的系统中,DOS 最稳定,从未死过机,FreeBSD、OpenBSD、NetBSD都被搞死过。
作者: cnhnln    时间: 2005-02-01 22:39
标题: FreeBSD, NetBSD, Linux简单性能测试
原帖由 "Macolex" 发表:


那么你这样的所谓“测试”发表出来价值何在呢? 除了误导人之外。

引发大家讨论,普及并扩展我的知识面
作者: gaussong    时间: 2005-02-02 10:19
标题: FreeBSD, NetBSD, Linux简单性能测试
[quote]原帖由 "slzq"]我用过的系统中,DOS 最稳定,从未死过机,FreeBSD、OpenBSD、NetBSD都被搞死过。[/quote 发表:


强!!  
是不是BSD是雄性?!

其实,俺觉得,哪种应用更适合于那个系统,就使用该系统。
作者: delphij    时间: 2005-02-02 11:43
标题: FreeBSD, NetBSD, Linux简单性能测试
明明在用Linux而不用epoll,明明在用FreeBSD而不用kqueue,“某种应用”是否可移植性太好了一点?试问哪个像样的应用会这么写?

我是否可以因为一个配了IDE硬盘的Opteron机器上dd的速度比配了SCSI硬盘的Xeon机器上dd的速度慢,就说Opteron机器比Xeon机器慢?

原帖由 "svenwang" 发表:

有误导的可能性,不过对我自己来说这样一个所谓的“测试”还是有意义的,起码我知道了对于*某种应用*这几种系统的差别。虽然在vmware下不是很精确,但是大致的结果还是可以确定的。

作者: delphij    时间: 2005-02-02 11:43
标题: FreeBSD, NetBSD, Linux简单性能测试
我给你一个我当年写的程序试试看,绝对没有任何死循环   

毁掉中断向量表,给MCB做个环,重写一下PSP里面的返回地址,或者改改时钟中断,退出时不改回去,让DOS死机还不容易? :wink:

[quote]原帖由 "slzq"]我用过的系统中,DOS 最稳定,从未死过机,FreeBSD、OpenBSD、NetBSD都被搞死过。[/quote 发表:

作者: svenwang    时间: 2005-02-02 20:29
标题: FreeBSD, NetBSD, Linux简单性能测试
[quote]原帖由 "delphij"][/quote 发表:

如果非阻塞套接字性能可以接受的话,当然不用去费劲去移植代码。你可能不能想象,我所在公司有的正在给客户提供服务的服务器程序竟然是用debug版本跑的
作者: hunterxu    时间: 2005-02-02 21:50
标题: FreeBSD, NetBSD, Linux简单性能测试
大家都是用什么UNIX呀
作者: flighttop    时间: 2005-02-03 05:13
标题: FreeBSD, NetBSD, Linux简单性能测试
For the hardware system of computers there is a general recognized industrial standard called SPEC2000 although each hardward manufacture has its own benchmark. So far there is no an uniform benchmark for operating systems. A couple of Ph.D in Computer Science did such research for their dissertation. But, if you guy can invent a set of standard to evaluate the performance of different computer, that will be a great contribution of Chinese people to the computer science. Don't look down each other and do something.
作者: wangrujun    时间: 2005-02-03 15:40
标题: FreeBSD, NetBSD, Linux简单性能测试
原帖由 "svenwang" 发表:

如果非阻塞套接字性能可以接受的话,当然不用去费劲去移植代码。你可能不能想象,我所在公司有的正在给客户提供服务的服务器程序竟然是用debug版本跑的


如果我说你们公司这样做有点烂,你也得承认吧。

我也这样干过。公司没有测试,忙不过来,直接给客户用,让客户测试。一个字,烂。
作者: bluebell_cu    时间: 2005-02-04 19:25
标题: FreeBSD, NetBSD, Linux简单性能测试
我觉得系统做到这个层次上,应该说安全性与稳定性都不错了,关键是管理员使用的水平了:)我觉得如果出了问题,大多时候都不能怪系统的问题,应该是管理员的管理水平。
作者: svenwang    时间: 2005-02-04 19:32
标题: FreeBSD, NetBSD, Linux简单性能测试
原帖由 "wangrujun" 发表:


如果我说你们公司这样做有点烂,你也得承认吧。

我也这样干过。公司没有测试,忙不过来,直接给客户用,让客户测试。一个字,烂。

不是因为没有时间测试的原因,公司的研发流程还是比较正规的。主要是因为debug版的性能可以接受,而且如果出了问题也容易定位错误。
作者: 葱头    时间: 2005-02-05 00:19
标题: FreeBSD, NetBSD, Linux简单性能测试
我不认为一个或者几个测试就可以认为哪个操作系统性能的高低,因为算法或者优化等其他原因,没有一个操作系统能够在每个方面都能够获胜,所谓的测试也只是作为一种参考,甚至只是管中窥豹。使用什么操作系统最主要的还是看应用,其实每个操作系统都有它自己的优点和缺点,至于性能高低、稳定性和可维护性,那真的见仁见智了。
作者: ykzj    时间: 2007-07-22 11:22
其实是什么?


楼主你在vmware里面进行测试


那么你是否对每一种guest OS都安装了相应的vmware-tool?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2