Невозможно выделить байты - крупномасштабное моделирование в NS-2 - PullRequest
0 голосов
/ 18 ноября 2011

Я запускаю симуляции с использованием NS-2 для 5000 узлов и выше.

Я обнаружил следующие ошибки:

'unable to alloc 32026 bytes' [много таких ошибок] и 'bus error

Я использовал свой код для 500 узлов, и он работал нормально. Сейчас я моделирую для больших сетей. Кто-нибудь сталкивался с этой ошибкой раньше?

1 Ответ

0 голосов
/ 18 ноября 2011

Вам не хватает памяти. То, что вы получаете это сообщение с таким небольшим выделением, означает, что у вас действительно недостаточно памяти; исправить это не тривиально.

Одной из причин, которая может быть причиной этого, является одновременное выполнение слишком большого количества других программ в одной и той же системе, а другая возможность - утечка памяти. Хотя сам Tcl тщательно проверяется на предмет утечек памяти, но я не могу говорить о NS2, и ваши сценарии могут сами вызывать «утечку», удерживая ссылки на вещи дольше, чем следовало бы. Разобраться в этом - значительный объем работы.

Конечно, вы могли бы пойти по старому доброму подходу «брось больше оборудования на проблему». Получите 64-битную сборку Tcl и NS2 и запустите ее в системе, скажем, с 16 ГБ памяти. Эта опция намного дешевле, чем раньше, поскольку 64-разрядное оборудование становится массовым (наконец-то!), Но оно не бесплатное ...

...