2011-11-18 25 views
0

我正在运行使用NS-2的5000个节点及以上的模拟。无法分配字节 - NS-2中的大规模模拟

我也遇到了以下错误:

unable to alloc 32026 bytes” [许多这样的错误]和 “bus error

我用我的代码多达500个节点,它工作得很好。现在我正在模拟大型网络。有没有人遇到过这个错误?

回答

0

您的内存不足。你得到这样一个小的分配信息表明你真的真的用完内存;修复这不是微不足道的。

可能导致此问题的一种可能性是同时在同一个系统上运行太多其他程序,另一种可能性是您有内存泄漏。虽然Tcl本身对内存泄漏进行了仔细的审计,但是我不能谈论NS2,而且你的脚本本身可能会通过持续引用更长的内容而导致“泄漏”。对此进行整理是一项相当大的工作。

当然,你可以采取老式的“扔更多硬件的问题”的方法。获取Tcl和NS2的64位版本,并在具有16GB内存的系统上运行。这个选项比以前便宜很多,因为64位硬件将成为主流(终于!),但它不是免费的...

+0

这原来是硬件有限和节点数量众多的组合问题(因此,可能的内存泄漏)。 进一步的实验工作到3500节点。正如你所说,它必须是内存泄漏问题。如果可能,你是否知道有任何调试技巧来解决这个问题? 但是我们在硬件上有限。我不认为我可以使用16GB内存的系统! – learner

+0

不好意思升级内存;这是最简单的方法,因为它只涉及在问题上投入资金!泄漏狩猎要困难得多。我可能需要一段时间才能提出一套很好的建议(除了看看valgrind中是否有任何东西出现,记住Tcl在内部使用特殊的内存分配器会导致误报...) –

+0

这是真的,但我工作在大学里。因此我不可能增加服务器上的内存容量! 谢谢你的洞察力。我将使用GDB和Valgrind来追踪泄漏。 – learner