OMNET++ - 控制何时更新矢量文件

OMNET++ - Control when vector file is updated

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

我的 Omnet++ 版本:5.6.2

操作系统:Windows10

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

所以我的问题是:

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

非常感谢。

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

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

output-vectors-memory-limit = , unit=B, default: 16MiB
Per-simulation-run setting.
Total memory that can be used for buffering output vectors. Larger values produce less fragmented vector files (i.e. cause vector data to be grouped into larger chunks), and therefore allow more efficient processing later. There is also a per-vector limit, see **.vector-buffer.

我也做了测试,把值改为8MiB,结果和我预想的一样:Omnet++确实更频繁地更新了输出.vec文件。