freebsd 中的libnet发送性能**
2009-05-13 10:55:31来源:未知 阅读 ()
使用千兆网络发数据包,FREEBSD的性能比Linux中差太多了!!!
使用4个千兆网口发送数据,Linux可以达到4*950Mbps
而FreeBsd:....看测试情况:
1口:940Mbps,还可以,奇怪的是CPU 60以上
2口:940*2 也不错,很神奇的CPU变成了10左右
3口:600*3 不爽CPU 15
4口同时跑!!!问题来了,40*4。差差!!不可理喻。
而且不支持大帧。
配了MTU,没有用。
神奇的BSD!!!
附上测试代码:
多线程。但用多进程也是同样结果
#ifdef HAVE_CONFIG_H
#include
#endif
#include
#include
#include
#include
#include
#include
using namespace std;
int packet_len;
int sleep_tm;
struct send_info_t
{
pthread_t pt;
char *dev_name;
long long sended_count;
};
#define ETH_COUNT 16
send_info_t si[ETH_COUNT];
void *Thread_Send(void *pParam)
{
send_info_t *psi = (send_info_t *)pParam;
libnet_t *l;
char errbuf[LIBNET_ERRBUF_SIZE];
int c;
unsigned char ch = 0;
libnet_ptag_t t =0;
unsigned char hwdst[ETHER_ADDR_LEN] = {0x11,0x11,0x11,0x11,0x11,0x11};
unsigned char hwsrc[ETHER_ADDR_LEN] = {0x22,0x22,0x22,0x22,0x22,0x22};
unsigned char data[10000];
memset(data,ch,10000);
l = libnet_init(LIBNET_LINK,psi->dev_name,errbuf);
if(l==NULL)
{
cout dev_namedev_namesended_count ++;
}
libnet_destroy(l);
coutdev_name= ETH_COUNT )
break;
send_info_t *psi = &si[i-3];
psi->dev_name = argv;
pthread_create(&psi->pt,NULL,Thread_Send,psi);
}
timeval tv_start,tv_now;
gettimeofday(&tv_start,NULL);
for(;;)
{
gettimeofday(&tv_now,NULL);
for(i=0;idev_name != NULL)
{
long long s = (long long)tv_start.tv_sec *1000000 + tv_start.tv_usec;
long long s1 = (long long)tv_now.tv_sec *1000000 + tv_now.tv_usec;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 利用LVS+Keepalived 实现高性能高可用负载均衡服务器 2009-05-13
- postfix下发送不到gmail邮箱的解决办法 2009-05-13
- FreeBSD下搭建高性能企业级网关 2009-05-13
- 调查!!大家都用什么做虚似主机?? 2009-05-13
- 修改cputype后 make world 能提高性能? 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash