问题标签 [throughput]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - 选择/配置数据库以获得高吞吐量、可靠、一致的写入吞吐量,牺牲延迟
我正在开发具有以下特征的实时应用程序:
- 数百个客户端将同时插入行/文档,每个客户端每隔几秒钟插入一行。
- 很大程度上只追加;几乎所有的行/文档,一旦插入,就永远不会改变。
- 只有当数据被刷新到磁盘时,客户端才能看到成功,此后读写一致性应该保持。
- 客户愿意等待几秒钟的时间来确认 - 足够长的时间来进行多次磁盘查找和写入。
- 有太多数据无法放入 RAM(排除 Redis 等选项)。但是很久以前写入的行很少被访问,因此不将它们放在内存中是可以接受的。
- 理想情况下,这些写入不应阻塞读取。
- 键值存储很好,但至少需要一个可靠的自增索引。
换句话说(和 tl;dr),客户端可以容忍延迟,但他们需要大量可信赖的写入吞吐量 - 比“一次写入是一次磁盘操作”更高的吞吐量。
我正在设想一个可以像这样实现的数据库:接受(理论上受文件描述符数量限制)数量的 TCP 连接,在内存中缓冲这些写入,尽可能频繁地将它们的批次记录到磁盘(连同自动递增索引的更新),并且仅在相关的磁盘写入操作完成时才响应这些 TCP 连接。或者它可以像延迟写入数据库一样简单,它发布一条已完成磁盘写入的消息(客户端等待延迟响应,然后等待写入消息报告成功)。
我认为具有如此高的延迟容忍度,这并没有要求太多。而且我想其他人也遇到过这个问题,例如金融公司,它们不能承受丢失数据,但可以承受延迟对任何一个客户的响应。
是否有任何久经考验的数据库解决方案,如 Postgres、CouchDB/Couchbase 或 MongoDB 支持这样的操作模式?
wcf - 当我添加更多机器时,为什么我的 azure 托管 WCF 服务无法扩展?
我们有一个 WCF 服务,我们在 azure 上托管。它需要一些 xml 并在内存中处理它(没有外部调用/db 等,大约需要 150 毫秒)并返回一些 xml。
我们一直在对其进行负载测试,当我们在 1,2 和 4 核机器上运行它时,我们可以最大限度地利用处理器并获得每秒最多 40 次调用的吞吐量(在 4 核机器上)。然而,当我们切换到一台 8 核机器或两台 4 核机器时,我们仍然每秒只能收到大约 40 个调用。
当我扩大处理机器的数量时,为什么我无法获得更多的吞吐量?我希望添加更多机器会相当线性地增加我的吞吐量,但事实并非如此。为什么不?
c++ - Linux 上的低延迟串行通信
我正在 Linux 上通过串行端口实现协议。该协议基于请求应答方案,因此吞吐量受限于将数据包发送到设备并获得应答所需的时间。这些设备大多基于 arm 并运行 Linux >= 3.0。我在将往返时间减少到 10 毫秒以下时遇到了麻烦(115200 波特,8 个数据位,无奇偶校验,每条消息 7 个字节)。
哪些 IO 接口会给我最低的延迟:select、poll、epoll 或使用 ioctl 手动轮询?阻塞或非阻塞 IO 会影响延迟吗?
我尝试使用 setserial 设置 low_latency 标志。但是好像没什么效果。
我还有什么可以尝试减少延迟的方法吗?由于我控制所有设备,因此甚至可以修补内核,但最好不要。
- - 编辑 - -
串行控制器使用的是 16550A。
cuda - 确定 CPU 和 CUDA 上模乘的延迟和吞吐量
我需要确定 CUDA 和 CPU(i5 750)中(无符号)模乘的延迟和吞吐量。
对于 CPU,我找到了这篇文档,第 121 页,对于 Sandy Bridge,我不确定我应该参考哪一个,但是对于“MUL IMUL r32”,我得到 4 个周期的延迟和倒数吞吐量等于 2。然后“DIV r64”的延迟为 30-94 和 rec.thr。22-76。
最坏的情况是:
延迟 94+4
rec.thr。76+2
正确的?虽然我使用 OpenSSL 来执行它们,但我很确定在最低级别它们总是运行简单的模乘法。
关于 CUDA,目前我在 PTX 中执行模乘:乘以 2 32b 数,将结果保存在 64b 寄存器上,在 64b 寄存器上加载 32b 模,然后执行 64b 模。
如果你看这里,第 76 页,他们说 Fermi 2.x 上 32b 整数乘法的吞吐量是 16(每个 MP 的每个时钟周期)。关于模数,他们只是说:“计算能力 2.x 的设备上的指令少于 20 条”......
这到底是什么意思?最坏的情况是每模每 MP 延迟 20 个周期?和吞吐量?每个 MP 有多少模数?
编辑:
如果我有一个扭曲,其中只有扭曲的前 16 个线程必须执行 32b 乘法(每个 MP 每个周期 16 个)。GPU 会忙一两个周期,尽管后半部分什么都不做?
c# - 使用Skype时如何测量网络的吞吐量
我正在使用 USB 加密狗 Wimax 和 skype 作为 voip 应用程序。我想在运行时测量吞吐量(kb/s 或 Mb/s)。有没有办法使用matlab或C#来做到这一点?(我有一个项目,需要编写一个不使用现有工具的代码)谢谢
tcp - 计算网络吞吐量
假设我有一个 4MBits 网络并且我想计算数据吞吐量,这是考虑最大传输速率减去来自以太网/IP/TCP 标头的开销。在网上阅读我发现 TCP 段的 MSS(最大段大小)是 576 - 20 - 20,最后两个是 TCP 和 IP 标头开销,导致 93% 的数据,这意味着我将只使用我的 4MBits 链接中有 93% 用于传输数据。现在链接层开销在哪里?不应该也加吗?如果我没有错,以太网标头大约是 46 字节,所以最终总和将是 576 - 20 - 20 - 46 = 490,导致 85% 的数据吞吐量,但我做错了吗?
memory - “gld/st_throughput”和“dram_read/write_throughput”指标有什么区别?
在 CUDA 视觉分析器版本 5 中,我知道“gld/st_requested_throughput”是应用程序请求的内存吞吐量。然而,当我试图找到硬件的实际吞吐量时,我很困惑,因为有两对指标似乎是合格的,它们是“gld/st_throughput”和“dram_read/write_throughput”。哪一对实际上是硬件吞吐量?另一个是做什么的?
performance - TCP 最大吞吐量和浏览器
理论上,最大 tcp 速度是 min{rwnd,cwnd} / RTT,其中 cwnd 是拥塞窗口大小,rwnd 是接收窗口大小。假设 cwnd 足够大,那么它就是 rwnd/RTT。现在,如果我得到的最大窗口大小为 65Kbytes(使用来自某个站点的这些计算):
这有多准确?由于我可以以 5Mbps 的速度从网站下载(不是 torrent,直接下载),同时 RTT 超过 200 毫秒,所以我超过了理论最大值,为什么会发生这种情况?浏览器是否使用超过 1 个 tcp 连接进行下载?
另外,我想知道 rwnd/RTT 究竟来自哪里,因为 rwnd 字节可以(并且肯定会)超过 1 个 TCP 段大小,这意味着您将在每个 RTT 开始时发送超过 1 个段,这意味着 1 RTT 不足以发送和接收来自所有已发送段的 ACK,因此 rwnd/RTT 实际上与实际吞吐量相差甚远。
testing - Kafka 0.8 生产者吞吐量测试
根据 Kafka 官方文档,生产者吞吐量约为 50MB/S。但是我做了一些测试,整个生产者只有2MB/S左右。测试环境和文档说的一样。一个生产者,一个经纪人,一个动物园管理员在一台独立的机器上。消息大小为 100 字节,批量大小为 200,刷新间隔为 600 条消息。测试环境相同,配置相同。那为什么我的测试结果和文件说的差距这么大?
tomcat - 构建可扩展的 xml 桥接处理平台
我正在构建接收来自 Internet 的请求、连接到本地可用的搜索平台并获取一些 XML 的中间件。
然后,它更改此 XML、修剪它并更改为其他格式(可能是 JSON)并将其发送回调用应用程序。
我正在考虑使用以下技术堆栈来实现这一点。
Tomcat + 普通的旧 servlet
我想尽可能提高每箱的吞吐量(四核、双 CPU、32GB 内存),我怀疑 tomcat 可能不是最好的选择,我可能会更好地使用 Jetty 或灰熊还是其他我不知道的?有没有人有一些比较数据或轶事证据表明他们将从哪种技术开始?
如果没有,我想我应该先用我自己的测试数据集对它们进行基准测试。叹