我有一个系统,由许多不同的阶段组成,通过管道连接在一起。具体地说,我有许多不同的进程通过tcp - ip通信;消息是通过面向数据包的协议交换的(如果满足某些条件,更多的消息可以被塞进单个有线协议数据单元);我也有控制流队列-套接字是非阻塞的,如果我无法发送I队列消息,甚至无法将它们合并到发送队列中;当然,运行时发生的事情取决于底层的tcp ip控制流,所以我也想对tcp ip队列进行建模。所以问题是--有没有人可以分享他们对如何为我的系统进行模拟的想法?我已经想过为它做一个模拟器--也就是:我的模型中的每个队列都有一个具有队列数据结构的程序,对于每一次滴答,我让模型根据我对系统的理解来演变,即如果我模型中的tcp缓冲区的数据结构表明它有足够的空间,我就减少输出队列中的消息数量,并将tcp缓冲区模型中的可用空间计数器减少消息的大小,依此类推-然后,我根据tcp链路的带宽以一定的速率清空tcp缓冲区(当然,我假设我正在抽取大量数据,并且tcp链路的唯一参数是带宽)。构建这样一个东西似乎需要很大的努力,我不确定这是否是我需要的。也许我最好使用某种excel电子表格模型,但我不确定如何构建它。
发布于 2009-03-02 13:26:59
通过使用discrete event simulation工具或库,您可能会得到一个仍然有用但更简单的模型。您仍然需要以模型理解的形式复制应用程序的大部分结构,但获得用于注入不同分布的消息速率的工具,也许可以更轻松地处理不同的场景。
发布于 2009-03-02 14:14:06
您可以使用Ronald Szeto's TCP Simulator。它有一个指向它的Java接口。我不会尝试让成对队列变得如此复杂。只需对系统建模,然后使用此模拟器对底层网络条件进行建模,并将它们链接在一起,就像在操作系统中一样。我假设你可能不会在你的实际系统上为你的应用程序中的每个人都有单独的网络队列。
https://stackoverflow.com/questions/602222
复制相似问题