2017-01-15 5 views
0

Может ли частый доступ к большой (1 ~ 2 ГБ) файлообменной памяти привести к снижению производительности? (в замкнутом цикле, скажем, в петле обновления игры)Частое доступ к файловой памяти

Насколько я могу Google, файлы с отображением памяти кэшируются ОС (с использованием ошибки страницы), и, похоже, безопасно получать доступ с момента его загрузки по памяти.

Однако, я также понял, что, поскольку это кэшируются, не загружены, это может вызвать падение производительности.

Пожалуйста, помогите мне получить правильный ответ, и будет оценено любезное описание. И я хотел бы знать ответы для Linux и Windows, если это возможно, но я сомневаюсь, что они будут вести , что разные.

Примечание: Когда я сказал «доступ», я читаю и пишу.

+0

Сколько памяти? 1 МБ? 1 ГБ? –

+0

@John Zwinck Спасибо за то, что я пропустил. Я отредактировал вопрос. – minary

ответ

1

Вы спрашиваете о повторном доступе к файлу с отображением памяти на 1-2 ГБ. Короткий ответ: да, у него будет снижение производительности, особенно если ваши страницы невелики.

Первой проблемой является то, что при повторном доступе к 1 ГБ любой памяти (по умолчанию) будут вытесняться любые другие данные, которые у вас есть, и пострадает процент попаданий в кэш-память ЦП. Подумайте, что типичный размер кэша данных процессора составляет всего несколько мегабайт.

Вторая проблема заключается в переводе буфера Lookaside. Если вы используете размер страницы по умолчанию 4 КБ, то 1 ГБ составляет 250 тыс. Страниц. В Linux вы должны включить «огромные страницы», чтобы уменьшить нагрузку TLB, наложенную путем доступа к такой большой области памяти.

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

-1

Это в значительной степени зависит от системы. Одно из соображений заключается в том, может ли ОС непосредственно отображать память на диск или требуется ли какой-либо промежуточный перевод. Некоторые комбинации OS/File System позволяют обрабатывать отображаемый файл в точности как файл страницы (обеспечивая хорошую производительность и самый быстрый способ чтения большого файла, особенно когда он смежн на диске). Другие нет.

Сомневаюсь, что они будут вести себя иначе.

Они на самом деле совсем другие. Windows использует жесткую файловую систему, которая поддерживает смежные файлы. Классический Unix не имеет понятия непрерывных файлов

Смежные вопросы