Какова стоимость mmaping в Mac OS X?
У меня есть алгоритм, где моя жизнь была бы значительно упрощена, если бы я мог зарезервировать около 20 блоков адресов памяти размером 4 ГБ. На практике я никогда не использую больше 4 ГБ, но я не знаю, какой блок заполнится заранее.
Если я mmap
20 блоков по 4 ГБ, кажется, все работает нормально - пока я не запишу в память, ОС, похоже, ничего не выделяет.
Есть ли причина, по которой я не должен использовать mmap
выделить 80 ГБ памяти, а затем использовать только ее небольшой объем? Я предполагаю, что есть некоторые затраты на настройку этих буферов. Могу ли я измерить это?
1 ответ
Единственный недостаток mmap-ing 80 ГБ - это то, что необходимо создать таблицу страниц для всех 80 ГБ. Таким образом, если страницы имеют размер 4 КБ, эта таблица может занимать много памяти (если не используются огромные страницы).
Для таких размеров, вероятно, лучше использовать один или несколько скользящих mmap-редактируемых видов (т.е. создавать и удалять их при необходимости).
В Windows использование памяти для таблиц mmap / page можно проверить с помощью RamMap, но не уверен в Mac.