草庐IT

吞吐量

全部标签

c - 为什么这个 C 程序报告的吞吐量比 nload 高?

我在两台具有10GibE的机器之间运行以下C程序;该程序报告12Gib/s,而nload报告(更可信)9.2Gib/s。谁能告诉我我在程序中做错了什么?..#defineBUFFSZ(4*1024)charbuffer[BUFFSZ];..start=clock();while(1){n=write(sockfd,buffer,BUFFSZ);if(n这是Linux2.6.32上的CentOs6.0;nload0.7.3,gcc4.4.4。 最佳答案 首先,clock()返回程序使用的CPU时间的估计值,而不是挂钟时间-因此您的计算

c - TCP 网络吞吐量测量

作为练习的一部分,我正在编写一个小程序来测试网络吞吐量,并且需要将发送和接收缓冲区增加到256KB(以尝试提高TCP性能)。我使用setsockopt()和SO_SNDBUF/SO_RCVBUF选项执行此操作,并且还增加了“net.core.rmem_max”和“net.core.wmem_max”值。getsockopt()确认缓冲区大小的增加(256KB值的两倍)所以我知道这很好。但是,当我将256KB的数据从一台主机发送到另一台主机时,接收方总是在多次读取中接收它,每次读取的大小各不相同(形式介于20到40次读取之间,接收字节数从1448到18824不等)直到它接收到所有数据.在

tcp - TCP慢启动如何提高吞吐量?

TCP慢启动是在Internet开始经历“拥塞崩溃”的时候出现的。来自VanJacobsonandMichaelKarelspaper的轶事示例去:Duringthisperiod,thedatathroughputfromLBLtoUCBerkeley(sitesseparatedby400yardsandtwoIMPhops)droppedfrom32Kbpsto40bps.拥塞问题通常被描述为由高速链路到低速链路的转换,以及在此瓶颈处缓冲区中的数据包建立/丢弃引起的。我想了解的是,这样的构建会如何导致端到端吞吐量下降,而不是简单地在链路的高速部分导致多余的事件/重新传输导致进入完

java - 在应用程序级别调整 TCP 数据包大小以实现最大吞吐量

在应用程序级别,比如说使用java,我需要为实际的TCP数据包大小担心多少?因此,例如,我正在尝试编写一个应通过TCP套接字的输出流发送数据的应用程序,我是否必须始终考虑写入流的数据大小?由于java套接字是流式套接字,我实际上没有考虑数据单元的大小,但是TSO(TCP分段卸载)为操作系统/网卡“打开”,然后我可以将64KB数据片或MSS写入输出流和因此尽量节省将数据切片到小于1500字节( 最佳答案 howmuchdoIhavetoworryabouttheactualTCPpacketsize?几乎没有。你可以设置NoTcpDe

windows - 最小 Winsock2 应用程序的性能调试网络吞吐量

我有一个非常简单的Winsock2TCP客户端——下面的完整列表——它只是发送一堆字节。但是,它在网络上的运行速度非常慢;数据只是慢慢流过。这是我尝试过并发现的(两台WindowsPC在同一个LAN上):从一台机器到另一台机器运行这个应用程序很慢-发送8MB大约需要50秒。两个不同的服务器-netcat和一个自定义编写的服务器(就像下面的客户端一样简单)-产生了相同的结果。taskmgr显示CPU和网络几乎未被使用。在同一台机器上使用服务器运行此应用程序速度很快-发送8MB大约需要1-2秒。另一个客户端netcat工作正常-发送20MB的数据大约需要7秒。(我用的是Cygwin自带的n

language-agnostic - 在 TCP 之上是否有针对高吞吐量和低延迟进行优化的协议(protocol)/标准?

是否存在针对高吞吐量和低延迟优化的TCP协议(protocol)/标准?我唯一能想到的是FAST.目前我只设计了一个简单的基于文本的协议(protocol),由特殊字符分隔。我想采用一种专为快速传输而设计的协议(protocol),并且可能支持对通过TCP套接字传输的数据进行压缩和缩小。 最佳答案 我们可以通过以下任何一种方式,在UDP之上利用TCP的面向连接/可靠的特性,而不是使用重量级的TCP:UDP-basedDataTransferProtocol(UDT):UDT通过添加拥塞控制和可靠性控制机制构建在用户数据报协议(pro

spring - 具有高吞吐量的 spring 集成的 Redis 队列正在丢失消息

我将Redis用作队列(使用springqueue-in/outbound-channel-adapter)来分发任务(将消息放入队列等)由于吞吐量相当高,我们观察到,虽然消息被发送到redis队列,但有很多消息丢失了,并且在入站(header路由器)之后没有消息到达组件channel配置附在下面;关键是我们认为问题出在入站适配器之后的这个头部路由器中,它无法管理从队列中读取消息的速率,所以它们丢失了。我们在入站适配器和此组件(即header路由器)之间使用了一个中间元素,并添加了一个队列来解决此问题。这工作正常,但实际上我们并不完全理解解决方案以及这是否是正确的解决方案。关于此配置的

performance - 如何在多核机器上扩展 Go 例程的数量以获得最大吞吐量

在多核机器上运行,我有一堆go例程在channel上等待CPU密集型任务。为了达到#tasks/second的最大吞吐量,我应该使用的Go例程的最佳数量是多少。它应该等于核心数还是与核心数成正比,还是其他什么? 最佳答案 我认为您缺少goroutines的一点,它们不是OS线程,您不应该关心它们的数量(直到您达到大约一百万个goroutines)。减少或增加它们几乎不会改变性能,因为Go运行时将负责在真实操作系统线程上调度它们。真实操作系统线程数由GOMAXPROCS控制(您可以通过编程或将其设置为环境变量)。它默认为您机器上的内核

linux - 嵌入式 Linux ( ARM ) 中的低内存吞吐量

我正在使用ARM926EJS。在没有Linux的情况下,我在内存复制测试中的内存速度提高了20%(就像入门可执行文件一样)。但在Linux中,相同的代码运行速度要慢20%。代码是///Belowcodejustperformsburstmodememcopytest.voidasmcpy(void*a,void*b,intiSize){do{asmvolatile("ldmia%0!,{r3-r10}\n\t""stmia%0!,{r3-r10}\n\t":"+r"(a),"+r"(b)::"r"(r3),"r"(r4),"r"(r5),"r"(r6),"r"(r7),"r"(r8),

linux - 磁盘吞吐量 - 使用 dd 的新文件与现有文件

我想使用以下命令测量我的磁盘吞吐量:ddif=/dev/zeroof=/mydir/junkfilebs=4kcount=125000如果垃圾文件存在,我的磁盘吞吐量比垃圾文件不存在时小6倍。我已经重复了很多次,结果仍然有效。有人知道为什么吗?谢谢,阿米尔。 最佳答案 Inordertominimizediskcaching,youneedtocopyanamountsignificantlylargerthantheamountofmemoryinyoursystem.2XtheamountofRAMinyourserverisa