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的速度。