language-agnostic - 我如何为这种使用场景建模?

标签 language-agnostic optimization math networking

我想创建一个相当简单的数学模型来描述系统中的使用模式和性能权衡。

系统行为如下:

  • 客户端定期向主机网络发出多播数据包
  • 任何接收到数据包的主机都直接以单播应答响应
  • 发起主机缓存某个给定时间段的响应,然后丢弃它们
  • 如果下次需要请求时缓存已满,则从缓存而不是网络中提取数据
  • 数据包的大小是固定的,并且总是包含相同的信息
  • 主机是对称的 - 任何主机都可以发出请求并响应请求

  • 我想生成一些简单的数学模型(和图表)来描述在对上述系统进行一些更改的情况下可用的权衡:
  • 当您改变主机缓存响应的时间时会发生什么?这可以节省多少数据?您避免了多少次网络调用? (显然取决于事件)
  • 假设响应也是多播的,并且任何听到另一个客户端请求的主机都可以缓存它听到的所有响应 - 从而避免自己潜在地发出网络请求 - 这将如何影响系统的整体状态?
  • 现在,这个变得更复杂了——每个请求-响应周期都会改变 的状态。一个 网络中的其他主机,因此事件越多,缓存失效的速度越快。我如何模拟主机数量、事件率、缓存的“脏度”(假设主机监听其他人的响应)之间的权衡以及这如何随着缓存有效期的变化而变化?不知道从哪里开始。

  • 我真的不知道我需要什么样的数学模型,或者我如何构建它。显然,只改变两个参数更容易,但特别是对于最后一个参数,我可能有四个变量要改变,我想探索。

    帮助和建议表示赞赏。

    最佳答案

    研究代币化的 Petri 网。这些似乎是一个合适的工具,因为它们:

  • 提供模型的图形表示
  • 提供大量数学分析
  • 有大量前期工作和基础分析
  • 是(相对)简单的数学模型
  • 似乎与您的问题直接相关,因为它们处理仅在指定条件下传递 token 的约束依赖网络

  • 我通过搜索“token Petri net”找到了一些引用资料(质量未评估)

    关于language-agnostic - 我如何为这种使用场景建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3690840/

    相关文章:

    math - float 学有问题吗?

    algorithm - 如何插入作为二叉树实现的二叉最大堆?

    c++ - CUDA/开放式;将分支重写为非分支表达式

    algorithm - 如何获得穿过正方形的线段的长度?

    java - 与 Java 一起使用的最佳数学库是什么?

    recursion - 快速排序和尾递归优化

    multithreading - 消息传递任意对象图?

    algorithm - 具有三个变量的数学函数(相关)

    optimization - 数据包在北大西洋上空/下穿的理论最短往返时间?

    c++ - 检测超出函数范围的未使用变量