【问题标题】:OMNET++ - Control when vector file is updatedOMNET++ - 控制矢量文件何时更新
【发布时间】:2021-07-12 21:32:31
【问题描述】:

我想先解释一下我在模拟期间编写 .vec 文件时的 Omnet++ 行为。

我的 Omnet++ 版本:5.6.2

操作系统:Windows 10

当我开始在 express 模式下为我的网络运行模拟片刻时,我注意到 .vec 和 .vci 文件已创建,但只有标题。那么 .vec 文件的大小和内容在仿真继续运行时没有任何变化。只有当我在 Omnet++ 文件资源管理器中双击 .vec 文件并打开 Omnet 分析时,才会将矢量数据写入 .vec 文件。从那一刻起,我只能在关闭时看到更新的 .vec 文件内容和大小,删除创建的 .anf 文件并双击再次打开 .vec 文件。

所以我的问题是:

  1. 我不确定这是 omnet++ 在模拟期间更新 .vec 文件时的默认行为,还是我的配置有什么不同?
  2. 如果这是预期的行为,有什么方法可以改变它(即,我想要的是 .vec 文件内容自动保持最新,而无需我再次关闭、删除并重新打开 anf 文件并再次)?

非常感谢。

【问题讨论】:

    标签: simulation omnet++


    【解决方案1】:

    .vec 文件的内容不取决于您在 IDE 中执行的操作。仿真运行时不断写入 .vec 文件。更准确地说,它将数据写入内存缓冲区,一旦它满了,它就会将所有数据转储到文件中。每当您尝试使用该 .vec 文件时,IDE 都会及时获得该文件的当前状态。简而言之,IDE 不准备不断地重新读取和重新评估所有输出文件的内容。它的目的是在模拟结束时分析结果。

    【讨论】:

      【解决方案2】:

      根据 Rudi 关于控制在写入 .vec 文件之前要保存的最大数据量的内存缓冲区的回答,我在 Omnet++ 的手册中进行了后续搜索,并找到了控制该内存大小的确切配置参数来自Apdendix H 的缓冲区。这是 .ini 文件中的以下每次模拟运行设置:

      output-vectors-memory-limit = ,单位=B,默认值:16MiB
      每次模拟运行设置
      可用于缓冲输出向量的总内存。较大的值会产生较少的碎片矢量文件(即导致矢量数据被分组为较大的块),因此允许以后进行更有效的处理。每个向量也有限制,请参阅 **.vector-buffer。

      我也做了一个测试,将值更改为 8MiB,结果符合我的预期:Omnet++ 确实更频繁地更新了输出 .vec 文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多