Linux.org.ru: Новости's Journal
 
[Most Recent Entries] [Calendar View]

Tuesday, August 31st, 2021

    Time Event
    9:20a
    Ядро Linux 5.14

    После двух месяцев разработки Линус Торвальдс представил выпуск ядра Linux 5.14. Среди наиболее заметных изменений: новые системные вызовы quotactl_fd() и memfd_secret(), удаление драйверов ide и raw, новый контроллер приоритетов ввода/вывода для cgroup, режим планирования задач SCHED_CORE, инфраструктура для создания загрузчиков верифицированных BPF-программ.

    В новую версию принято 15883 исправлений от 2002 разработчиков, размер патча - 69 МБ (изменения затронули 12580 файлов, добавлено 861501 строк кода, удалено 321654 строк). Около 47% всех представленных в 5.14 изменений связаны с драйверами устройств, примерно 14% изменений имеют отношение к обновлению кода, специфичного для аппаратных архитектур, 13% связано с сетевым стеком, 3% - с файловыми системами и 3% c внутренними подсистемами ядра.

    Основные новшества:

    • дисковая подсистема, ввод/вывод и файловые системы:
      • для cgroup реализован новый контроллер приоритезации ввода/вывода - rq-qos, который может управлять приоритетом обработки запросов к блочным устройствам, генерируемых участниками каждой cgroup. Поддержка нового контроллера приоритета добавлена в планировщик ввода/вывода mq-deadline;
      • в файловой системе ext4 реализована новая ioctl-команда EXT4_IOC_CHECKPOINT, принудительно сбрасывающая на диск все ожидающие транзакции из журнала и связанные с ними буферы, а также перезаписывающая используемую журналом область в хранилище. Изменение подготовлено в рамках инициативы по предотвращению утечек информации из файловых систем;
      • в Btrfs внесены оптимизации производительности: за счёт исключения лишнего журналирования расширенных атрибутов в процессе выполнения fsync производительность интенсивных операций с расширенными атрибутами увеличилась до 17%. Кроме того, при выполнении операций усечения, не затрагивающих экстенты, отключено выполнение полной синхронизации, что сократило время выполнения операции на 12%. В sysfs добавлена настройка для ограничения пропускной способности ввода/вывода при проверке ФС. Добавлены ioctl-вызовы для отмены операций изменения размера и удаления устройства;
      • в XFS переработана реализация буферного кэша, который переведён на выделение страниц памяти в пакетном режиме. Повышена эффективность работы кэша;
      • в F2FS добавлена опция для работы в режиме только для чтения и реализован режим кэширования сжатых блоков (compress_cache) для повышения производительности случайного чтения. Реализована поддержка сжатия файлов, отражённых в память при помощи операции mmap(). Для выборочного отключения сжатия файлов по маске предложена новая опция монтирования nocompress;
      • в драйвере exFAT проведена работа по улучшению совместимости с хранилищами некоторых цифровых камер;
      • добавлен системный вызов quotactl_fd(), который позволяет управлять квотами не через файл специального устройства, а через указание файлового дескриптора, связанного с файловой системой для которой применяется квота;
      • из ядра удалены старые драйверы для блочных устройств с интерфейсом IDE, на смену которым уже давно пришла подсистема libata. Поддержка старых устройств сохранена в полном объёме, изменения касаются только возможности использования старых драйверов, при использовании которых накопители именовались /dev/hd*, а не /dev/sd*;
      • из ядра удалён драйвер «raw», предоставляющий небуферизированный доступ к блочными устройствам через интерфейс /dev/raw. Указанная функциональность давно реализуется в приложениях при помощи флага O_DIRECT;
    • память и системные службы:
      • в планировщике задач реализован новый режим планирования SCHED_CORE, позволяющий управлять тем, какие процессы могут совместно выполнятся на одном ядре CPU. Каждому процессу может быть назначен cookie-индентификатор, определяющий область доверия между процессами (например, принадлежность одному пользователю или контейнеру). При организации выполнения кода планировщик может обеспечить совместное использование одного ядра CPU только для процессов, связанных с одним владельцем, что может использоваться для блокирования некоторых атак класса Spectre за счёт предотвращения выполнения в одном потоке SMT (Hyper Threading) заслуживающих и не заслуживающих доверия задач;
      • для механизма cgroup реализована поддержка операции kill, позволяющей разом завершить все привязанные к группе процессы (отправить SIGKILL), через запись «1» в виртуальный файл cgroup.kill;
      • расширены возможности, связанные с реагированием на выявление расщеплённых блокировок («split lock»), возникающих при доступе к невыровненным данным в памяти из-за того, что при выполнении атомарной инструкции данные пересекают две линии кеша CPU. Подобные блокировки приводят к значительному падению производительности, поэтому ранее яром предоставлялась возможность принудительного завершения приложения, вызвавшего блокировку. В новом выпуске добавлен параметр командной строки ядра «split_lock_detect=ratelimit:N», позволяющий определить общесистемный лимит интенсивности операций блокировки в секунду, после превышения которого любой процесс, ставший источником расщеплённой блокировки, вместо завершения будет принудительно остановлен на 20 мс;
      • в cgroup-контроллере пропускной способности CFS (CFS bandwidth controller), определяющим как много процессорного времени можно выделить каждой cgroup, реализована возможность определения лимитов, ограниченных заданным временем действия, что позволяет лучше регулировать нагрузки, чувствительные к задержкам. Например, установка значения cpu.cfs_quota_us в 50000 и cpu.cfs_period_us в 100000 даст возможность группе процессов каждые 100ms тратить 50ms времени CPU;
      • добавлена начальная инфраструктура для создания загрузчиков BPF-программ, которая в дальнейшем позволит разрешить загрузку только BPF-программ, подписанных заслуживающим доверия цифровым ключом;
      • добавлена новая futex-операция FUTEX_LOCK_PI2, использующая монотонный таймер для расчёта таймаута, который учитывает время проведённое системой в спящем режиме;
      • для архитектуры RISC-V реализована поддержка больших страниц памяти (Transparent Huge-Pages) и возможность применения механизма KFENCE для выявления ошибок при работе с памятью;
      • в системный вызов madvise(), предоставляющий средства для оптимизации управления памятью процесса, добавлены флаги MADV_POPULATE_READ и MADV_POPULATE_WRITE для генерации «page fault» во всех страницах памяти, отражённых для операций чтения или записи, без выполнения фактического чтения или записи (prefault). Применение флагов может быть полезным для снижения задержек в процессе работы программы, благодаря упреждающему выполнению обработчика «page fault» разом для всех невыделенных страниц, не дожидаясь фактического обращения к ним;
      • в системе unit-тестирования kunit добавлена поддержка запуска тестов в окружении QEMU;
      • добавлены новые трассировщики: «osnoise» для отслеживания задержек в приложениях, вызванных обработкой прерываний, и «timerlat» для вывода детальной информации о задержках при пробуждениях по сигналу таймера;
    • виртуализация и безопасность:
      • добавлен системный вызов memfd_secret(), позволяющий создать приватную область памяти в изолированном пространстве адресов, видимую только процессу-владельцу, неотражаемую в другие процессы и напрямую недоступную ядру;
      • в системе фильтрации системных вызовов seccomp при выносе обработчиков блокировки в пространство пользователя предоставлена возможность использования одной атомарной операции для создания файлового дескриптора для изолируемой задачи и его возвращения при обработке системного вызова. Предложенная операция решает проблему с прерыванием обработчика в пространстве пользователя при поступлении сигнала;
      • добавлен новый механизм для управления ограничением ресурсов в пространстве имён идентификаторов пользователей, который привязывает отдельные счётчики rlimit к пользователю в «user namespace». Изменение решает проблему с применением общих счётчиков ресурсов при запуске одним пользователем процессов в разных контейнерах;
      • в гипервизор KVM для систем ARM64 добавлена возможность использования в гостевых системах расширения MTE (MemTag, Memory Tagging Extension), позволяющего привязать теги к каждой операции выделения памяти и организовать проверку корректности использования указателей для блокирования эксплуатации уязвимостей, вызванных обращением к уже освобождённым блокам памяти, переполнениями буфера, обращениями до инициализации и использованием вне текущего контекста;
      • предоставляемые платформой ARM64 средства для аутентификации указателей (Pointer Authentication) теперь могут быть отдельно настроены для ядра и пространства пользователя. Технология позволяет использовать специализированные инструкции ARM64 для проверки адресов возврата при помощи цифровых подписей, которые хранятся в неиспользуемых верхних битах самого указателя;
      • в User-mode Linux добавлена поддержка использования драйверов к PCI-устройствам с виртуальной шиной PCI, реализуемой драйвером PCI-over-virtio;
      • для систем x86 добавлена поддержка паравиртуализированного устройства virtio-iommu, позволяющего отправлять IOMMU-запросы, такие как ATTACH, DETACH, MAP и UNMAP, поверх транспорта virtio без эмуляции таблиц страниц памяти;
      • для CPU Intel, начиная с семейства Skylake и заканчивая Coffee Lake, по умолчанию отключено использование расширений Intel TSX (Transactional Synchronization Extensions), предоставляющих средства для повышения производительности многопоточных приложений за счёт динамического исключения лишних операций синхронизации. Расширения отключены из-за возможности совершения атак Zombieload, манипулирующих утечкой сведений по сторонним каналам, возникающей при работе механизма асинхронного прерывания операций (TAA, TSX Asynchronous Abort);
    • сетевая подсистема:
      • продолжена интеграция в ядро MPTCP (MultiPath TCP), расширения протокола TCP для организации работы TCP-соединения с доставкой пакетов одновременно по нескольким маршрутам через разные сетевые интерфейсы, привязанные к разным IP-адресам. В новом выпуске добавлен механизм для задания собственных политик хэширования трафика для IPv4 и IPv6 (multipath hash policy), дающих возможность из пространства пользователя определять, какие из полей в пакетах, в том числе инкапсулированных, будут использованы при вычислении хэша, определяющего выбор пути для пакета;
      • в виртуальный транспорт virtio добавлена поддержка сокетов SOCK_SEQPACKET (упорядоченная и надёжная передача датаграмм);
      • расширены возможности механизма сокетов SO_REUSEPORT, который позволяет сразу нескольким слушающим сокетам подключиться к одному порту для приёма соединений с распределением поступающих запросов одновременно по всем подключенным через SO_REUSEPORT сокетам, что упрощает создание многопоточных серверных приложений. В новой версии добавлены средства для передачи управления другому сокету в случае сбоя при обработки запроса изначально выбранным сокетом (решает проблему с потерей отдельных соединений при перезапуске сервисов);
    • оборудование:
      • в драйвере amdgpu реализована поддержка новых серий GPU AMD Radeon RX 6000, развиваемых под кодовыми именами «Beige Goby» (Navi 24) и «Yellow Carp», а также улучшена поддержка GPU Aldebaran (gfx90a) и APU Van Gogh. Добавлена возможность одновременной работы с несколькими панелями eDP. Для APU Renoir реализована поддержка работы с шифрованными буферами в видеопамяти (TMZ, Trusted Memory Zone). Добавлена поддержка горячего извлечения графических карт (hot-unplug). Для GPU Radeon RX 6000 (Navi 2x) и старых GPU AMD включена по умолчанию поддержка механизма энергосбережения ASPM (Active State Power Management), который ранее был активирован только для GPU Navi 1x, Vega и Polaris;
      • для чипов AMD добавлена поддержка разделяемой виртуальной памяти (SVM, shared virtual memory) на базе подсистемы HMM (Heterogeneous memory management), позволяющей использовать устройства с собственными блоками управления памятью (MMU, memory management unit), которые могут получать доступ к основной памяти. В том числе при помощи HMM можно организовать совместное адресное пространство между GPU и CPU, в котором GPU может получить доступ к основной памяти процесса;
      • добавлена начальная поддержка технологии AMD Smart Shift, динамически меняющей параметры энергопотребления CPU и GPU на ноутбуках с чипсетом и видеокартой AMD для форсирования производительности при играх, редактировании видео и 3D-рендеринге;
      • в драйвере i915 для видеокарт Intel включена поддержка чипов Intel Alderlake P;
      • добавлен драйвер drm/hyperv для виртуального графического адаптера Hyper-V;
      • добавлен графический драйвер simpledrm, использующий для вывода фреймбуфер EFI-GOP или VESA, предоставляемый UEFI-прошивкой или BIOS. Основным назначением драйвера является предоставление возможности графического вывода на начальных стадиях загрузки, до того как станет возможным использование полноценного DRM-драйвера. Драйвер также может использоваться как временное решение для оборудования, для которого пока отсутствуют родные DRM-драйверы;
      • добавлена поддержка компьютера-моноблока Raspberry Pi 400;
      • добавлен драйвер dell-wmi-privacy для поддержки поставляемых в ноутбуках Dell аппаратных выключателей камеры и микрофона;
      • для ноутбуков Lenovo добавлен WMI-интерфейс для изменения параметров BIOS через sysfs /sys/class/firmware-attributes/;
      • расширена поддержка устройств с интерфейсом USB4;
      • добавлена поддержка звуковых карт и кодеков AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 и Texas Instruments TAS2505. Улучшена поддержка звука на ноутбуках HP и ASUS. Добавлены патчи для снижения задержек перед началом воспроизведения звука на устройствах с интерфейсом USB.

    Источник – opennet.ru.

     ,

    10:23a
    Релиз nEMU 3.0.0 — интерфейса к QEMU, основанного на псевдографике ncurses

    Состоялся релиз nEMU версии 3.0.0.

    nEMU — это ncurses-интерфейс к QEMU, упрощающий создание, настройку и управление виртуальными машинами.
    Код написан на языке C и распространяется под лицензией BSD-2.

    Основные изменения:

    • Поддержка -netdev user (hostfwd, smb). Позволяет без каких-либо дополнительных настроек сети предоставить доступ во внешнюю сеть виртуальной машине.
    • Поддержка QMP команд snapshot-{save, load, delete}, появившихся в QEMU-6.0.0. Теперь для работы со снепшотами больше нет необходимости патчить QEMU.
    • Корректное отображение форм ввода и редактирования параметров при изменении размера окна (баге было семь лет, ImageGrafIn героически пофиксил).
    • API для удаленного управления виртуальными машинами. Теперь nEMU умеет принимать JSON команды через TLS сокет. Описание методов находится в файле remote_api.txt. Также был написан Android клиент. С помощью него в данный момент можно запускать, останавливать и подключаться к виртуальным машинам по протоколу SPICE.

    ( читать дальше... )

     ,

    7:04p
    Выпуск статического анализатора NoVerify

    Представлен новый релиз статического анализатора для PHP NoVerify, разрабатываемого компанией «В Контакте».

    Изначально NoVerify разрабатывался для анализа исходного кода социальной сети ВКонтакте, размер которого превышает 5 миллионов строк кода. Поэтому преимущества данного статического анализатора можно заметить при большой кодовой базе (если размер проекта меньше 100 тысяч строк кода, рекомендуется использовать другие статические анализаторы).

    NoVerify способен обрабатывать примерно 200 тысяч строк кода в секунду на современном компьютере (intel i5 + ssd).

    ( читать дальше... )

     

    8:13p
    INSTEAD 3.4.0

    Вышла новая версия интерпретатора простых текстографических приключений INSTEAD.

    Движок позволяет разрабатывать текстографические игры, игры с текстовым вводом и простые двухмерные игры. Код игр пишется на языке Lua. Для графического отображения и звукового сопровождения используется SDL2. Движок распространяется под лицензией MIT и портирован на множество платформ.

    Версия 3.4.0 содержит множество изменений, среди которых:

    • учёт DPI;
    • поддержка HiDPI экранов;
    • поддержка адаптивных тем;
    • исправление ошибок.

     , , , ,

    << Previous Day 2021/08/31
    [Calendar]
    Next Day >>

Linux.org.ru: Новости   About LJ.Rossia.org