Сообщество - GNU/Linux

GNU/Linux

1 151 пост 15 631 подписчик

Популярные теги в сообществе:

129

Линус Торвальдс опроверг проблемы с планировщиком задач, всплывшие в тесте производительности

Линус Торвальдс опроверг проблемы с планировщиком задач, всплывшие в тесте производительности Benchmark, Linux, Линус Торвальдс

Разработчик игр Malte Skarupke опубликовал сравнение производительности блокировок на основе Mutex и Spinlock при использовании различных планировщиков задач. Тесты показали аномально большие задержки при использовании Spinlock с планировщиком задач, используемым в Linux по умолчанию. Автор тестов сделал вывод, что планировщик задач Linux имеет проблемы, которые негативно сказываются на работе игр, создаваемых для сервиса Google Stadia, в котором игры выполняются на GPU в облачном окружении, а клиенту в потоковом режиме лишь транслируется содержимое экрана с частотой до 60 кадров в секунду. При подобных условиях необходимо обеспечить своевременный вывод кадров на экран и задержки, превышающие миллисекунду, становятся заметны.


К обсуждению тестов подключился Линус Торвальдс, который назвал их мусором ("pure garbage") и примером того, как можно, полностью не разобравшись в теме, получить показатели, не отражающие реальную действительность. Spinlock является низкоуровневым примитивом, который в пространстве пользователя нужно использовать с большой осторожностью и полностью разбираясь в деталях, иначе можно получить то, что было продемонстрировано автором теста. Разработчикам игр Линус посоветовал не применять spinlock и не пытаться городить собственные системы блокировки на его основе, а использовать существующие проверенные механизмы, информирующие систему об ожидании освобождения блокировки для исключения влияния планировщика.


Надстройки на базе Spinlock же можно использовать только при полной уверенности, что планировщик не прервёт их выполнение. Применяемые в тестах блокировки на основе spinlock реализованы через самодельную обвязку, работающую в пространстве пользователя. Планировщик задач может в любой случайный момент забрать управление во время выполнения этой обвязки и переключиться на выполнение другой задачи. Так как измерение производительности выполняется на основании абсолютных значений таймера, определённые в тестах задержки охватывают не только задержки в обработчике блокировки, но и код, который был выполнен в другом контексте, т.е. измеряют не только то, что пытался измерить автор теста, но и "шум" от других вычислений в системе.


Автор теста попытался возразить Линусу, указав на то, что применение собственных систем блокировки на базе spinlock часто используется на практике в играх, так как при использовании более простых планировщиков, чем в Linux, тесты показывают более высокую производительность. Линус возразил, что планировщик Linux является универсальным, оттачивался десятилетиями и оптимизирован не только для рабочего стола и игр, но и для других видов нагрузки, например, для серверных систем, поэтому учитывает множество нюансов при планировании выполнения задач.


Добавление специфичных оптимизаций, которые позволят снизить задержки в играх Google Stadia, могут повысить отзывчивость в конкретном случае, но скорее всего приведут к снижению эффективности планировщика в целом. Например, планировщик Windows ведёт себя лучше в обсуждаемых тестах, так как он значительно проще планировщика Linux и оптимизирован в основном для задач, специфичных для рабочего стола.

Показать полностью
12

Кросс-компиляция под Windows для Linux

Просьба подсказать.

Появилась задача портировать софтину из Windows в Linux и дальше поддерживать её далее в этих двух ипостясях. Так как до этого о Linux я знал только что он есть :) пришлось экспресс-обучиться основным упражнениям... собственно выбрать/поставить, организовать удалённый рабочий стол, ssh, ключи т.п.

Но дальше заклинило на создании инфраструктуры разработки. Имея нехилый такой опыт в кросс-разработке софта на контроллерах, в т.ч и на ARM, виделся мне и здесь такой же путь: компилируем в Windows -> проверяем основной функционал -> переключаем набор/меняем компилятор -> компилируем для целевого устройства -> заливаем на целевое устройство -> проверяем специфику работы с железом и всё.

Но! Долгий гуглёж показал, что здесь такого пути нет. Потому как создать под Windows бинарник, который можно будет запустить в Linux, нереально. Точнее, вроде бы как и можно, но для этогго потребуется что-то типа оболочки (Cygwin), из-под неё запуск toolchain, который, при удачных обстоятельствах, сделает бинарник и т.п. Интегрировать всё это в привычный IDE и вовсе, типа, непосильная задача... В основном советуют всем этим не заморачиваться, а компилировать целевую сборку на целевой машине или, хотя, бы в эмуляторе (WSL, например). Ну и, соответственно, весь пакет исходников туда-сюда носить.

Уважаемы гуру! Подскажите нубу - действительно ли так всё плохо, или я замыленным взглядом чего-то не заметил? Как-то несколько неожиданны были такие сложности в, казалось бы, простом деле :(

И да - софтина не консоль, а GUI, так что то, что предлагается в VS 2019, не поможет...

И ещё да -  вроде бы какой-то похожий механизм предусмотрен в Qt Creator. Даже Deploy на Linux-машину получилось настроить. Но вот только деплоить туда нечего - не могу найти как создать бинарник...

Показать полностью
948

Electronic Arts банит игроков BattleField 5, которые запускают игру под Linux

Electronic Arts банит игроков BattleField 5, которые запускают игру под Linux Игры, Dxvk, EA Games, Battlefield

В сообществе Lutris, развивающем инструментарий для упрощения установки Windows-игр в Linux, обсуждается инцидент с блокировкой компанией Electronic Arts учётных записей пользователей, применявших пакет DXVK (реализация Direct3D через API Vulkan) для запуска игры BattleField 5 в Linux. Пострадавшие пользователи предположили, что применявшиеся для запуска игры DXVK и Winе были восприняты как сторонне ПО, которое может быть использовано для читинга или изменения игры.


Блокировка подтверждена несколькими пользователями, которые впоследствии обратились в службу поддержки Electronic Arts и получили ответ, что случай был изучен сотрудниками и вынесено решение, что блокировка произведена обоснованно и санкции с учётной записи не будут сняты. В качестве обоснования блокировки был упомянут пункт правил, запрещающий продвигать, поощрять и принимать участие в деятельности, связанной с хакингом, взломами, фишингом, применением эксплоитов, читингом, распространением поддельного ПО или поддельных виртуальных игровых ресурсов.


Тем временем, доступен для тестирования четвёртый кандидат в релизы Wine 5.0. Релиз ожидается через одну или две недели. По сравнению с выпуском Wine 5.0-RC3 закрыто 15 отчётов об ошибках и внесено 44 исправления.

Показать полностью 1
42

Сравнение производительности HTTP/1.1, HTTP/2 и HTTP/2 + Server Push

Опубликованы результаты изучения производительности различных методов извлечения коллекции ресурсов, используя для обращения к серверу протоколы HTTP/1.1, HTTP/2 и HTTP/2 + Server Push. В исследовании также оценено влияние на производительность нахождение запрашиваемых данных к кэше браузера и манипуляции ресурсами на уровне логики работы приложения (сведение ресурсов в единый JSON-блок).


Тестирование производительности выполнения 25 запросов показало в целом предсказуемые результаты - заметное отставание запроса через HTTP/1.1 при пустом кэше и лидирование отдачи ресурсов одним блоком (тесты с меткой "compound"). Производительность Firefox и Chrome была примерно на одном уровне, но наличие данных в кэше не привело к ожидаемому росту эффективности

Сравнение производительности HTTP/1.1, HTTP/2 и HTTP/2 + Server Push Benchmark, Тест, Http, Длиннопост

Но в тесте на обработку 500 запросов всплыло заметное отставание Chrome от Firefox при передаче большого числа запросов и отставание Firefox от Chrome при применении механизма Server Push и в ситуации использования HTTP/2 при наличия большей части данных в браузерном кэше. Chrome показал более эффективную работу с кэшем, а Firefox более эффективную обработку внешних запросов.

Сравнение производительности HTTP/1.1, HTTP/2 и HTTP/2 + Server Push Benchmark, Тест, Http, Длиннопост
Сравнение производительности HTTP/1.1, HTTP/2 и HTTP/2 + Server Push Benchmark, Тест, Http, Длиннопост

По итогам тестов сделан вывод, что HTTP/2 позволяет достаточно эффективно обрабатывать раздельные запросы большой коллекции ресурсов. Отличия производительности простых схем раздельной отдачи ресурсов от методов, в которых ресурсы агрегируются в один блок, не столь существенны, чтобы оправдать значительное усложнение логики обработки на стороне приложения и сервера. Агрегирование имеет смысл только в ситуациях, в которых производительность имеет наивысший приоритет. Когда важнее упрощение логики и простой API, имеет смысл использовать раздельную обработку ресурсов.


Другим выводом является то, что браузерный кэш при использовании HTTP/2 не оказывает значительного влияния на производительность обработки запросов (полное выполнение 501 запроса оказалось медленнее выполнения 51 запроса при 90% наполнении кэша всего в 1.2 раза в Firefox и 2.3 раза в Chrome). Использование Server Push не показало существенной выгоды в Firefox, но оказалось эффективным при загрузке большого числа ресурсов в Chrome. Авторы исследования также отметили, что оптимизация серверной части оказывает более существенное влияние на производительность, чем оптимизация выполняемого в браузере клиентского кода.

Показать полностью 3
3

KDE и GNOME... Wayland и X.Org...

Всем привет! Хочу выбрать окружение для себя, остановился пока-что на GNOME и Plasma.


GNOME как по мне более удобная «из-коробки». Plasma более настраиваемая, но как по мне немнго усложненная. Обе они поддерживают Wayland. GNOME с ним работает прекрасно а Plasma имеет мелкие баги (не работает Global Menu (хотя он и GNOME Wayland-е нет), menubar-ы GTK приложений не нормально выглядат (внизу будет скриншот)).

В Plasma-е более лего поставить тему на GTK приложения, чем поставить тему на Qt приложения на GNOME.


Сейчас мой главный вопрос это о Wayland и X.Org. «Wayland все еще не готов» или «Так говорят только те, кто не использовал его»?


Можете мне помочь определится?


ВОТ СКРИНШОТ ТОЙ ПРОБЛЕМЫ С PLASMA:

KDE и GNOME... Wayland и X.Org... Linux, Gnome, Kde, Xorg, Wayland, Qt, Gtk, Themes
Показать полностью 1
24

Представлен Bonsai, сервис синхронизации устройств для GNOME

Представлен Bonsai, сервис синхронизации устройств для GNOME Red Hat, Gnome

Кристиан Хергерт (Christian Hergert), автор интегрированной среды разработки GNOME Builder, ныне работающий в Red Hat, представил экспериментальный проект Bonsai, нацеленный на решение задачи по синхронизации содержимого нескольких устройств, на которых используется GNOME. Пользователи могут использовать Bonsai для связывания нескольких Linux-устройств в домашней сети, когда необходимо получить доступ к файлам и данным приложений на всех компьютерах, но при этом не хочется передавать свои данные в сторонние облачные сервисы. Код проекта написан на языке Си и поставляется под лицензией GPLv3.


Bonsai включает фоновый процесс bonsaid и библиотеку функций libbonsai для предоставления сервисов, напоминающих облачные. Фоновый процесс может быть запущен на основной рабочей станции или постоянно работающем в домашней сети мини-компьютере Raspberry Pi, подключённом к беспроводной сети и накопителю для хранения данных. Библиотека используется для организации доступа приложений GNOME к сервисам Bonsai при помощи высокоуровневого API. Для связывания с внешними устройствами (другие ПК, ноутбуки, телефоны, устройства интернета-вещей) предложена утилита bonsai-pair, позволяющая сгенерировать токен для подключения к сервисам. После связывания организуется шифрованный канал (TLS) для обращения к севисам в котором применяются сериализированные запросы D-Bus.


Bonsai не ограничен только предоставлением совместного доступа к данным и также может использоваться для создания доступных для нескольких систем хранилищ объектов с поддержкой частичной синхронизации между устройствами, транзакциями, вторичными индексами, курсорами и возможностью наложения специфичных для каждой системы локальных изменений поверх общей совместной БД. Общее хранилище объектов построено на базе API GVariant и LMDB.


В настоящее время предложен только сервис для доступа к файловому хранилищу, но в дальнейшем планируется реализовать и другие сервисы для доступа к почте, календарю-планировщику, заметкам (ToDo), альбомам с фотографиями, коллекциям музыки и видео, системе поиска, резервному копированию, VPN и т.п. Например, при помощи Bonsai на разных компьютерах в приложениях GNOME можно будет организовать работу с синхронизированным календарём планировщиком или общей коллекцией фотографий.

Показать полностью 1
146

Доступна файловая система Reiser5

Доступна файловая система Reiser5 Файловая система, Open source

Доступна для тестирования файловая система Reiser5 с поддержкой логических томов на локальной машине. Основное новшество - это параллельное масштабирование (scaling out), которое осуществляется не на блочном уровне, а средствами файловой системы.


Как преимущество данного подхода заявлено отсутствие недостатков, присущих связкам FS+RAID/LVM и непараллельным ФС (ZFS, Btrfs), таких как проблема свободного места, проседание производительности при заполнении тома свыше 70%, устаревшие алгоритмы компоновки логических томов (RAID/LVM), не позволяющие эффективно распределять данные по логическому тому. В параллельной ФС перед добавлением устройства в логический том, его необходимо отформатировать при помощи стандартной утилиты mkfs.


В Reiser5 используется O(1)-аллокатор свободных блоков. Максимальная стоимость любой операции по поиску свободного блока не зависит от размера логического тома. Возможно просто и эффективно скомпоновать логический том из блочных устройств, разных по размеру и пропускающей способности. Распределение данных по таким устройствам происходит при помощи новых алгоритмов (т.н. "фибер-страйпинг"), предложенных российским математиком и программистом Эдуардом Шишкиным.


Порция запросов ввода-вывода, направленных на каждое устройство равна его относительной ёмкости, назначаемой пользователем, так что логический том заполняется данными "равномерно" и "справедливо". При этом меньшие по ёмкости блочные устройства получают меньше блоков для хранения, а устройства с меньшей пропускной способностью не становятся "бутылочным горлышком" (как это происходит, к примеру, в RAID-массивах).


Добавление устройства в том и удаление устройства из тома сопровождается перебалансировкой, сохраняющей "справедливость" распределения. При этом порция мигрируемых данных также равна отностительной ёмкости добавляемого(удаляемого) устройства. Скорость миграции нефрагментированных данных близка к скорости записи на диск. Возможно параллельное обслуживание всех блочных устройств, входящих в логический том, с применением индивидуального подхода к каждому из них (дефрагментация для НЖМД, издание Discard-запросов для SSD, и т.п.). Мониторинг свободного места на логическом томе производится при помощи стандартной утилиты df(1). Помимо этого пользователю предоставляется возможность отслеживать свободное место на каждом устройстве-компоненте логического тома.


Все операции с логическими томами (добавление, удаление устройств и т.п.) атомарны и реализованы при помощи штатных средств работы с транзакциями в Reiser4. Правильное "развёртывание" тома после прерваной такой операции регламентировано инструкциями. На данный момент в Reiser5 пока нет средств управления off-line (отмонтированными) томами, поэтому пользователям предлагается пока самостоятельно хранить и обновлять конфигурации их логических томов. Такую конфигурацию легко приготовить для примонтированного тома при помощи утилиты работы с логическими томами, входящей в состав пакета reiser4progs.


Из планируемого:

Распределение метаданных по нескольким подтомам;

Проверка/восстановление логических томов утилитой fsck (путём модернизации старой её версии);

Пользовательское управление распределением и прозрачной миграцией данных, имеющее большое значение для HPC-приложений (Burst Buffers);

Контрольные суммы данных и метаданных;

3D-снимки (snapshots) логических томов с возможностью отката не только регулярных файловых операций, но и операций над томами (таких как добавление и удаление устройств);

Глобальные (networking) тома, агрегирующие устройства на разных машинах.

Показать полностью
76

2020 - год перемен

Новый год, поздравляю! Такая красивая дата: 2020, с этим событием коррелирует еще одно: прекращение поддержки Python 2.7

2020 - год перемен Linux, Python, Отсчет

Что это означает? Во-первых, больше не будут опубликовываться новые документации по Python 2.7 на python.org. Во-вторых, больше не будет патчей и обновлений интерпретатора этой версии, обновлений модулей под него и вообще не будут происходить никаких изменений. На форумах также пишут, что в мае 2020-ого начнется работа по переписыванию утилит Ubuntu с py2.7 на 3.7/3.6.

Снова всем счастья и удачных начинаний!

Показать полностью 1
Отличная работа, все прочитано!