| |
Оптимизация таблицы страниц составляет самую содержательную часть архитектуры VM во
FreeBSD и она проявляется при появлении нагрузки при значительном использовании mmap()
. Я думаю, что это на самом деле особенность работы
большинства BSD-систем, хотя я не уверен, когда это проявилось впервые. Есть два основных
подхода к оптимизации. Первый заключается в том, что аппаратные таблицы страниц не
содержат постоянного состояния, а вместо этого могут быть сброшены в любой момент с
малыми накладными расходами. Второй подход состоит в том, что каждая активная таблица
страниц в системе имеет управляющую структуру pv_entry,
которая связана в структуру vm_page. FreeBSD может просто
просматривать эти отображения, которые существуют, когда как в Linux должны проверяться
все таблицы страниц, которые могут
содержать нужное отображение, что в некоторых ситуация дает увеличение сложности O(n^2).
Из-за того, что FreeBSD стремится выбрать наиболее подходящую к повторному использованию
или сбросу в область подкачки страницу, когда ощущается нехватка памяти, система дает
лучшую производительность при нагрузке. Однако во FreeBSD требуется тонкая настройка ядра
для соответствия ситуациям с большим совместно используемым адресным пространством,
которые могут случиться в системе, обслуживающей сервер телеконференций, потому что
структуры pv_entry могут оказаться исчерпанными.
И в Linux, и во FreeBSD требуются доработки в этой области. FreeBSD пытается максимизировать преимущества от потенциально редко применяемой модели активного отображения (к примеру, не всем процессам нужно отображать все страницы динамической библиотеки), когда как Linux пытается упростить свои алгоритмы. FreeBSD имеет здесь общее преимущество в производительности за счет использования дополнительной памяти, но FreeBSD выглядит хуже в случае, когда большой файл совместно используется сотнями процессов. Linux, с другой стороны, выглядит хуже в случае, когда много процессов частично используют одну и ту же динамическую библиотеку, а также работает неоптимально при попытке определить, может ли страница повторно использоваться, или нет.
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |