Questions tagged «latency»

5
LMAX的破坏者模式如何工作?
我试图了解破坏者的模式。我已经看过InfoQ视频,并试图阅读他们的论文。我知道其中涉及一个环形缓冲区,它被初始化为一个非常大的数组,以利用缓存的局部性,消除新内存的分配。 听起来好像有一个或多个原子整数可以跟踪位置。每个“事件”似乎都有一个唯一的ID,并且可以通过找到相对于环大小等的模数来找到它在环中的位置。 不幸的是,我对它的工作方式没有直观的认识。我完成了许多交易应用程序,研究了参与者模型,研究了SEDA等。 他们在演讲中提到,这种模式基本上就是路由器的工作方式。但是我也没有找到关于路由器工作方式的任何好的描述。 是否有一些更好的解释的好指针?



5
减少Haskell程序中的垃圾收集暂停时间
我们正在开发一个程序,该程序可以接收和转发“消息”,同时保留这些消息的临时历史记录,以便在需要时可以告诉您消息的历史记录。消息是通过数字标识的,通常大小约为1 KB,我们需要保留成百上千的此类消息。 我们希望针对延迟优化此程序:发送和接收消息之间的时间必须小于10毫秒。 该程序用Haskell编写,并由GHC编译。但是,我们发现,垃圾回收暂停对于我们的延迟要求来说太长了:在我们的实际程序中超过100毫秒。 以下程序是我们应用程序的简化版本。它使用a Data.Map.Strict来存储消息。消息ByteString由标识Int。1,000,000条消息以递增的数字顺序插入,并且最旧的消息不断被删除,以使历史记录最多保留200,000条消息。 module Main (main) where import qualified Control.Exception as Exception import qualified Control.Monad as Monad import qualified Data.ByteString as ByteString import qualified Data.Map.Strict as Map data Msg = Msg !Int !ByteString.ByteString type Chan = Map.Map Int ByteString.ByteString message :: Int -> Msg message n = …

10
Java和C / C ++之间最快的(低延迟)进程间通信方法
我有一个Java应用程序,通过TCP套接字连接到用C / C ++开发的“服务器”。 应用程序和服务器都在同一台计算机上运行,​​这是一个Solaris机器(但我们最终正在考虑迁移到Linux)。交换的数据类型是简单的消息(登录,登录ACK,然后客户端要求某些内容,服务器答复)。每个消息大约300字节长。 当前,我们正在使用套接字,并且一切都很好,但是我正在寻找使用IPC方法交换数据(更快的延迟)的更快方法。 我一直在研究网络,并提出了以下技术的参考: 共享内存 管道 s列 以及所谓的DMA(直接内存访问) 但是我找不到对它们各自性能的正确分析,也找不到如何在JAVA和C / C ++中实现它们(以便它们可以相互通信)的方法,但也许我可以想象如何做。 在这种情况下,任何人都可以评论每种方法的性能和可行性吗?任何指向有用的实现信息的指针/链接? 编辑/更新 在我到达这里的评论和答案之后,我找到了有关Unix Domain Sockets的信息,该信息似乎是通过管道构建的,将为我节省整个TCP堆栈。它是特定于平台的,因此我计划使用JNI或juds或junixsocket对其进行测试。 下一个可能的步骤是直接实现管道,然后实现共享内存,尽管我已经被警告过额外的复杂性... 谢谢你的帮助
100 java  c++  performance  ipc  latency 

2
Amazon RDS备份/快照实际上如何工作?
我是Amazon RDS客户,并且每天都在经历Amazon RDS写入延迟峰值,大致对应于备份窗口。我还将在快照末尾看到峰值(例如:运行快照大约需要1个小时,而在最后5分钟内,写入延迟峰值)。我正在运行多可用区m1.large部署。 堆栈上有谁可以解释Amazon RDS备份的实际工作方式吗?我已经阅读了Amazon RDS文档,据我所知,Amazon RDS的行为不符合规范。具体来说,这些备份/快照操作应该击中我的副本,因此不会造成停机时间/性能下降,或者我认为。 我可以将我的问题分为六个问题: 快照和备份期间在技术上发生了什么,它们有何不同?(如果您回答了这个问题,请告诉我您是否能够凭经验确认您的答案,或者只是引用我的文档)。 在多可用区部署的备份窗口期间,是否会出现写延迟高峰? 在多可用区部署中,快照结束时是否会出现写延迟高峰? 如果我不是多可用区,我的写延迟高峰会更高吗? 从体系结构上讲,如果我在两个m1.large EC2实例上运行自己的数据库,是否能够避免这些写延迟高峰? 我是否可以使用任何配置来避免这些写入延迟峰值,同时仍用RDS托管我的数据库,还是我可以有效地受到Amazon的摆布? 奖励问题:您在哪里以及如何托管mysql数据库? 我可以说,除了这些日常写入延迟问题之外,我对RDS总体上感到满意。我喜欢内置的数据库监视功能,它的设置和运行相当简单。 谢谢!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.