Мир создан не для того, чтобы мы терпели неудачи. Мир создан так, чтобы мы добивались побед.

Встречаются два программиста и один другому сообщает потрясающую новость: ...

Разработчики FreeNAS представили дистрибутив TrueNAS SCALE на базе Linux
Thu, 04 Jun 2020 23:26:16 +0300

В пакете с Firefox для Fedora появилась поддержка ускорения декодирования видео через VA-API
Thu, 04 Jun 2020 09:01:49 +0300

Результаты пересборки пакетной базы Debian при помощи Clang 10
Wed, 03 Jun 2020 20:09:06 +0300

Lenovo обеспечит поставку Ubuntu и RHEL на всех моделях ThinkStation и ThinkPad P
Wed, 03 Jun 2020 10:49:24 +0300

Linux Mint будет блокировать скрытую от пользователя установку snapd
Wed, 03 Jun 2020 09:54:11 +0300

Устаревание корневого сертификата AddTrust привело к сбоям в системах с OpenSSL и GnuTLS
Sun, 31 May 2020 10:14:31 +0300

Среда проектирования игр Godot адаптирована для работы в web-браузере
Sat, 30 May 2020 08:44:56 +0300

Доступна плата Raspberry Pi 4 с 8 ГБ ОЗУ
Thu, 28 May 2020 23:21:36 +0300

В Chrome 84 по умолчанию включат защиту от назойливых уведомлений
Thu, 28 May 2020 22:06:48 +0300

В Reiser5 анонсирована поддержка Burst Buffers (Data Tiering)
Tue, 26 May 2020 13:14:26 +0300

Проект по формированию базы поддерживаемого оборудования для BSD-систем
Mon, 25 May 2020 11:02:04 +0300

Линус Торвальдс перешёл с Intel на AMD на своей основной системе
Mon, 25 May 2020 10:14:10 +0300

70% проблем с безопасностью в Chromium вызваны ошибками при работе с памятью
Sun, 24 May 2020 13:12:50 +0300

Детские online-соревнования по Linux
Sat, 23 May 2020 23:37:04 +0300

Создатели WordPress инвестировали $4.6 млн в компанию, развивающую Matrix-клиент Riot
Fri, 22 May 2020 10:59:49 +0300

Новости OPENNET
Новости

Группа исследователей из немецких университетов опубликовала результаты эксперимента, в ходе которого на разных языках программирования было разработано 10 вариантов типового драйвера для 10-гигабитных сетевых карт Intel Ixgbe (X5xx). Драйвер работает в пространстве пользователя и реализован на языках C, Rust, Go, C#, Java, OCaml, Haskell, Swift, JavaScript и Python. При написании кода основное внимание уделялось достижению максимально возможной производительности с учётом особенностей каждого языка. По функциональности все варианты идентичны и состоят примерно из 1000 строк кода. Наработки проекта распространяются под лицензией BSD.

Вариант драйвера на языке Rust оказался очень близок по производительности к эталонному драйверу на языке Си. При нагрузке с единовременной отправкой блоков по 32 пакета Rust-драйвер немного отставал, но в тестах с более чем 32 пакетами в блоке по скорости практически не отличался от драйвера на Си и демонстрировал производительность на уровне обработки 28 млн пакетов в секунду на сервере с CPU Xeon E3-1230 v2 3.3 GHz.

Следующую нишу по производительности заняли драйверы на языках Go и С#, которые показали достаточно близкие результаты (драйвер на Go выигрывал в тестах с блоками, включающими до 16 пакетов, и стал немного проигрывать в тестах с более чем 16 пакетами в блоке). При 256 пакетах в блоке пиковая производительность драйвера на C# составила примерно 28 млн пакетов в секунду, а драйвера на Go примерно 25 млн пакетов в секунду.

Далее с достаточно близкими результатами следовали драйверы на

Java, OCaml и Haskell, которые уже заметно отставали от ранее рассмотренных вариантов и не смогли преодолеть планку в 12 млн пакетов в секунду. Ещё большее отставание показали драйверы на Swift и JavaScript, которые смогли обработать потоки на уровне 5 млн пакетов в секунду.

Замкнул рейтинг драйвер на языке Python, который смог обработать всего 0.14 млн пакетов в секунду. Реализация на Python была использована для оценки скорости работы интерпретаторов без JIT и без специфичных оптимизаций (код выполнялся с использованием CPython 3.7 и не был совместим с PyPy, но отмечается, что оптимизация структур хранения данных могла бы повысить производительность примерно в 10 раз).

Дополнительно были проведены тесты на время задержки, которые показывали эффективность буферизации и влияние сборщика мусора. При тестировании измерялась задержка после перенаправления каждого пакета драйвером по сравнению с точно известным временем отправки. Лидерами по-прежнему стали драйверы на Си и Rust, результаты которых были практически неотличимы для потока в 1 млн пакетов в секунду (примерно 20 µs). Хорошо проявил себя драйвер на языке Go, который лишь немного отстал от лидеров и также держался на уровне 20 µs. Драйвер на C# показал задержки примерно в 50 µs.

Самые большие задержки показали драйверы на JavaScript и Java (задержки более 300 µs).

Исследование проведено с целью оценки возможности разработки драйверов и компонентов операционной системы на языках более высокого уровня, чем Си. В настоящее время 39 из 40 проблем при работе с памятью в Linux приходятся на драйверы, поэтому вопросы применения более безопасного языка и выноса драйверов из ядра в пространство пользователя остаются актуальными и производители уже активно экспериментируют в этом направлении (например, Google разработал TCP-стек для ОС Fuchsia на языке Go, компания CloudFlare создала реализацию протокола QUIC на языке Rust, компания Apple перенесла TCP-стек на мобильных устройствах в пространство пользователя).

В ходе проведённой работы сделан вывод, что язык Rust является лучшим кандидатом для разработки драйверов. Предоставляемые в Rust возможности позволяют избавиться от проблем, возникающих из-за низкоуровневой работы с памятью, ценой снижения производительности примерно на 2%-10% по сравнению с драйверами на языке Си. Языки Go и C# также признаны пригодными для создания системных компонентов, в ситуациях когда приемлемы задержки на уровне долей миллисекунд, вызванные применением сборщика мусора.

9.6907 77.3245 0.6323 69.0151

НОВОСТИ: Выпуск криптографической библиотеки LibreSSL 3.2.0 Mon, 01 Jun 2020 21:14:36 +0300

Разработчики проекта OpenBSD представили выпуск переносимой редакции пакета LibreSSL 3.2.0, в рамках которого развивается форк OpenSSL, нацеленный на обеспечение более высокого уровня безопасности. Проект LibreSSL ориентирован на качественную поддержку протоколов SSL/TLS с удалением излишней функциональности, добавлением дополнительных средств защиты и проведением значительной чистки и переработки кодовой базы. Выпуск LibreSSL 3.2.0 рассматривается как экспериментальный, в котором развиваются возможности, которые войдут в состав OpenBSD 6.8.

???????@Mail.ru Opera Firefox INFOBOX - хостинг Google Chrome