Я читал, что чипы Intel поддерживают размеры страниц виртуальной памяти до 1 ГБ. Используя VirtualAlloc с MEM_LARGE_PAGES, вы получите 2MB-страницы. Есть ли способ получить другой размер страницы? В настоящее время мы используем Server 2008 R2, но планируем перейти на сервер 2012.Поддержка больших страниц Windows, отличных от 2 МБ?
ответ
Не похоже, что Large Page Support docs не предоставляет механизма для определения размера больших страниц. Вам просто нужно сделать выделение с размером (и выравниванием, если явно запрошено), которые являются multiples of the minimum large page size.
Я полагаю, что теоретически возможно, что Windows может реализовать множество больших размеров страниц внутри (функция API только сообщает минимальный размер), но они не раскрывают ее на уровне API. На практике я ожидаю уменьшения прибыли для больших и больших страниц; накладные расходы на пропуски кэша TLB просто не будут иметь большого значения, если вы уже уменьшаете использование TLB на несколько порядков.
Нет, Windows не может реализовать это. Это реализовано в аппаратном обеспечении ЦП: https://en.wikipedia.org/wiki/Page_(computer_memory)#Huge_pages – Soonts
@ Сунты: эта ссылка дает понять, что некоторые чипы поддерживают несколько размеров страниц за пределами одного значения по умолчанию. Я не говорил, что Windows может определять произвольные большие размеры страниц исключительно в программном обеспечении, я говорил, что они могут выбирать из вариантов, доступных с аппаратного обеспечения; извините, если это неясно. – ShadowRanger
Обратите внимание, что большинство фишек на этой таблице не запускают Windows. Только чипы x86 и x86-64. На этих чипах просто нет вариантов выбора, вы либо получаете 4 МБ страниц в 32-битном режиме без PAE, либо на страницах 2 МБ. – Soonts
Размер большой страницы определяется процессором. На x86 с включенной PAE большая страница - 2 МБ. См. Таблицу 4-2 в Системной архитектуре Intel (том 3A). –
Можно ли указать окнам использовать определенный размер? – johnnycrash
Как я уже отмечал в предыдущем комментарии: Windows не контролирует размер. Процессор управляет размером. –