The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Во FreeBSD-CURRENT доступна последняя версия файловой систем..."
Отправлено zuborg, 29-Июл-08 10:12 
Обьясняю на пальцах:
После того как из файла прочитано 4К даных - они остаются в памяти (нету ни юзерленда ни кмема - просто в одной физической странице памяти на машине). VM-система знает к какому файлу (vm-обьекту, если быть точным) относится даная страница, и пока она активно используется - эта страница в памяти и остается. Если несколько процессов делают mmap() в одно и то же место одного файла - они пользуются одной! и той же физической страницей памяти на машине. Если несколько процессов загружены из одного исполняемого файла - они тоже пользуются общими страницами памяти. Есть ещё и анонимные страницы - они привязаны не к файлам, а только к процессам (в т.ч. могут принадлежать только ядру). Они не могут быть просто так освобождены, пока жив процесс, а только высвоплены.
Когда процесс читает данные из файла через read() - система копирует (вернее мапит, копирование происходит при записи - copy-on-write) в юзерленд данные из страниц vm-обьекта файла. Если нужная страница даного vm-обьекта уже в памяти - хорошо, если нет - надо читать с диска.

VM-система активно взаимодействует с FS. В принципе - почти все vm-обьекты - это есть файлы на диске, разбитые по 4К и замапленые на физические страницы памяти. Активные страницы не освобождаются, а неактивные - освобождаются или высвапливаются чтоб можно было освободить для более эффективного использования. Так работает кеширование во многих ОС.

Для ZFS не была реализовано взаимодействие с VM. ZFS имеет собственный маленький кеш, ограниченный обьемом kmem, с которого копируются данные в юзерленд при чтении.

Для людей, которые неспособны учить матчасть, а способны только кричать, что ZFS не для бюджетного железа, могу предложить провести следующий експеримент:
взять файл обьемом 0.5 RAM и запустить
time md5 filename
time md5 filename

Для UFS
первый раз time покажет сколько времени пошло на то чтоб прочитать файл с диска
второй раз (файл будет закеширован) - чтоб сделать md5 (я про real time, а не user или sys)

Для ZFS каждый раз файл придется читать из диска - он не будет закеширован.

И если поставить на небюджетный сервер 64Г памяти - то толку от ZFS будет ещё меньше - память будет простаивать.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру