Прочие способы оптимизации
В системе FreeBSD имеется порядка 150 параметров sysctl, которые имеют отношение к сетевой подсистеме. В ваших руках есть все необходимые инструменты, которые позволят оптимизировать систему до такой степени, что она вообще не будет пропускать трафик. Будьте крайне осторожны, экспериментируя с оптимизацией сетевой подсистемы. Многие параметры позволяют избавиться только от одного набора проблем, тут же принося другие. Некоторые производители программного обеспечения (например, Samba) рекомендуют вносить изменения в отдельные параметры настройки сети. Будьте осторожны с ними, прежде чем принять их как новые значения по умолчанию, обязательно проверяйте на появление побочных эффектов в других программах. TCP/IP очень, очень сложный протокол, и настройки по умолчанию, принятые в системе FreeBSD, отражают многолетний опыт тестирования и страданий системных администраторов.
Модель разработки FreeBSD
Существует около 4000 разработчиков, которые работают на добровольной основе. Все они могут читать дерево репозитория. Но не могут вносить изменения. Вместо этого разработчик обращается к коммитеру, который имеет право вносить изменение в код. Существует около 400 коммитеров. Разработчик может вырасти по социальной лестнице проекта и стать коммитером, а затем членом основной команды. Нового коммитера избирают другие коммитеры. Основная команда является ядром проекта и состоит из 9 человек, которые выбираются на 2 года. Основная команда решает конфликты между коммитерами.
Участники проекта разрабатывают две ветки «CURRENT» и «STABLE».
Новый код для тестирования помещают в ветку CURRENT(нестабильная, тестовая). Новые функции, добавленные в CURRENT, могут остаться в системе или от них могут отказаться, если реализация окажется неудачной. Иногда эта версия может оказаться в непригодном для использования состоянии.
STABLE (стабильная или производственная) версия содержит только те нововведения, которые прошли проверку в CURRENT. Тем не менее, эта версия тоже предназначена, в основном, для разработчиков. Не рекомендуется обновлять ответственные рабочие серверы до STABLE, предварительно её не протестировав. На основе STABLE регулярно создаются тщательно протестированные разработчиками RELEASE версии.
2012
Hyper-V поддерживает FreeBSD
14 мая 2012 года на конференции BSDCan 2012 компания Microsoft вместе со своими партнерами компаниями NetApp и Citrix объявила о том, что операционная система FreeBSD будет поддерживаться гипервизором Hyper-V. Соответствующие драйверы, которые позволят операционной системе эффективно работать в виртуальной среде Windows Server 2008 R2 Hyper-V, включая исходные коды под лицензией BSD, станут доступны в начале лета 2012 г. для FreeBSD версий 8.2 и 8.3.
Разработка драйвера VMBUS, который связывает гостевую операционную систему с гипервизором Windows Server Hyper-V, проводилась Microsoft совместно с Insight Global. В дальнейшем планируется, что этот драйвер станет частью FreeBSD.
FreeBSD 9
Среди улучшений следует отметить сразу две графические среды, которые предлагаются пользователям на выбор. В последнее время Linux часто критикуют за недостатки графической среды, которые присущи как GNOME 3, так и Ubuntu Unity.
Разработчики FreeBSD 9.0 решили обойти это препятствие, предложив пользователям самим выбрать между дружественной и привычной средой GNOME 2.32 и приятным с эстетической точки зрения интерфейсом KDE 4.7.
Среди других существенных расширений FreeBSD 9.0 следует отметить новый инсталлятор, совместимость с процессорами PowerPC, которые используются в игровых приставках Sony PlayStation 3, множество обновленных драйверов, а также поддержку USB 3.0 и High Performance SSH.
Версия FreeBSD 9.0, выпуск которой ее разработчики посвятили памяти пионера компьютерной отрасли, создателя Unix и языка программирования Си Денниса Ритчи, работает в настоящее время на архитектурах AMD64, i386, ia64, PowerPC, PowerPC64 и SPARC64. Все необходимые ссылки и инструкции по установке находятся на официальном сайте FreeBSD.
Как обновиться до финальной версии с беты
Если до этого вы устанавливали публичные тестовые версии или сборки для разработчиков, апдейт до финальной версии пройдет, как обычное обновление.
Нужно обновляться по следующему алгоритму:
1. Перейдите в Системные настройки – Обновление ПО.
2. Нажмите кнопку Подробнее и в диалоговом окне выберите пункт Настройки по умолчанию.
Так вы отключитесь от подписки на тестовые версии системы и Mac будет обновляться только до финальных общедоступных релизов.
3. Введите пароль администратора для подтверждения действия.
4. Дождитесь проверки наличия обновлений и нажмите кнопку Обновить сейчас.
Процедура обновления при таком способе установки не займет много времени. Последние тестовые версии системы имеют минимальные отличия от финального релиза. Чаще всего меняется лишь номер сборки и некоторые системные файлы.
Как произвести чистую установку macOS Big Sur
Такой способ установки подойдет, если решили почистить Mac перед продажей, просто хотите сделать хорошую чистку компьютера для профилактики или банально не хватает места для установки, а копаться в файловой помойке не хочется.
Необходимые для установки данные будут загружены из интернета, позаботьтесь о стабильном подключении.
1. Выключите Mac и запустите его с зажатыми клавишами Command + Option (Alt) + R для загрузки из раздела восстановления.
Если зажать Command + R произойдет загрузка с возможностью восстановления на текущую установленную версию, а при использовании сочетания Command + Option + R происходит загрузка с возможностью апгрейда до последней доступной версии системы.
3. После загрузки оболочки выберите Дисковую утилиту.
4. Можете полностью отформатировать диск или удалить только системный раздел, оставив раздел с данными без изменений.
5. Вернитесь в главное меню и выберите пункт Переустановить macOS.
6. Следуйте подсказкам мастера установки для чистой установки системы и первоначальной настройки Mac.
Опрос
Механизм опроса берет проверенную временем идею прерываний и IRQ и выкидывает ее из окна, заменяя регулярными проверками сетевой активности
В классической модели, управляемой прерываниями, всякий раз, когда пакет поступает в сетевую карту, она требует от центрального процессора уделить ей внимание, генерируя прерывание. Процессор прекращает обычную последовательность операций и приступает к обработке этих данных
Это очень хорошо и даже желательно при условии, что карта не занимается обработкой трафика большого объема. Но как только система начинает иметь дело с огромными объемами данных, сетевая карта начинает генерировать прерывания непрерывно. Более эффективный способ заключается в том, чтобы ядро извлекало данные из сетевой карты через регулярные интервалы времени. Такая регулярная проверка называется опросом (polling). Вообще говоря, использовать механизм опроса полезно только в случае объемного трафика.
К моменту написания этих строк механизм опроса невозможно собрать в виде модуля ядра, так как он требует изменений в драйверах устройств. Также следует иметь в виду, что не все сетевые карты обладают поддержкой механизма опроса, поэтому обязательно ознакомьтесь с полным списком, который приводится в странице руководства polling(4). Чтобы активировать механизм опроса, следует добавить параметр в конфигурацию ядра. После перезагрузки системы разрешить использование механизма опроса отдельно для каждого из устройств можно с помощью команды ifconfig(8).
# ifconfig re0 polling
Точно так же, с помощью аргумента , можно запретить использование этого механизма. Кроме того, команда ifconfig(8) показывает, был ли активирован механизм опроса для интерфейса.
Так как активация и деактивация механизма опроса возможны прямо в процессе работы системы, попробуйте активировать его в часы высокой нагрузки и проверить, не приведет ли это к повышению производительности.
2020: Новый кодекс поведения разработчиков
9 июня 2020 года проект FreeBSD объявил о введении нового кодекса поведения (Code of Conduct). В его основу лёг кодекс.
Прежний кодекс назывался Geek Feminism, в нём большой акцент делался на проблемах половой идентичности, гендерной дискриминации и т.п. Среди разработчиков FreeBSD были проведён опрос (итоги опубликованы в июне 2020 года), в рамках которого 35% респондентов проголосовали против Geek Feminism, 30% — «за», а 34% опрошенных воздержались. Тогда разработчикам предложили выбрать один из следующих кодексов:
Проект FreeBSD принял новый кодекс поведения разработчиков
- Geek Feminism.
- Производный от кодекса LLVM.
- Производный от кодекса сообщества Golang.
Лишь 4% проголосовали за старый кодекс. 33% выбрали Go Golang, а 63% — LLVM. Таким образом, большинство участников опроса выбрали вариант от проекта LLVM, в котором приветствуются:
- дружелюбие и терпимость;
- доброжелательность;
- внимательность;
- уважительное отношение;
- аккуратность в высказываниях;
- желание вникнуть в детали происходящего.
В новом кодексе поведения разработчиков сообщается, что FreeBSD стремится стать сообществом, которое приветствует и поддерживает людей любой расы, пола, культуры, национального происхождения, цвета кожи, социального статуса, сексуальной ориентации, возраста, роста семейного положения, политических убеждений, религии или физических способностей.
Кодекс LLVM считается достаточно конкретным, в нем нет «воды» и лишних рассуждений. Производный от кодекса сообщества Golang почти в два раза длиннее по сравнению с LLVM и чуть хуже структурирован.
Результаты предыдущего опроса разработчиков были следующими: 94% разработчиков считали важным поддержание уважительной манеры общения, 89% считали, что FreeBSD должен приветствовать участие в проекте людей любого мировоззрения (2% против), 74% считали необходимым удалять из сообщества токсичных людей.
2009: FreeBSD 8.0
По состоянию на 26 ноября 2009 года текущий релиз FreeBSD имеет номер 8.0.
После выпуска релизов создаются дополнительные ветви разработки для их поддержки, но в них вносятся лишь самые необходимые изменения, исправляющие серьёзные ошибки или проблемы с безопасностью системы. До четвёртой версии FreeBSD у стабильной и текущей веток был один и тот же старший номер версии. Затем текущей ветви был присвоен номер 5, а у стабильной остался номер 4. В настоящее время стабильная версия имеет номер 8, а текущая — 9. Существует также ветвь 7-STABLE для поддержки тех пользователей, которые ещё не обновили FreeBSD до версии 8.
FreeBSD 5 включает несколько новых функций, в том числе относящихся к безопасности. С целью повысить безопасность FreeBSD был сформирован проект TrustedBSD, в рамках которого были разработаны, в том числе: расширяемая система принудительного контроля доступа MAC, списки доступа ACL для файловых систем и новая файловая система UFS2. Некоторые функции TrustedBSD были интегрированы также в операционные системы NetBSD и OpenBSD. FreeBSD 5 также поддерживает шифрование файловых систем посредством системы GBDE (Geom Based Disk Encryption), которую написал Пол-Хеннинг Камп, один из ведущих разработчиков. Другие важные возможности FreeBSD 5 относятся к внутриядерным блокировкам для улучшения производительности на многопроцессорных SMP-системах и многопоточности, реализованной системой KSE, которая являлась поточной библиотекой по умолчанию начиная с версии 5.3. Позже libkse в этом качестве была заменена на libpthread, однако до сих пор поддерживается в -STABLE.
8.0-RELEASE внёс несколько существенных новшеств: виртуализация сетевого стека (vimage), позволяющая использования нескольких сетевых стеков, поддержка работы в гостевом домене Xen (domU), переработанный USB стэк, ZFS версии 13, RPCSEC_GSS аутентификация для NFS, поддержка NAT-traversal (RFC 3948) в IPSEC, включенная по умолчанию система защиты от переполнения стека ProPolice SSP, улучшенный код для изолированных окружений (Jail2), поддержка равновесной маршрутизации (RFC 2992),
2010: FreeBSD 8.1
Сообщество разработчиков FreeBSD объявило в августе 2010 года о выпуске версии 8.1 одноименной операционной системы на основе ядра Linux. Среди ключевых изменений нового продукта разработчики называют улучшенную поддержку оборудования и проведенную модернизацию программных составляющих системы. В FreeBSD 8.1 расширена и обновлена база драйверов, оптимизирован код платформы, исправлены обнаруженные ранее недочеты
Большое внимание при разработке новой версии FreeBSD было уделено средствам беспроводной связи Wi-Fi, сетевым компонентам, инструментам виртуализации и оптимизации платформы под современные многоядерные процессоры
В числе прочих новшеств FreeBSD 8.1 фигурируют рабочие среды GNOME 2.30.1 и KDE 4.4.5, обновленный инструментарий OpenSSH для организации защищенных сетевых соединений, почтовый сервер Sendmail 8.14.4, поддержка архитектур UltraSPARC IV/IV+, SPARC64 V и прочие нововведения. Немало внимания уделялось вопросам безопасности и надежности продукта.
Новая версия платформы рекомендована разработчиками для промышленного внедрения; пользователи предыдущих редакций FreeBSD могут обновить ОС посредством утилиты freebsd-update и поясняющих инструкций, опубликованных на странице официального сайта продукта.
Память
При принятии решения, какой объем памяти выделить для нужд сетевой подсистемы, FreeBSD исходит из общего объема физической памяти. Память, выделяемая для mbufs, не может использоваться для каких-либо других целей, поэтому выделение гигабайтов памяти под mbufs может негативно сказаться на общей производительности системы. Не следует корректировать число mbufs, если команда явно не укажет на нехватку пространства под mbufs. Если сетевой подсистеме не хватает памяти, самый действенный способ ликвидировать эту проблему заключается в увеличении общего объема памяти компьютера. Это вынудит FreeBSD пересчитать объем для mbufs во время загрузки и тем самым решит проблему. В противном случае вы лишь переместите проблему в другую часть системы или в другое приложение. Можно было бы выделить больше памяти для сетевой подсистемы и посадить на голодный паек сервер базы данных. Если вы уверены в своих действиях, то можно предпринять следующее.
Распределением памяти для mbufs управляют два параметра sysctl — и . Первый из них, , является настройкой, выполняемой на этапе загрузки. Система автоматически определяет соответствующее значение во время загрузки, исходя из аппаратной конфигурации. Корректировка этого значения — пожалуй, лучший способ масштабировать систему в целом. В старых версиях FreeBSD значение отвечало за предварительное выделение памяти для сетевой подсистемы, вследствие чего она становилась недоступной для решения других задач, поэтому чрезмерное увеличение значения могло приводить к ужасным последствиям для других частей системы. В современных версиях FreeBSD предварительное распределение памяти для сетевой подсистемы не производится, а данное значение обозначает лишь верхний предел, до которого может расти объем памяти сетевой подсистемы. Если значение слишком мало, в файле протокола /var/log/messages начнут появляться предупреждения (глава 19).
Числом mbufs, выделяемых системой, управляет параметр . Хотя этот параметр и допускает настройку во время работы системы, тем не менее лучше устанавливать его на ранних этапах загрузки, добавив запись в файл /etc/sysctl.conf (глава 5). Это позволит отобрать память у других задач и передать ее сетевой подсистеме или наоборот. Если это значение выбрать слишком большим, это может привести к нехватке памяти для других задач и даже к аварийному завершению системы.
# sysctl kern.ipc.nmbclusters
Память для mbufs выделяется блоками, которые называются nmbclusters (иногда mbuf clusters). Хотя размер одного блока mbuf может варьироваться, размер одного кластера остается постоянным и составляет порядка 2 Кбайт. С помощью несложных вычислений можно выяснить, сколько памяти выделяется для текущего количества nmbclusters, а затем рассчитать приемлемые значения для системы и приложений. В данном примере имеется 25600 nmbclusters, то есть ядро зарезервировало для нужд сетевой подсистемы порядка 50 Мбайт памяти. Это не так много, учитывая, что речь идет о ноутбуке с объемом памяти 1 Гбайт, но это слишком много для какого-нибудь антикварного Pentium.
Чтобы найти наиболее подходящее количество кластеров mbuf, нужно запустить , когда сервер испытывает серьезную нагрузку. Во второй строке результатов вы получите число mbuf, находящихся в использовании, и общее их число. Если в периоды пиковой нагрузки сервер не использует полный объем доступных кластеров mbuf, следовательно, вы идете по ложному пути — прекратите эксперименты с mbufs и замените, наконец, аппаратные устройства.* Например:
В настоящий момент система использует 32 кластера (1), и в кэш были помещены 372 кластера (2), использовавшиеся ранее. При количестве кластеров, равном 404 (3), и общем объеме выделенной памяти 25600 кластеров (4) мы получаем, что используется всего 1,5 процента. Если это реальная нагрузка на систему, то имеет смысл уменьшить число nmbclusters. Однако есть вероятность, что ваш компьютер вообще имеет низкую нагрузку, тогда любая оптимизация не имеет смысла.
Мое личное эмпирическое правил гласит: сервер должен иметь такое количество mbufs, чтобы оно в два раза превосходило потребность при высокой нагрузке. Если сервер потребляет 25 000 кластеров в часы пик, значит общее число кластеров должно составлять 50 000, чтобы иметь возможность противостоять пиковым нагрузкам.
Максимальное число входящих соединений
Ядро FreeBSD обеспечивает пропускную способность, необходимую для обработки определенного числа новых входящих ТСР-соединений. Это ограничение не касается уже установленных и обрабатываемых подключений, оно относится к числу новых соединений, которые пытаются установить одновременно. Например, в это число не попадают веб-страницы, которые к настоящему моменту уже были отправлены клиентам, — сюда относятся входящие запросы, которые еще даже не достигли веб-сервера.
Параметр определяет максимальное число одновременных попыток установить соединение, которые будут обслужены системой. По умолчанию оно равно 128, что может оказаться недостаточным для веб-сервера, работающего под высокой нагрузкой. Если вы занимаетесь сопровождением высокопроизводительного сервера, который, как ожидается, будет получать более 128 новых запросов одновременно, скорее всего, вам потребуется увеличить этот параметр sysctl. Если от пользователей начинают поступать жалобы, что они не могут подключиться к серверу, причина может крыться в значении этого параметра. Конечно, очень немногие приложения способны принимать такое количество новых подключений, поэтому, прежде чем изменять этот параметр, вам, возможно, следует настроить само приложение.