Какова стоимость mmaping в Mac OS X?

У меня есть алгоритм, где моя жизнь была бы значительно упрощена, если бы я мог зарезервировать около 20 блоков адресов памяти размером 4 ГБ. На практике я никогда не использую больше 4 ГБ, но я не знаю, какой блок заполнится заранее.

Если я mmap 20 блоков по 4 ГБ, кажется, все работает нормально - пока я не запишу в память, ОС, похоже, ничего не выделяет.

Есть ли причина, по которой я не должен использовать mmap выделить 80 ГБ памяти, а затем использовать только ее небольшой объем? Я предполагаю, что есть некоторые затраты на настройку этих буферов. Могу ли я измерить это?

1 ответ

Решение

Единственный недостаток mmap-ing 80 ГБ - это то, что необходимо создать таблицу страниц для всех 80 ГБ. Таким образом, если страницы имеют размер 4 КБ, эта таблица может занимать много памяти (если не используются огромные страницы).

Для таких размеров, вероятно, лучше использовать один или несколько скользящих mmap-редактируемых видов (т.е. создавать и удалять их при необходимости).

В Windows использование памяти для таблиц mmap / page можно проверить с помощью RamMap, но не уверен в Mac.

Другие вопросы по тегам