标签: throughput

图吞吐量算法

我的任务是计算图表中的最大吞吐量。

描述图形的最简单方法是int[][]。内部数组是图中的节点,外部数组是连接图中每个节点的距离,例如:

new int[][] {
    {0, 5, 0, 0}, // node 0 (the "source")
    {0, 0, 4, 0}, // node 1
    {0, 0, 0, 8}, // node 2
    {0, 0, 0, 0}  // node 3 (the "destination")
}
Run Code Online (Sandbox Code Playgroud)

因此,要从node 0(源)到node 3(目标),“最大吞吐量”将是每圈 4,因为:

  • 5 个数据包可以从节点 0 到节点 1
  • 4 个数据包可以从节点 1 到节点 2
  • 8 个数据包可以从节点 2 到节点 3

在“每转”的基础上,瓶颈在node 1和之间node 2,其中最大吞吐量为 4。

可有人点我会解决这个“最大吞吐量”问题,以这种方式定义的任何给定的图形算法int[][],并给出sourcedestination节点?

示例图将使用多个“源”和“目的地”进行扩展,我将需要在任何给定的“转弯”上计算整个系统的最大吞吐量。

我很感激以学习算法或“伪代码”的形式提供的帮助。

algorithm graph max throughput data-structures

5
推荐指数
1
解决办法
758
查看次数

最佳CPU利用率阈值

我已经构建了可以在Windows 2003服务器上部署的软件。该软件作为服务连续运行,并且是Windows上对我来说很重要的唯一应用程序。有时,它是从Internet检索数据,而有时则是对这些数据进行一些计算。它是多线程的-我使用大约4-20个线程的线程池。

我不会为您带来所有这些细节,但是只要我在池中启用更多线程,就可以进行更多的并发工作,并且CPU使用率会增加。(对带宽等其他资源的需求也是如此,尽管这对我来说无关紧要-我有很多)

我的问题是:我是否应该简单地尝试最大程度地利用CPU来获得最大的收益?凭直觉,我认为以100%CPU运行是没有道理的。甚至95%的CPU似乎都很高,几乎就像我没有给OS太多的空间来做它需要做的事情。我不知道确定最佳平衡的正确方法。我猜想我可以进行测量,并且可能发现在90%或91%的CPU平均利用率等情况下可以实现最佳吞吐量,但是...

我只是想知道这是否有很好的经验法则???我不想假设我的测试将考虑工作负载的各种变化。我宁愿玩一点安全,但不要太安全(否则我的硬件使用不足)。

你有什么建议吗?对于Windows上的多线程混合负载(某些I / O,某些CPU)应用程序,明智的,注重性能的使用规则是什么?

cpu performance multithreading throughput

4
推荐指数
1
解决办法
1万
查看次数

C++套接字编程:最大化localhost上的吞吐量/带宽(我只获得3 Gbit/s而不是23GBit/s)

我想创建一个C++服务器/客户端,通过我的localhost上的TCP套接字通信最大化吞吐量.作为准备,我使用iperf找出i7 MacBookPro上的最大带宽.

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size:  256 KByte (default)
------------------------------------------------------------
[  4] local 127.0.0.1 port 5001 connected with 127.0.0.1 port 51583
[  4]  0.0-120.0 sec   329 GBytes  23.6 Gbits/sec
Run Code Online (Sandbox Code Playgroud)

没有任何调整,ipref告诉我,我可以达到至少23.2 GBit/s.然后我做了我自己的C++服务器/客户端实现,你可以在这里找到完整的代码:https://gist.github.com/1116635

我的代码我基本上每次读/写操作传输一个1024bytes的int数组.所以我在服务器上的发送循环如下所示:

   int n;

   int x[256];

   //fill int array
   for (int i=0;i<256;i++)
   {
       x[i]=i;
   }

   for (int i=0;i<(4*1024*1024);i++)
   {
       n = write(sock,x,sizeof(x));
       if (n < 0) error("ERROR writing to socket");
   }
Run Code Online (Sandbox Code Playgroud)

我在客户端上的接收循环如下所示:

int x[256]; 

for (int i=0;i<(4*1024*1024);i++)
{
    n …
Run Code Online (Sandbox Code Playgroud)

c++ sockets bandwidth throughput

4
推荐指数
2
解决办法
9568
查看次数

TCP接收窗口

我试图了解接收器窗口如何影响高延迟连接的吞吐量.

我在两台相距很远的机器上有一对简单的客户端 - 服务器应用程序,两者之间的连接是250毫秒延迟RTT.我使用Windows(XP,7)和Linux(Ubuntu 10.x)运行此测试,结果相同,所以为了简单起见,我们假设:客户端接收数据:WinXP Pro Server发送数据:Win7 Pro再次,延迟是250毫秒RTT.

我在不更改客户端上的接收器缓冲区大小的情况下运行TCP测试(默认为8Kb),我在线上看到(使用Wireshark):

  • 客户端向服务器发送ACKS,TCP包包含RWIN = 65k
  • 服务器发送数据并报告RWIN = 65k

查看跟踪,我看到3-4个数据包(有效载荷为1460字节)的突发,紧接着是从客户端机器发送到服务器的ACK,然后没有任何约250毫秒然后来自服务器的新数据包突发给客户.

因此,总而言之,服务器似乎甚至在填满接收者窗口之前就不会发送新数据.

为了做更多的测试,这次我还运行了相同的测试,在客户端机器上更改了接收器的缓冲区大小(在Windows上,更改接收器的缓冲区大小最终会影响机器公布的RWIN).我希望在阻止ACK之前看到大量的数据包突发...并且至少有更高的吞吐量.

在这种情况下,我将recv缓冲区大小设置为100,000,000.从客户端到服务器的数据包现在有一个RWIN = 99,999,744(好吧,那很好),但不幸的是从服务器发送到客户端的数据模式仍然是相同的:短暂的突发,然后是漫长的等待.为了确认我在线上看到的内容,我还测量了从服务器向客户端发送大量数据的时间.我没有看到使用大型RWIN或使用默认值的任何更改.

任何人都可以帮助我理解为什么更改RWIN并不会真正影响吞吐量?

很少有注意事项: - 服务器使用8Kb块的write()尽可能快地发送数据 - 正如我之前所说,我也看到了使用Linux的类似效果.更改接收器缓冲区大小会影响节点使用的RWIN,但吞吐量保持不变. - 我分析了数百个数据包之后的跟踪,给TCP足够的时间启动机制放大CWIN大小.


正如所建议的那样,我在这里添加了一条线迹的小快照

No.     Time        Source                Destination           Protocol Length Info
     21 2.005080    CCC.CCC.CCC.CCC       sss.sss.sss.sss       TCP      60     57353 > 21500 [ACK] Seq=1 Ack=11681 Win=99999744 Len=0
     22 2.005109    sss.sss.sss.sss       CCC.CCC.CCC.CCC       TCP      1514   21500 > 57353 [ACK] Seq=19305 Ack=1 Win=65536 Len=1460
     23 2.005116    sss.sss.sss.sss       CCC.CCC.CCC.CCC       TCP      1514   21500 > 57353 [ACK] Seq=20765 Ack=1 Win=65536 Len=1460
     24 …
Run Code Online (Sandbox Code Playgroud)

performance networking tcp latency throughput

4
推荐指数
1
解决办法
1万
查看次数

Jmeter - 吞吐量控制器下的“每用户”复选框的功能是什么?

我需要将应用程序的负载划分为一些百分比,即登录模块 - 60%,帐户 - 10%,其他模块 - 30%。经过一番研究后,我在 jmeter 的吞吐量控制器部分下找到了一个选项,使用它我可以控制这些百分比。我在那里找到一个名为“每个用户”的复选框。现在我没有得到这个复选框。

根据 blazemeter 博客,我尝试了如下一种场景,并选中了“每用户”复选框。

  • 从下拉列表中选择“总执行”。
  • 将吞吐量标记为 40。
  • 使用的线程 - 10,循环计数 1

现在,根据博客,特定事务应该执行 400 次。但该交易的执行为零。

我尝试了另一种情况,选中了“每用户”复选框。

  • 从下拉列表中选择“总执行”。
  • 将吞吐量标记为 60。
  • 使用的线程 - 10,循环计数 1

现在,根据博客,特定事务应该执行 600 次。但它执行了10次。

那里的专家可以分享我在这里做错了什么吗?或者需要更清楚地了解此复选框的工作原理。

jmeter performance-testing throughput

4
推荐指数
1
解决办法
1479
查看次数

cassandra 写入吞吐量和可扩展性

这可能听起来像一个愚蠢的问题,但我仍然希望有人/专家回答/确认这一点。

假设我有一个 3 节点 cassandra 集群。假设我有一个数据库和一张表。对于这个单表,假设我使用 3 节点 cassandra 获得了 1K 写入/秒的吞吐量。如果明天我在此表上的写入负载增加/扩展到 10K 或 20K,我是否能够通过将集群大小增加 10 倍或 20 倍来处理此写入负载?

我对 cassandra 的理解表明这是可能的(因为 cassandra 既可读写又可扩展),但需要专家确认。

scalability cassandra throughput

4
推荐指数
1
解决办法
2万
查看次数

吞吐量和响应时间有何关系

我对 193 个样本进行了 JMeter 测试,可以看到平均响应时间为 5915 毫秒,吞吐量为 1.19832。

我只是想知道它们到底有什么关系

jmeter load-testing response-time throughput

4
推荐指数
1
解决办法
2万
查看次数

HornetQ吞吐量限制在4000 TPS而没有持久性

我在JBoss 6.1应用服务器中使用HornetQ.我的应用程序(一个客户端应用程序,生成消息,以及消耗它们的JBoss应用程序)无法在服务器上处理超过4000 TPS,而CPU仍然是60%空闲.我试图删除持久性以检查我是否是磁盘绑定但它不会提高吞吐量.

似乎问题出在生产者方面.至少在监控队列大小时,它仍然非常小,这意味着消费者不是瓶颈.

我应该使用几个队列来提高效率吗?我已经阅读过HornetQ的性能调优文档,但找不到原因.或者可能是因为我使用的是AUTO_ACKNOWLEDGE模式?我正在为生产者运行几个线程,这不应该影响很多.生产者JVM无论如何都不能使用超过1个CPU线程.我甚至试图运行我的生产者应用程序的几个实例,但它不会更快.网络带宽很高(1 Gbps),我的消息非常小(<1 KB).此外,生产者和消费者应用程序在同一服务器上运行.HornetQ配置在2台服务器的JBoss集群中.

performance jboss throughput hornetq jboss6.x

3
推荐指数
1
解决办法
1854
查看次数

Python ftplib:使用 python ftplib 时下载和上传速度低

我想知道是否有人观察到,与通过 Windows 命令提示符执行 FTP 获取/放置或使用 Perl 的Net::FTP模块相比,使用 Python 的ftplib通过 ftp 下载或上传文件所花费的时间非常长。

我创建了一个类似于http://code.activestate.com/recipes/521925-python-ftp-client/的简单 FTP 客户端,但是我无法达到在 Windows DOS 提示符下运行 FTP 或使用 perl 时获得的速度. 是我遗漏了什么还是Python ftplib 模块有问题。

如果您能说明为什么我使用 Python 的吞吐量很低,我将不胜感激。

python ftp ftplib throughput

3
推荐指数
1
解决办法
2490
查看次数

如何最大化grpc吞吐量?

在 100Gb 网络上,我创建了一个服务器来监听 4 个端口,grpc 客户端可以达到 3GB+/s 的吞吐量。但是,当服务器监听一个端口时,grpc 客户端的吞吐量仅为 1GB/s,即使我设置

args.SetInt(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES, 1024*1024*1024); args.SetInt(GRPC_ARG_MAX_CONCURRENT_STREAMS, 10);

好像 grpc 客户端只能同时使用一个连接到一个端口服务。我对吗?

正确的做法是什么?

我的代码在这里:

客户端:https : //github.com/gongweibao/tests/blob/develop/grpc_test/client.cc
服务器:https : //github.com/gongweibao/tests/blob/develop/grpc_test/server.cc

throughput grpc

3
推荐指数
1
解决办法
1726
查看次数