freebsd 中的libnet发送性能**

2009-05-13 10:55:31来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


                使用千兆网络发数据包,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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:OpenBSD FAQ

下一篇:Linux 和FreeBSD libnet 发送机制对比