我有一个很长的模拟,我需要提高它的性能。我在日志文件中看到如下消息:“GC 期间内存不足,将尝试基于磁盘的 GC”,这需要大量模拟时间。Specman当时在做什么,我怎样才能消除它以提高运行时间?
5 回答
如上所述,Specman 正在执行基于磁盘的 GC,因为您在常规 GC 期间内存不足(这会在该过程中消耗内存)。写入磁盘很慢,这就是你的模拟很慢的原因。使用配置内存 -disable_disk_based_gc。这将激活动态 GC,这比基于磁盘的 GC 快得多,并且在过程中消耗的内存比常规 GC 更少。
Specman 正在使用磁盘空间进行垃圾收集。它速度较慢,但使用的 CPU 较少。在配置中有一个选项可以取消磁盘垃圾收集。
您的模拟缺少 Ram。Specman 尝试使用磁盘驱动器来访问更多内存。磁盘访问很慢。除了为 gc_threshold 和 optimize_process_sise 配置更好的值之外,您还可以使用动态 GC 来获得更好的性能。
您会收到这些消息,因为 specman 正在尝试进行垃圾收集,并且在此过程中内存不足,因此它切换到基于剑麻的 gc。为了提高性能,您可以增加optimal_process_size 为gc 提供更多内存,或者禁用基于磁盘的gc。在后一种情况下,specman 将使用动态 gc 更快
Specman 正在执行垃圾收集 (gc) 以释放不再使用的对象的内存。一般来说,这很好,否则你必须自己做,就像在 C/C++ 中一样。您可以使用 config memory 命令控制 GC 阈值和增量。使用较低的阈值来防止内存不足。