Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 测量本地速度?_Linux_Bash_Sockets_Unix - Fatal编程技术网

Linux 测量本地速度?

Linux 测量本地速度?,linux,bash,sockets,unix,Linux,Bash,Sockets,Unix,如何通过AF\u UNIXsockets测量数据交换的速度?是否可以编写两个bash脚本: 首先创建套接字,将套接字绑定到本地地址,接受连接并将所有数据接收到/dev/null 第二个创建套接字,与已打开的套接字建立连接,并在/dev中生成一些设备,以便可以使用dd命令测量速度 您可以使用netcat-U轻松地通过unix域套接字进行通信。当您想知道数据在管道中移动的速度时,pv命令非常有用 接收人: nc -lU /tmp/socket > /dev/null 发件人: pv /de

如何通过
AF\u UNIX
sockets测量数据交换的速度?是否可以编写两个bash脚本:

  • 首先创建套接字,将套接字绑定到本地地址,接受连接并将所有数据接收到
    /dev/null
  • 第二个创建套接字,与已打开的套接字建立连接,并在
    /dev
    中生成一些设备,以便可以使用
    dd
    命令测量速度

您可以使用
netcat-U
轻松地通过unix域套接字进行通信。当您想知道数据在管道中移动的速度时,
pv
命令非常有用

接收人:

nc -lU /tmp/socket > /dev/null
发件人:

pv /dev/zero | nc -U /tmp/socket

一般来说,unix套接字速度非常快。在我的旧笔记本电脑上,它的速度为170 MB/s,而在我稍新的台式电脑上,它的速度为400 MB/s。

虽然它不是一个脚本,但这是一些基本的C代码,我使用标准TCP套接字量化套接字数据的速度(以防您确实需要在套接字级别而不仅仅是总体吞吐量上进行验证)。基本上,它在1K块中写出1K…16M个数据点

  for (int i=0; i<15; i++)
  {
     if ((fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) > 0)
     {
        timenode node;
        clock_gettime(CLOCK_REALTIME, &node.ts);
        if (connect(fd, (struct sockaddr *) &sa, sizeof(sa)) == 0)
        {
           int n = 0;
           int wb = 1024<<i;
           while ((wb-n)>0)
           {
              n+=send(fd, buf, sizeof(buf), 0);
           }
        }
        do_ts(node.ts, wtn[i], wavg[i]);
        close(fd);
     }
  }
for(int i=0;i 0)
{
时间节点;
clock\u gettime(clock\u REALTIME和node.ts);
if(connect(fd,(struct sockaddr*)&sa,sizeof(sa))==0)
{
int n=0;

int wb=1024I已使用以下命令测量数据速率:
while(true);do rm socket;nc-lU socket>/dev/null;done
dd if=/dev/zero bs=$bs | nc-U socket
。我尝试了以下块大小:
128、256、512、1k、2k、4k、8k、16k和32k
。最好的性能是
201 MB/sec
i3
上使用
16k
块大小
2GB
RAM.Coolk最大的限制因素是RAM的速度。