DragonFly BSD - это операционная система BSD с открытым исходным кодом, предназначенная для логического продолжения серии ОС FreeBSD-4.x. Он очень похож на другие дистрибутивы на основе BSD, такие как FreeBSD, NetBSD или OpenBSD. Это, конечно, вилка на пути, дающая базе BSD возможность расти в совершенно новом направлении от того, что было сделано в серии FreeBSD-5. Кроме того, он включает в себя уникальный набор функций, которые отличает его от других подобных ОС.
HAMMER - главная достопримечательность
HAMMER - главная достопримечательность DragonFly, главная современная высокопроизводительная файловая система с историческими функциями доступа и встроенным зеркалированием. Ядро также является одной из причин, по которым DragonFly является лучшим дистрибутивом BSD.
Предлагает два разных планировщика для ядра
В ядро DragonFly & s входит два разных планировщика, в которых расписаны все исполняемые объекты (Light Kernel Thread) и еще один, который выбирает один поток пользователей за раз для каждого процессора и абстрагирует пользовательские потоки (User Thread Scheduler). Кроме того, в ядре используется сложный распределитель памяти ядра, состоящий из объектно-ориентированного распределителя памяти и базового ядра malloc, называемого kmalloc (), файловой системы устройства DragonFly (DEVFS), виртуального ядра (VKERNEL), асинхронизации NFS V3 RPC и дискового планировщика ввода-вывода (dsched).
Особенности, множество функций
Среди других интересных функций можно отметить NULL-файловый уровень (NULLFS), который поддерживает произвольные точки монтирования без петли, TMPFS (временная файловая система VFS), прозрачное шифрование диска, поддержка SSD (Solid Storage Device), вариант (контекст -чувствительные) символические ссылки, DNTPD (Демон сетевого времени DragonFly) и DMA (агент почты DragonFly). Кроме того, пользователи смогут в любое время проверять или приостанавливать процессы на диск. В дистрибутиве имеются мощные драйверы AHCI, стабильные имена устройств, а также хорошо заземленное шифрование и управление томами.
Нижняя линия
В целом, DragonFly оказывается современной, удобной и доступной UNIX-подобной операционной системой. Он может использоваться ежедневно как настольная система или как мощный сервер BSD.
Что нового в этой версии:
- Версия DragonFly 5.2.1 была выпущена с устранением Meltdown / Spectre, многие улучшения в HAMMER2, ipfw и ускоренном видео, а также (в исправлении 5.2.1) для CVE-2018-8897.
Что нового в версии:
- Кристиан Грейслер (1):
- telnetd: распечатать информацию о системе (ОС и архитектуре) перед началом запроса.
- Мэтью Диллон (7):
- hammer2 - Исправить деление на 0 гонку.
- Ядро - выборочный MFC ядра umtx работает от master
- - обновить документацию umtx
- libc и pthreads - Исправлены ошибки atfork с помощью nmalloc, update dmalloc
- hammer2 - Исправить переименование гонки
- hammer2 - оптимизировать hammer2_pfs_memory_wakeup ()
- hammer2 - исправить неопределенные грязные цепи из-за переименования
- Саша Вильднер (5):
- hammer2.8: Исправить опечатку.
- Скажите «hammer2» вместо «молота» в разных местах.
- mtree: исправить владельца для нескольких каталогов в / usr / share.
- libc / nls: используйте текущий язык (заданный по потоку).
- libarchive: Отменить фиксацию, которая не должна была быть нажата.
Что нового в версии 4.8.1:
- Ядро: литий>
- Код кэша кода Refactor для удаления динамических резервирования KVA. Вместо этого все KVA зарезервированы во время загрузки. Экономит нас от ненужных IPI и позволяет значительно упростить код кэша буфера.
- Добавить vfs.repurpose_enable (в тесте, отключено по умолчанию). Эта функция позволяет значительно снизить нагрузку на управление IPI и VM на машине, которая делает огромные объемы ввода-вывода файлов, например, с SSD NVMe, минуя обычный механизм рециркуляции страниц VM. При включении эта функция срабатывает только при высоких нагрузках ввода-вывода. Он работает, перепрофилируя страницы VM, лежащие в основе буфера на месте (когда это возможно), чтобы не создавать kremove / kenter страницы в KVA буфера. Обычная перезагрузка страницы VM (которая в противном случае была бы перегружена нагрузкой ввода-вывода) также обходится.
- Измените способ обработки IPIQ, в частности создайте независимый вектор векторного механизма для недопустимых страниц, который игнорирует (будет работать), даже если критический раздел удерживается. Внедрите machdep.optimized_invltlb (отключено по умолчанию, в рамках теста), что позволяет избежать отправки IPI недействительных IPL на idle cpus.
- Исправьте многочисленные гонки, которые могут возникать при экстремальных нагрузках. Большинство случаев использования никогда не запускают их, но наши сборные коробки делали время от времени. Например, была гонка двух команд, в которой бит cpu для pmap был бы очищен (для двух инструкций) и вызывать IPI TLB, возникающий одновременно с другим процессором для одного и того же pmap, чтобы не понимать, что cpu использует pmap , Исправление состоит в том, чтобы отключить оптимизацию перезагрузки CR3 для корпуса коммутатора LWP- & gt; LWP (тот же самый proc).
- Исправьте ошибку HAMMER, которая может привести к ошибке сообщения DATA CRC.
- Исправить двойную запись, вызванную тем, как HAMMER использует cluster_write (). Это значительно улучшает производительность записи HAMMER.
- Также вошло множество других исправлений и исправлений HAMMER.
- Исправить жесткую блокировку, которая может возникнуть в getpbuf * () из-за неправильной интерпретации возвращаемого значения атомарного op.
- Исправить прерывание стекирования, которое может появиться в окне с 10 командами, потенциально (но не найденное в дикой природе), запускающее стек ядра.
- Отключить IP-адреса, связанные с pmap, пополам для определенных операций кеш-кеша, не беспокоясь о недействительности TLB, а на флип-стороне всегда отменяет TLB при вводе нового PTE, даже если предыдущее содержимое было недействительным. Это улучшает производительность, а также облегчает отладку путем устранения проблемной оптимизации.
- Исправить ряд трудных для запуска SMP-гонок, в частности, связанных с одновременным увеличением количества точек монтирования, которые может вызвать сборка. Также исправьте гонку mountctl vs umount.
- Уменьшите количество атомных op в пути коммутатора.
- Исправьте гонку / панику намекачей, которая может произойти при экстремальных нагрузках в сочетании с большим количеством действий mount / umount.
- Ограничьте% rip-выборку до корня.
- Исправить проблему getpid () в vfork () при поточной передаче. В частности, одновременный vfork () s в потоковой программе может привести к тому, что неверный PID будет возвращен getpid () в дочернем элементе до exec.
- Исправить редкую гонку tsleep / callout, когда таймер выноса срабатывает до завершения полной настройки tsleep ().
- Сообщения об остановке namecache на консоли. В частности, сообщите о правильном прошедшем времени и td_comm задействованного потока.
- Дальнейшее сокращение тестирования памяти и обнуления начальной загрузки для улучшения времени загрузки в системах с большим количеством оперативной памяти.
- Полностью удалите код обхода страницы. Обнуление страницы по современному процессору по требованию лучше по многим причинам, и на самом деле может быть быстрее в сочетании с доступом пользователей к данным на странице из-за эффектов кеша. Удалите PG_ZERO, потому что он больше не нужен. Удаление PG_ZERO также делает ядро более отлаживаемым, удалив еще один возможный источник перекрестного загрязнения.
- Рефакторинг и завершение реализации локализации ЦП для распределения памяти ядра. Объединитесь с осознанием NUMA. Это работает для cpu-локализованных или недолговечных структур данных ядра. Эти два объединены вместе в нашей абстракции PQ_L2_SIZE, которая раньше использовалась в качестве кода окраски страницы VM. Этот код теперь также обрабатывает локализацию ЦП и понимание NUMA.
- Исправить многие проблемы vkernel и значительно улучшить производительность vkernel.
- Обновить файл kern.proc.pathname, sysctl, используемый программами для поиска пути к запущенной программе. Этот sysctl был первоначально реализован до того, как мы сохранили достаточные данные, чтобы вернуть полный правильный путь.
- Синхронизация ACPICA от Intel (это обычное явление).
- Исправьте сборку memcpy () ABI. Сборка не возвращала исходный (dst) аргумент. Не исправляет никаких известных проблем, но закрывает отверстие, когда GCC иногда решает позвонить memcpy при генерации кода.
- Многие из них обязуются очистить предупреждения -O2 и ошибки. Ядро теперь скомпилировано -O2 по умолчанию.
- Добавить обходной путь для неправильного выхода в ACPI-пути (например, багги-код ACPI).
- Исправьте гонку STOP / CONT, которая может быть вызвана ожидающим сигналом в самое неподходящее время.
- Резьбовые исправления coredump и исправляют блокировку, связанную с тем же, когда одновременно выполняются несколько потоков одного и того же процесса seg-fault.
- Исправьте тупик CAM / VM, который может произойти из-за ошибки в uiomove_nofault (). Это может вызвать «неопределенный буфер ожидания» во время интенсивного подкачки / подкачки.
- Добавить код для обнаружения и устранения потерянных IPI. Это прежде всего для vkernels, где некоторые виртуальные хосты могут потерять IPI. Реальные процессоры не должны потерять IPI.
- Различные исправления для clock_gettime ().
- Удалите остатки MPLOCK. Все критические пути уже давно лишены этой блокировки, но по-прежнему остается несколько некритических мест, которые используют его.
- Исправьте код убийства с низкой памятью и исправьте ряд рас, которые могут помешать работе функции.
- Исправить системную блокировку с помощью VMM и реорганизовать код VMX.
- Исправьте тупик, когда numvnodes достигнут maxvnodes, что может произойти при тяжелых нагрузках. Также устраните небольшую утечку памяти ядра, когда «df» или «синхронизация файловой системы» запускаются с помощью umount. Также уменьшите вычисление maxvnodes скромно. Например, машина с 8 ГБ оперативной памяти теперь будет устанавливать maxvnodes на 478483 вместо 598103.
- Исправить редкую панику, которая может быть вызвана vm_object_page_remove (), когда user_yield () неправильно вызван, удерживая спин-блокировку, а затем решает отказаться.
- Уменьшить размер некоторых динамически распределенных структур ядра. В частности, избыточное распределение хэш-таблиц inode теперь меньше. В первую очередь влияет на UFS (который DragonFlyBSD не использует много).
- Добавить обходной путь для AMD erratum 793.
- Исправить тупик, который может возникать в вызовах кластера с кластерами _ * ().
- Исправить ошибку, при которой загрузка рекурсивного модуля может быть заблокирована.
- Исправить глупую ошибку в NFS-файле (например, на стороне сервера NFS), что может привести к тому, что код глупых серверов NFS никогда не удалит глупо-переименованный файл. Как глупо!
- Сделайте лучшую работу, поддерживая конфигурации с высокой-ncpu + низкой памятью.
- Рефтор разделяет шпиндельные блоки, чтобы уменьшить количество вращения, которое может произойти, когда несколько процессоров приобретают общую спин-блокировку в одно и то же время.
- Пересмотреть операции наложения, чтобы уменьшить конкуренцию SMP еще больше. Это улучшает одновременную неконфликтную однокомпонентную производительность не менее 25 раз на системах со многими ядрами и значительно сокращает операции vnode и mount ref ref и unref.
- Переустановите множество других структур ядра, чтобы улучшить локальность кэша и уменьшить отскакивание строки в кеше.
- Исправить ошибку в переименовании файла SMBFS.
- Внедрите RLIMIT_RSS, ограничитель для каждого процесса, который заставит локализованный пейджинг на основе каждого процесса. Эта функция может использоваться для предотвращения того, чтобы один процесс превратил остальную часть машины в жесткий корпус.
- Увеличьте максимальное поддерживаемое пространство подкачки. Максимум в настоящее время ограничен главным образом баром и будет находиться в десятках терабайт (если у вас достаточно бара для поддерживающих структур управления). Также увеличьте KVM ядра от 128G до 511G.
- Реализовать динамическое удаление pmap (по умолчанию отключено). Это направляет код pmap для удаления страниц страницы промежуточной страницы и PD из pmap на лету. Это может быть полезно, если память стоит на высоте, но обратите внимание, что если она включена, это замедлит выполнение программ, которые выделяют и освобождают память с высокой скоростью.
- Рефакторинг, как работают «хорошие» уровни пользователей, делая выбранные хорошие значения более значительными, чем они были раньше.
- Добавьте высокопроизводительный драйвер NVME для DragonFly, написанный Matt Dillon. Этот драйвер будет использовать векторы MSI-X и все доступные очереди, поддерживаемые устройством, локальную локализацию без блокировки или минимальную блокировку (в большинстве случаев не конфликты SMP) и способен к безумным IOPS и пропускной способности.
- Графика:
- Стабилизирует Broadwell и Skylake, поднимите нас на эквивалентный DRM Linux 4.6.
- Внедрение Linux i2c API для упрощения переноса.
- Исправьте несколько старых ошибок, включая отмену блокировки, которая может остановить воспроизведение видео (и остальную часть X).
- Исправить ошибку приоритета потока drm ядра, которая позволила пользовательским процессам иметь более высокий приоритет, чем вспомогательный поток drm. Это фиксирует большинство временных видеопотоков, сообщаемых в браузерах.
- Обрабатывать фреймбуфер EFI, переходящий в DRM, улучшать переходы с переключением VT-переключателей и исправлять связанный с ним тупик. Также ядро попытается переключиться на консоль VT от X, когда произойдет паника.
- Сеть:
- Много улучшений по всем направлениям.
- iwm - исправляет проблему, вызванную инвертированной логикой. Многочисленные другие улучшения, которые значительно улучшают производительность.
- wlan - Поддержка асинхронного сканирования bg и других функций.
- Другие драйверы:
- nvme - Добавлена сборка ядра по умолчанию, а также исправления и улучшения производительности.
- mmcsd - Значительная поддержка eMMC добавлена в DragonFly.
- ahci - Некоторые исправления совместимости и дополнительные причуды добавлены для поддержки сломанных наборов микросхем, в частности мультипликаторов портов. Кроме того, при использовании набора микросхем реализуйте FBS (FIS-Based-Switching).
- Добавлена поддержка Trackpoint и Elantech.
- Самодельная:
- systat расширен, чтобы свернуть несколько прерываний, принадлежащих одному и тому же драйверу, так как часто их слишком много, чтобы перечислять их сейчас.
- systat -vm 1 значительно улучшен и обновлен, чтобы сообщать более полезную информацию и распаковывать поля, чтобы они не работали друг с другом. И добавьте «nvme» в соответствие блочного устройства. Также отрегулируйте расширенный дисплей vmstats и измените, как сообщается ozfod и nzfod.
- 'vmstat 1' реорганизован. Все поля были связаны друг с другом из-за высокой производительности современных машин, которые существовали 30 лет назад.
- Изменить привязку mount / mountd, чтобы уменьшить ненужные проверки и команды mountlist из операций mount_null и mount_tmpfs. Только очень важно при одновременном использовании mount / umount, но основная сборка фактически создает эту ситуацию.
- Исправить многочисленные утечки fork / exec * (), которые могут вызвать libc из-за не использования O_CLOEXEC в атомном режиме. Добавьте различные функции O_CLOEXEC к функциям типа popen () и mk * stemp * () (добавьте mkostemp () и mkostemps ()). Исправьте утечку дескриптора файла в popen () при работе в потоковой среде.
- Будьте лучше в pthreads в vfork (), предоставив lwp нового субпроцесса тот же TID, что и vfork (). Это позволяет выполнять функции поддержки pthread в дочернем элементе во время vfork без взлома pthreads.
- Множество исправлений совместимости с заголовками для улучшения объемных сборников dports.
- Несколько экземпляров OpenSSL для исправления безопасности.
- Resync OpenSSH, чтобы упростить его сохранение.
- Разделите флаги ядра C, создав для сборки ядра KCFLAGS вместо CFLAGS.
- Удалите с дерева множество старых драйверов ISA. Поскольку DragonFlyBSD теперь только 64-битный, мы можем начать удалять старые драйверы, которые не существуют на 64-разрядных платформах.
- Введите WORLD_CFLAGS и WORLD_CCOPTLEVEL, по умолчанию -O. Это упрощает компиляцию вашего мира -O2 или любого другого (например, WORLD_CCOPTLEVEL = 2). Однако мы препятствуем использованию 3 или выше. Допустимые значения: 0, 1, 2, 3, s, g и «fast».
- Отрегулируйте форматирование STATUS для ps, чтобы сделать его более читаемым и удалить древние флаги, которые больше не применимы и просто создают беспорядок.
- Исправить выравнивание malloc () для небольших распределений. Минимальное выравнивание теперь составляет 16 для распределений в диапазоне 16-128 байтов вместо 8. Обратите внимание, что распределения мощности из 2 всегда были выровнены естественным образом, но некоторые программы используют кратные (например, 16), например «48», и предположим, что 16-байтовое выравнивание.
- Фортуны реорганизованы, добавлены.
- powerd - добавьте управление на основе температуры в powerd с новой опцией -H lotemp: hightemp. Эта функция чрезвычайно полезна для ноутбуков с плохим охлаждением и whos BIOS преднамеренно дросселируются при слишком высокой температуре. Powerd теперь также обнаруживает изменения состояния питания (которые могут изменять список доступных частот) и правильно переводит службу при изменении состояния питания.
- Исправлено множество исправлений libthread_xu / pthreads для улучшения совместимости с dports.
- Добавить функции копирования на запись в vkernel. Например, позволяет нескольким vkernel использовать один образ диска, если каждый из COW изменяет внутренне, чтобы опустить.
- / usr / src / secure rewired, конфликты удалены из libmd, libcrypt.
- В базовой системе были обновлены различные инструменты:
- Компилятор обновлен до GCC 5.4.1.
- Теперь у нас есть золотой линкер с LTO.
- binutils 2.25
- меньше 481.
- OpenSSL / LibRESSL полностью обновлен. База теперь использует libressl.
- Несколько обновлений часового пояса.
- Статус молота:
- Другие улучшения. Одна вещь, которая не попала в релиз, была ошибкой версии для использования более быстрого алгоритма CRC с другим полиномом. Эта работа будет MFC'd -release после завершения тестирования. Тем не менее, пользователи не должны слишком беспокоиться об этом, потому что наиболее серьезное исправление производительности IS в релизе (исправление для кода cluster_write () для записи файловой системы).
- Hammer2 Статус:
- Разработка продолжается, но еще нет слова в первом выпуске.
- Статус Clang:
- Добавлена стартовая структура для использования clang в качестве альтернативного базового компилятора в DragonFly для замены gcc 4.7. Это еще не завершено. Конечно, Clang можно добавить как пакет.
- 64-разрядный статус:
- Обратите внимание, что DragonFly - это 64-разрядная операционная система с 4,6 и не будет работать на 32-разрядном оборудовании.
- Поддержка AMD Ryzen находится в выпуске, и дальнейшая работа будет внедрена по мере появления новых разработок Ryzen. Есть некоторые проблемы с сообщением о топологии процессора, которые будут исправлены и MFC'd. Есть некоторые проблемы стабильности, которые в настоящее время ждут обновления микрокода AMD для разрешения / повторного тестирования. Пользователи Ryzen могут быть уверены, что остаемся на вершине!
Что нового в версии 4.8.0:
- Ядро:
- Код кэша кода Refactor для удаления динамических резервирования KVA. Вместо этого все KVA зарезервированы во время загрузки. Экономит нас от ненужных IPI и позволяет значительно упростить код кэша буфера.
- Добавить vfs.repurpose_enable (в тесте, отключено по умолчанию). Эта функция позволяет значительно снизить нагрузку на управление IPI и VM на машине, которая делает огромные объемы ввода-вывода файлов, например, с SSD NVMe, минуя обычный механизм рециркуляции страниц VM. При включении эта функция срабатывает только при высоких нагрузках ввода-вывода. Он работает, перепрофилируя страницы VM, лежащие в основе буфера на месте (когда это возможно), чтобы не создавать kremove / kenter страницы в KVA буфера. Обычная перезагрузка страницы VM (которая в противном случае была бы перегружена нагрузкой ввода-вывода) также обходится.
- Измените способ обработки IPIQ, в частности создайте независимый вектор векторного механизма для недопустимых страниц, который игнорирует (будет работать), даже если критический раздел удерживается. Внедрите machdep.optimized_invltlb (отключено по умолчанию, в рамках теста), что позволяет избежать отправки IPI недействительных идентификаторов IPL на простоя cpus.
- Исправьте многочисленные гонки, которые могут возникать при экстремальных нагрузках. Большинство случаев использования никогда не запускают их, но наши сборные коробки делали время от времени. Например, была гонка двух команд, в которой бит cpu для pmap был бы очищен (для двух инструкций) и вызывать IPI TLB, возникающий одновременно с другим процессором для одного и того же pmap, чтобы не понимать, что cpu использует pmap , Исправление состоит в том, чтобы отключить оптимизацию перезагрузки CR3 для корпуса коммутатора LWP- & gt; LWP (тот же самый proc).
- Исправьте ошибку HAMMER, которая может привести к ошибке сообщения DATA CRC.
- Исправить двойную запись, вызванную тем, как HAMMER использует cluster_write (). Это значительно улучшает производительность записи HAMMER.
- Также вошло множество других исправлений и исправлений HAMMER.
- Исправить жесткую блокировку, которая может возникнуть в getpbuf * () из-за неправильной интерпретации возвращаемого значения атомарного op.
- Исправить прерывание стекирования, которое может появиться в окне с 10 командами, потенциально (но не найденное в дикой природе), запускающее стек ядра.
- Отключить IP-адреса, связанные с pmap, пополам для определенных операций кеш-кеша, не беспокоясь о недействительности TLB, а на флип-стороне всегда отменяет TLB при вводе нового PTE, даже если предыдущее содержимое было недействительным. Это улучшает производительность, а также облегчает отладку путем устранения проблемной оптимизации.
- Исправить ряд трудных для запуска SMP-гонок, в частности, связанных с одновременным увеличением количества точек монтирования, которые может вызвать сборка. Также исправьте гонку mountctl vs umount.
- Уменьшите количество атомных op в пути коммутатора.
- Исправьте гонку / панику намекачей, которая может произойти при экстремальных нагрузках в сочетании с большим количеством действий mount / umount.
- Ограничьте% rip-выборку до корня.
- Исправить проблему getpid () в vfork () при поточной передаче. В частности, одновременный vfork () s в потоковой программе может привести к тому, что неверный PID будет возвращен getpid () в дочернем элементе до exec.
- Исправить редкую гонку tsleep / callout, когда таймер выноса срабатывает до завершения полной настройки tsleep ().
- Сообщения об остановке namecache на консоли. В частности, сообщите о правильном прошедшем времени и td_comm задействованного потока.
- Дальнейшее сокращение тестирования памяти и обнуления начальной загрузки для улучшения времени загрузки в системах с большим количеством оперативной памяти.
- Полностью удалите код обхода страницы. Обнуление страницы по современному процессору по требованию лучше по многим причинам, и на самом деле может быть быстрее в сочетании с доступом пользователей к данным на странице из-за эффектов кеша. Удалите PG_ZERO, потому что он больше не нужен. Удаление PG_ZERO также делает ядро более отлаживаемым, удалив еще один возможный источник перекрестного загрязнения.
- Рефакторинг и завершение реализации локализации ЦП для распределения памяти ядра. Объединитесь с осознанием NUMA. Это работает для cpu-локализованных или недолговечных структур данных ядра. Эти два объединены вместе в нашей абстракции PQ_L2_SIZE, которая раньше использовалась в качестве кода окраски страницы VM. Этот код теперь также обрабатывает локализацию ЦП и понимание NUMA.
- Исправить многие проблемы vkernel и значительно улучшить производительность vkernel.
- Обновить файл kern.proc.pathname, sysctl, используемый программами для поиска пути к запущенной программе. Этот sysctl был первоначально реализован до того, как мы сохранили достаточные данные, чтобы вернуть полный правильный путь.
- Синхронизация ACPICA от Intel (это обычное явление).
- Исправьте сборку memcpy () ABI. Сборка не возвращала исходный (dst) аргумент. Не исправляет никаких известных проблем, но закрывает отверстие, когда GCC иногда решает позвонить memcpy при генерации кода.
- Многие из них обязуются очистить предупреждения -O2 и ошибки. Ядро теперь скомпилировано -O2 по умолчанию.
- Добавить обходной путь для неправильного выхода в ACPI-пути (например, багги-код ACPI).
- Исправьте гонку STOP / CONT, которая может быть вызвана ожидающим сигналом в самое неподходящее время.
- Резьбовые исправления coredump и исправляют блокировку, связанную с тем же, когда одновременно выполняются несколько потоков одного и того же процесса seg-fault.
- Исправьте тупик CAM / VM, который может произойти из-за ошибки в uiomove_nofault (). Это может вызвать «неопределенный буфер ожидания» во время интенсивного подкачки / подкачки.
- Добавить код для обнаружения и устранения потерянных IPI. Это прежде всего для vkernels, где некоторые виртуальные хосты могут потерять IPI. Реальные процессоры не должны потерять IPI.
- Различные исправления для clock_gettime ().
- Удалите остатки MPLOCK. Все критические пути уже давно лишены этой блокировки, но по-прежнему остается несколько некритических мест, которые используют его.
- Исправьте код убийства с низкой памятью и исправьте ряд рас, которые могут помешать работе функции.
- Исправить системную блокировку с помощью VMM и реорганизовать код VMX.
- Исправьте тупик, когда numvnodes достигнут maxvnodes, что может произойти при тяжелых нагрузках. Также устраните небольшую утечку памяти ядра, когда «df» или «синхронизация файловой системы» запускаются с помощью umount. Также уменьшите вычисление maxvnodes скромно. Например, машина с 8 ГБ оперативной памяти теперь будет устанавливать maxvnodes на 478483 вместо 598103.
- Исправить редкую панику, которая может быть вызвана vm_object_page_remove (), когда user_yield () неправильно вызван, удерживая спин-блокировку, а затем решает отказаться.
- Уменьшить размер некоторых динамически распределенных структур ядра. В частности, избыточное распределение хэш-таблиц inode теперь меньше. В первую очередь влияет на UFS (который DragonFlyBSD не использует много).
- Добавить обходной путь для AMD erratum 793.
- Исправить тупик, который может возникать в вызовах кластера с кластерами _ * ().
- Исправить ошибку, при которой загрузка рекурсивного модуля может быть заблокирована.
- Исправить глупую ошибку в NFS-файле (например, на стороне сервера NFS), что может привести к тому, что код глупых серверов NFS никогда не удалит глупо-переименованный файл. Как глупо!
- Сделайте лучшую работу, поддерживая конфигурации с высокой-ncpu + низкой памятью.
- Рефтор разделяет шпиндельные блоки, чтобы уменьшить количество вращения, которое может произойти, когда несколько процессоров приобретают общую спин-блокировку в одно и то же время.
- Пересмотреть операции наложения, чтобы уменьшить конкуренцию SMP еще больше. Это улучшает одновременную неконфликтную однокомпонентную производительность не менее 25 раз на системах со многими ядрами и значительно сокращает операции vnode и mount ref ref и unref.
- Переустановите множество других структур ядра, чтобы улучшить локальность кэша и уменьшить отскакивание строки в кеше.
- Исправить ошибку в переименовании файла SMBFS.
- Внедрите RLIMIT_RSS, ограничитель для каждого процесса, который заставит локализованный пейджинг на основе каждого процесса. Эта функция может использоваться для предотвращения того, чтобы один процесс превратил остальную часть машины в жесткий корпус.
- Увеличьте максимальное поддерживаемое пространство подкачки. Максимум в настоящее время ограничен главным образом баром и будет находиться в десятках терабайт (если у вас достаточно бара для поддерживающих структур управления). Также увеличьте KVM ядра от 128G до 511G.
- Реализовать динамическое удаление pmap (по умолчанию отключено). Это направляет код pmap для удаления страниц страницы промежуточной страницы и PD из pmap на лету. Это может быть полезно, если память стоит на высоте, но обратите внимание, что если она включена, это замедлит выполнение программ, которые выделяют и освобождают память с высокой скоростью.
- Рефакторинг, как работают «хорошие» уровни пользователей, делая выбранные хорошие значения более значительными, чем они были раньше.
- Добавьте высокопроизводительный драйвер NVME для DragonFly, написанный Matt Dillon. Этот драйвер будет использовать векторы MSI-X и все доступные очереди, поддерживаемые устройством, локальную локализацию без блокировки или минимальную блокировку (в большинстве случаев не конфликты SMP) и способен к безумным IOPS и пропускной способности.
- Графика:
- Стабилизирует Broadwell и Skylake, поднимите нас на эквивалентный DRM Linux 4.6.
- Внедрение Linux i2c API для упрощения переноса.
- Исправьте несколько старых ошибок, включая отмену блокировки, которая может остановить воспроизведение видео (и остальную часть X).
- Исправить ошибку приоритета потока drm ядра, которая позволила пользовательским процессам иметь более высокий приоритет, чем вспомогательный поток drm. Это фиксирует большинство временных видеопотоков, сообщаемых в браузерах.
- Обрабатывать фреймбуфер EFI, переходящий в DRM, улучшать переходы с переключением VT-переключателей и исправлять связанный с ним тупик. Также ядро попытается переключиться на консоль VT от X, когда произойдет паника.
- Сеть:
- Много улучшений по всем направлениям.
- iwm - исправляет проблему, вызванную инвертированной логикой. Многочисленные другие улучшения, которые значительно улучшают производительность.
- wlan - Поддержка асинхронного сканирования bg и других функций.
- Другие драйверы:
- nvme - Добавлена сборка ядра по умолчанию, а также исправления и улучшения производительности.
- mmcsd - Значительная поддержка eMMC добавлена в DragonFly.
- ahci - Некоторые исправления совместимости и дополнительные причуды добавлены для поддержки сломанных наборов микросхем, в частности мультипликаторов портов. Кроме того, при использовании набора микросхем реализуйте FBS (FIS-Based-Switching).
- Добавлена поддержка Trackpoint и Elantech.
- Самодельная:
- systat расширен, чтобы свернуть несколько прерываний, принадлежащих одному и тому же драйверу, так как часто их слишком много, чтобы перечислять их сейчас.
- systat -vm 1 значительно улучшен и обновлен, чтобы сообщать более полезную информацию и распаковывать поля, чтобы они не работали друг с другом. И добавьте «nvme» в соответствие блочного устройства. Также отрегулируйте расширенный дисплей vmstats и измените, как сообщается ozfod и nzfod.
- 'vmstat 1' реорганизован. Все поля были связаны друг с другом из-за высокой производительности современных машин, которые существовали 30 лет назад.
- Изменить привязку mount / mountd, чтобы уменьшить ненужные проверки и команды mountlist из операций mount_null и mount_tmpfs. Только очень важно при одновременном использовании mount / umount, но основная сборка фактически создает эту ситуацию.
- Исправить многочисленные утечки fork / exec * (), которые могут вызвать libc из-за не использования O_CLOEXEC в атомном режиме. Добавьте различные функции O_CLOEXEC к функциям типа popen () и mk * stemp * () (добавьте mkostemp () и mkostemps ()). Исправьте утечку дескриптора файла в popen () при работе в потоковой среде.
- Будьте лучше в pthreads в vfork (), предоставив lwp нового субпроцесса тот же TID, что и vfork (). Это позволяет выполнять функции поддержки pthread в дочернем элементе во время vfork без взлома pthreads.
- Множество исправлений совместимости с заголовками для улучшения объемных сборников dports.
- Несколько экземпляров OpenSSL для исправления безопасности.
- Resync OpenSSH, чтобы упростить его сохранение.
- Разделите флаги ядра C, создав для сборки ядра KCFLAGS вместо CFLAGS.
- Удалите с дерева множество старых драйверов ISA. Поскольку DragonFlyBSD теперь только 64-битный, мы можем начать удалять старые драйверы, которые не существуют на 64-разрядных платформах.
- Введите WORLD_CFLAGS и WORLD_CCOPTLEVEL, по умолчанию -O. Это упрощает компиляцию вашего мира -O2 или любого другого (например, WORLD_CCOPTLEVEL = 2). Однако мы препятствуем использованию 3 или выше. Допустимые значения: 0, 1, 2, 3, s, g и «fast».
- Отрегулируйте форматирование STATUS для ps, чтобы сделать его более читаемым и удалить древние флаги, которые больше не применимы и просто создают беспорядок.
- Исправить выравнивание malloc () для небольших распределений. Минимальное выравнивание теперь составляет 16 для распределений в диапазоне 16-128 байтов вместо 8. Обратите внимание, что распределения мощности из 2 всегда были выровнены естественным образом, но некоторые программы используют кратные (например, 16), например «48», и предположим, что 16-байтовое выравнивание.
- Фортуны реорганизованы, добавлены.
- powerd - добавьте управление на основе температуры в powerd с новой опцией -H lotemp: hightemp. Эта функция чрезвычайно полезна для ноутбуков с плохим охлаждением и whos BIOS преднамеренно дросселируются при слишком высокой температуре. Powerd теперь также обнаруживает изменения состояния питания (которые могут изменять список доступных частот) и правильно переводит службу при изменении состояния питания.
- Исправлено множество исправлений libthread_xu / pthreads для улучшения совместимости с dports.
- Добавить функции копирования на запись в vkernel. Например, позволяет нескольким vkernel использовать один образ диска, если каждый из COW изменяет внутренне, чтобы опустить.
- / usr / src / secure rewired, конфликты удалены из libmd, libcrypt.
- В базовой системе были обновлены различные инструменты:
- Компилятор обновлен до GCC 5.4.1.
- Теперь у нас есть золотой линкер с LTO.
- binutils 2.25
- меньше 481.
- OpenSSL / LibRESSL полностью обновлен. База теперь использует libressl.
- Несколько обновлений часового пояса.
- Статус молота:
- Другие улучшения. Одна вещь, которая не попала в релиз, была ошибкой версии для использования более быстрого алгоритма CRC с другим полиномом. Эта работа будет MFC'd -release после завершения тестирования. Тем не менее, пользователи не должны слишком беспокоиться об этом, потому что наиболее серьезное исправление производительности IS в релизе (исправление для кода cluster_write () для записи файловой системы).
- Hammer2 Статус:
- Разработка продолжается, но еще нет слова в первом выпуске.
- Статус Clang:
- Добавлена стартовая структура для использования clang в качестве альтернативного базового компилятора в DragonFly для замены gcc 4.7. Это еще не завершено. Конечно, Clang можно добавить как пакет.
- 64-разрядный статус:
- Обратите внимание, что DragonFly - это 64-разрядная операционная система с 4,6 и не будет работать на 32-разрядном оборудовании.
- Поддержка AMD Ryzen находится в выпуске, и дальнейшая работа будет внедрена по мере появления новых разработок Ryzen. Есть некоторые проблемы с сообщением о топологии процессора, которые будут исправлены и MFC'd. Есть некоторые проблемы стабильности, которые в настоящее время ждут обновления микрокода AMD для разрешения / повторного тестирования. Пользователи Ryzen могут быть уверены, что остаемся на вершине!
Что нового в версии 4.6.0:
- mmcsd (4): исправить опечатку в disk_create () args. Позволяет получать доступ к & gt; 1 SD- / MMC-карте.
- Добавить unzip (1). Если вы не можете победить их, присоединитесь к ним
- Восстановить способность к мастер-миру для создания версии 4.4.
- buildworld - Allow -release будет построено на основе
- etc / rc.d - бездисковые настройки
- kernel - добавить поддержку kqueue в NFS (исправить проблемы firefox w / nfs)
- Импортировать OpenSSL 1.0.1s.
- Локальные настройки для OpenSSL 1.0.1s.
- Синхронизация базы данных zoneinfo с tzdata2016b из ftp://ftp.iana.org/tz/releases
- zic (8) / zdump (8): Не предупреждайте об аббревиатурах, таких как '-05'.
- zic (8): удалите «регистр», который закрался в последний коммит.
- kernel / acpi_timer: добавьте отсутствующий cpu_enable_intr () после теста таймера.
- em.4: Поддержка i219.
- ig_hal / em / emx: добавьте поддержку I219 (Skylake).
- sys / vfs / hammer: исправить ошибку при стирании заголовка тома
- sbin / hammer: не заходите за пределы 16KB буфера пользовательского пространства HAMMER
- sbin / hammer: добавьте опцию obfuscate, чтобы показать молот.
- sys / vfs / hammer: временное исправление для паники ядра на томе-del
Что нового в версии 4.4.3 / 4.6.0 RC2:
- mmcsd (4): исправить опечатку в disk_create () args. Позволяет получать доступ к & gt; 1 SD- / MMC-карте.
- Добавить unzip (1). Если вы не можете победить их, присоединитесь к ним
- Восстановить способность к мастер-миру для создания версии 4.4.
- buildworld - Allow -release будет построено на основе
- etc / rc.d - бездисковые настройки
- kernel - добавить поддержку kqueue в NFS (исправить проблемы firefox w / nfs)
- Импортировать OpenSSL 1.0.1s.
- Локальные настройки для OpenSSL 1.0.1s.
- Синхронизация базы данных zoneinfo с tzdata2016b из ftp://ftp.iana.org/tz/releases
- zic (8) / zdump (8): Не предупреждайте об аббревиатурах, таких как '-05'.
- zic (8): удалите «регистр», который закрался в последний коммит.
- kernel / acpi_timer: добавьте отсутствующий cpu_enable_intr () после теста таймера.
- em.4: Поддержка i219.
- ig_hal / em / emx: добавьте поддержку I219 (Skylake).
- sys / vfs / hammer: исправить ошибку при стирании заголовка тома
- sbin / hammer: не заходите за пределы 16KB буфера пользовательского пространства HAMMER
- sbin / hammer: добавьте опцию obfuscate, чтобы показать молот.
- sys / vfs / hammer: временное исправление для паники ядра на томе-del
Что нового в версии 4.4.3:
- mmcsd (4): исправить опечатку в disk_create () args. Позволяет получать доступ к & gt; 1 SD- / MMC-карте.
- Добавить unzip (1). Если вы не можете победить их, присоединитесь к ним
- Восстановить способность к мастер-миру для создания версии 4.4.
- buildworld - Allow -release будет построено на основе
- etc / rc.d - бездисковые настройки
- kernel - добавить поддержку kqueue в NFS (исправить проблемы firefox w / nfs)
- Импортировать OpenSSL 1.0.1s.
- Локальные настройки для OpenSSL 1.0.1s.
- Синхронизация базы данных zoneinfo с tzdata2016b из ftp://ftp.iana.org/tz/releases
- zic (8) / zdump (8): Не предупреждайте об аббревиатурах, таких как '-05'.
- zic (8): удалите «регистр», который закрался в последний коммит.
- kernel / acpi_timer: добавьте отсутствующий cpu_enable_intr () после теста таймера.
- em.4: Поддержка i219.
- ig_hal / em / emx: добавьте поддержку I219 (Skylake).
- sys / vfs / hammer: исправить ошибку при стирании заголовка тома
- sbin / hammer: не заходите за пределы 16KB буфера пользовательского пространства HAMMER
- sbin / hammer: добавьте опцию obfuscate, чтобы показать молот.
- sys / vfs / hammer: временное исправление для паники ядра на томе-del
Что нового в версии 4.4.2:
- virtio_blk: используйте contigmalloc / contigfree для распределений vtblk_request.
- drm / radeon: нам нужен физический адрес фиктивной страницы, а не виртуальный
- if_iwm: Применить некоторые изменения из OpenBSD, if_iwm.c rev 1.39 - & gt; 1,42
- if_iwm: просто сохраните указатель прошивки структуры, например if_iwn.
- if_iwm: удалить комментарии, ссылающиеся на исходные имена файлов Linux iwlwifi.
- if_iwm: исправить использование IEEE80211_ADDR_COPY ().
- if_iwm: исправьте код настройки скорости.
- etc / rc.d: обновить rtsold
- i915 - добавьте задержку после прикрепления, чтобы избежать консолей / X-гонок.
- kernel - уменьшить lwp_signotify () latency
- devfs - исправление паники на дополнительных установках devfs при наличии правил
- ssh - удалить недокументированную поддержку роуминга CVE-2016-0777 CVE-2016-0778
- kernel - добавить quirks для xhci (usb)
- hammer - удалить отладку kprintf
- libc / stdtime: исправить два случая, когда указатель NULL мог быть бесплатным () 'd.
- kernel / vga: удалить неправильный lwkt_reltoken (). Это не принято в этот момент.
- libc / nls: синхронизировать сообщения str {error, signal} () с.
- w (1): inet_addr () возвращает INADDR_NONE после сбоя.
- ee (1): исправить неинициализированную переменную.
- Ядро: исправить файл kern.dumpdev sysctl.
- Импортировать OpenSSL 1.0.1r.
- Локальные настройки для OpenSSL 1.0.1r.
- gcc50 / libconv_supc: cp-demangle.c нуждается в HAVE_CONFIG_H.
- Синхронизация базы данных zoneinfo с tzdata2016a из ftp://ftp.iana.org/tz/releases
- выполнить обновление: добавить устаревший часовой пояс.
- igb: исправить настройки DMACR
- ifconfig: Исправить удаление адреса inet6
Что нового в версии 4.4.1:
- Ядро:
- Улучшены настройки энергосбережения ЦП
- Сокращение количества файлов / свободный конфликт
- Сокращение конкуренции в kqueue
- Реализован системный вызов lwp_setname (2)
- Фиксированный dsp (4) поддержка неблокирующей операции
- Добавить драйвер aperf (4) для отображения эффективной частоты процессора
- Многочисленные исправления и исправления для HAMMER
- Синхронизация ACPICA до 20151124
- В основном завершено удаление битов i386 (32-разрядных)
- Отрегулируйте кучу загрузчика для обработки больших изображений MD
- Очистка проходит по мертвому коду ядра (syslink остается и т. д.)
- удалено dsched (проблемы с ошибками и плохо работает с SSD)
- Алгоритмы перекодировки пейджера для pkill с низкой памятью и объемом памяти
- Графика:
- Драйверы drm / i915 и drm / radeon теперь соответствуют ядру Linux 3.18
- i915 поддерживает ValleyView / Baytrail и SOCOM Черривью Atom.
- GPU Broadwell теперь полностью ускорены.
- Подготовительная работа для поддержки Skylake.
- Системная консоль теперь поддерживает графику drm по умолчанию; виртуальные терминалы не просто показывают черный экран, как только Xorg был запущен и загружен один из модулей ядра kms.
- Улучшено управление питанием. Панель самообслуживания доступна на оборудовании i915.
- Датчики температуры теперь поддерживаются на оборудовании Radeon
- Сеть:
- Поддержка Realtek 8168H в re (4)
- Добавлен драйвер iwm (4)
- rtadvd обновлен, добавлен rtadvctl
- Асинхронные соединения UDP для обработки гораздо большей нагрузки
- Новое более крупное окно запуска TCP для соединений с высокой задержкой
- Значения ядра nmbcluster настраиваются в реальном времени, для экстремального трафика. Сеть:
- Стабилизировать доменное имя UNIX
- Новый код GC для fd-передачи через сокеты домена unix
- Разное IPv6 синхронизация с FreeBSD
- Улучшена производительность сокета (2) для TCP и UDP
- Улучшен выбор локального порта TCP connect (2)
- Добавлен системный вызов accept (4)
- Добавлена поддержка SOCK_CLOEXEC и SOCK_NONBLOCK сокетов (2) и флажков accept4 (2)
- Предоставить функции управления потоком HW для ifconfig
- Добавьте настраиваемые параметры, чтобы можно было установить iOSize и readahead NFSROOT.
- Принесите расширенный ipfw из FreeBSD (называемый ipfw3 в DFly)
- Другие драйверы:
- Поддержка MIDI была прочитана
- Многие исправления для устройства mapper
- dm-delay и dm-flakey были добавлены в устройство mapper
- USB-модемы работают лучше (или, по крайней мере, не паниковать ядро)
- Улучшен доступ к функциям и статусу ECC в блоке
- wlan обновлен от FreeBSD (до момента удаления сплит-устройства)
- Самодельная:
- библиотека regex была заменена многобайтовой и, как правило, гораздо более способной библиотекой регулярных выражений TRE. Он соответствует функциям OSX. (DF - это первый BSD для перехода на TRE после MacOS)
- libm заменен версией OpenBSD (это совместная работа продолжается)
- В libc теперь реализовано управление версиями символов, которое позволяет запускать исполняемые файлы, созданные в версии 4.4, на DragonFly в течение многих лет в будущем.
- Завершить капитальный ремонт и обновление локалей, включая реализацию сортировки.
- malloc.h удален (DragonFly - это первый BSD для удаления этого заголовка)
- gcc50 libstdc ++, измененный для полного использования функций C99 в clang
- Как следствие обновления локалей, выход формата ls (1) и формата -T изменился при использовании названных локалей. Примечательно, что длинные форматные месяцы всегда сокращаются на английском языке (используя, таким образом, определения POSIX, как быстрые, так и три буквы в ширину), и всегда отображаются годовая, часовая и вторая информация. В локали C / POSIX изменений в ls (1), кроме обработки временных меток времени, не было исправлено в соответствии со стандартными требованиями POSIX.
- Если используется WPA-поставщик от базы, во время загрузки будет 10-секундная задержка при отображении сообщения, в котором настоятельно рекомендуется использовать версию DPorts (security / wpa_supplicant).
- Улучшено powerd (8)
- Улучшенный вывод top (1) и ps (1) для LWP и потоков ядра
- Исправлена поддержка pthread_set_name_np (3)
- Портированный tcpdrop (8)
- Добавление многих новых мест, включая шесть арабских мест (ОАЭ, Саудовская Аравия, Египет, Иордания, Марокко, Катар), дополнительные испанские территории (Мексика, Аргентина, Коста-Рика), дополнительные английские языки (Филиппины, Сингапур, Гонконг) , исправлены норвежские локали (только нб и нн), расширенный шведский (Финляндия), саамский (Финляндия, Норвегия), сербский, представленный как в кириллице, так и в латинской форме. ('locale -a' предоставляет полный список.)
- rtadvc, импортированный из FreeBSD
- В базовой системе были обновлены различные инструменты:
- nvi2 обновлен до версии 2.1.3
- добавлен libexecinfo (синхронизирован с FreeBSD)
- iconv синхронизирован с FreeBSD
- openssl обновлен до 1.0.1q
- xz обновлено до 5.2.2
- libedit обновлен до версии 2015-03-25
- binutils обновлен до версии 2.25.1
- grep обновлен до версии 2.22
- tcsh обновлен до 6.19.00
- libdialog обновлен до v1.2-20150920
- (tn) ftp обновлен до '10 OCT 2015 '
- gcc обновлено до 5.2
- acpica обновлен до 20150717
- sort (1), который пришел из NetBSD, был заменен версией FreeBSD
- localedef (1), внутренний инструмент с источником на Illumos
- cldr2def, внутренний инструмент с истоками в заброшенном проекте FreeBSD, но расширенный для DF
- Удалено из базовой системы:
- hostapd (последняя версия доступна через dports: net / hostapd)
- mklocale (заменяется на localedef)
- colldef (заменяется на localedef)
- Улучшения HAMMER:
- Многие, многие исправления и исправления для Hammer1, благодаря Томохиро Кусуми
- Другие улучшения:
- Количество портов DPorts составляет 22 800 портов. Многие ранее поврежденные порты были исправлены постоянными пользователями из-за вкладов, предлагаемых через механизм запроса Pull запросов GitHub. (Спасибо!)
- Шесть «официальных» наборов обоев DragonFly можно найти на x11-темах / драконьевых обоях (pkg install dragonfly-wallpapers). Они автоматически устанавливаются и предварительно выбираются для пользователей KDE и автоматически устанавливаются для пользователей XFCE4, но обои по-прежнему вручную выбираются с помощью этого рабочего стола (по крайней мере, на данный момент). Они устанавливаются на share / wallpapers, которые символически связаны с share / backgrounds / dragonfly.
Комментарии не найдены