Редактирование: FreeBSD, 04 лекция (от 23 октября)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 53: Строка 53:
mmap можно делать не только для файлов, но и для просто регионов памяти.
mmap можно делать не только для файлов, но и для просто регионов памяти.
-
Современные маллоки работают на mmap, и под каждое ядро процессора делают свою арену.
+
Современные маллоки работают на mmap, и под каждое ядро процессора делают свою аренду.
-
В FreeBSD всегда был очень хороший либцшный маллок. Сейчас jemalloc. Настолько эффективный, что яндекс с трудом переходит на линукс, потому что они запускают приложение на линуксе и оно жрет в полтора раза
+
В OpenBSD всегда был очень хороший либцшный маллок. Сейчас jeamllloc. Настолько эффективный, что яндекс с трудом переходит на линукс, потому что они запускают приложение на линуксе и оно жрет в полтора раза
больше памяти.
больше памяти.
Строка 96: Строка 96:
Делаются локальные оптимизации.
Делаются локальные оптимизации.
-
Сам по себе маллок, который в файле kern_malloc.c, он очень простой и очень тонкий, всю работу за него выполняет другой слой. См блоксхему.
+
Сам по себе маллок, который в файле kernel.c, он очень простой и очень тонкий, всю работу за него выполняет другой слой. См блоксхему.
Сначала смотрим, защищена ли память мемгардами, если используем, то уходим в cпециальный модуль. Аналогично в конце можем уйти в редзон.
Сначала смотрим, защищена ли память мемгардами, если используем, то уходим в cпециальный модуль. Аналогично в конце можем уйти в редзон.
В нормальном ядре все проще -- если размер больше пейджсайз, то вызываем uma_large_malloc
В нормальном ядре все проще -- если размер больше пейджсайз, то вызываем uma_large_malloc
-
Если меньше, то ищем ближайшую степень двойки, и аллоцируем из ума_зон.
+
Если меньше, то ищем ближайшую степень двойки, и аллоцируем из тма_зон.
Чтоже такое uma?
Чтоже такое uma?
Строка 121: Строка 121:
вероятностью уже в процессорном кэше.
вероятностью уже в процессорном кэше.
-
Кэш представляет собой очень простую структуру -- два ведра -- пустое и полное. Как только одно из них заполняется или доходит до нуля, мы их меняем местами.
+
Кег представляет собой очень простуй структуру -- два ведра -- пустое и полное. Как только одно из них заполняется или доходит до нуля, мы их меняем местами.
Ведро из себя представляет: сколько максимум записей, сколько текущее количество, и вектор из указателей в глубину слаба, и обеспечивают быструю аллокацию.
Ведро из себя представляет: сколько максимум записей, сколько текущее количество, и вектор из указателей в глубину слаба, и обеспечивают быструю аллокацию.
Строка 130: Строка 130:
следующий цвет после того цвета, которые он брал последним, а если такого нет, то случайный. Если пропустили один цвет, то тоже какая-то оптимизация может получиться. (Обсуждение про то, что в современных процессорах это неактуально. См. ссылку на книжку в конце.)
следующий цвет после того цвета, которые он брал последним, а если такого нет, то случайный. Если пропустили один цвет, то тоже какая-то оптимизация может получиться. (Обсуждение про то, что в современных процессорах это неактуально. См. ссылку на книжку в конце.)
-
Есть еще аллокатор из NetBSD vmem(9)
+
Есть еще аллокатор из NetBSD vmcm(9)
Универсальный аллокатор. Ему дается ресурс, он с ним может работать. В ядре FreeBSD он используется для vm map самого ядра. Потому что у ядра линейный список entry уже неудобен.
Универсальный аллокатор. Ему дается ресурс, он с ним может работать. В ядре FreeBSD он используется для vm map самого ядра. Потому что у ядра линейный список entry уже неудобен.
Строка 136: Строка 136:
Процессы делают mmap доволно редко. Поэтому линейный список из vmmap entry вполне удовлетворителен.
Процессы делают mmap доволно редко. Поэтому линейный список из vmmap entry вполне удовлетворителен.
-
Curt Schimmel UNIX systems for modern architectures
+
Curt Schimel systems for modern architectures
-
 
+
-
{{FreeBSD}}
+
-
{{Lecture-stub}}
+

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Шаблоны, использованные на этой странице:

Личные инструменты
Разделы