Правило прошлого прогноза Фагина

Непредусмотрительность — вот точная наука.

— Какая красивая пара, — произнёс Сергей, бесцеремонно разглядывая грудь Марины. ...

Mozilla развивает собственную систему машинного перевода
Mon, 21 Oct 2019 07:14:55 +0300

Samsung свернул проект "Linux on DeX"
Sun, 20 Oct 2019 22:54:09 +0300

Ubuntu исполнилось 15 лет
Sun, 20 Oct 2019 19:38:18 +0300

Первый выпуск Pwnagotchi, игрушки для взлома WiFi-сетей
Sun, 20 Oct 2019 08:40:38 +0300

Усиление изоляции между сайтами в Chrome
Fri, 18 Oct 2019 10:25:59 +0300

Компания Cloudflare реализовала модуль для поддержки HTTP/3 в NGINX
Thu, 17 Oct 2019 18:51:04 +0300

В Firefox появятся новые индикаторы безопасности и интерфейс about:config
Thu, 17 Oct 2019 10:40:04 +0300

Дистрибутив Trident переходит с BSD-системы TrueOS на Void Linux
Thu, 17 Oct 2019 07:51:57 +0300

WireGuard и andOTP удалены из Google Play из-за ссылок на приём пожертвований
Wed, 16 Oct 2019 21:21:15 +0300

Arch Linux готовится к применению алгоритма сжатия zstd в pacman
Wed, 16 Oct 2019 20:20:58 +0300

Khronos предоставил возможность бесплатной сертификации открытых драйверов
Wed, 16 Oct 2019 09:23:42 +0300

Mozilla прекращает поддержку поисковых дополнений на базе технологии OpenSearch
Wed, 16 Oct 2019 07:42:45 +0300

Язык Perl 6 переименован в Raku
Tue, 15 Oct 2019 20:47:16 +0300

В Debian 11 предлагается по умолчанию задействовать nftables и firewalld
Mon, 14 Oct 2019 21:53:29 +0300

Недоработка в Python-скрипте могла привести к неверным результатам в более 100 публикациях по химии
Sun, 13 Oct 2019 11:02:13 +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.0294 71.1299 0.5886 63.9542

НОВОСТИ: Выпуск дистрибутива Ubuntu 19.10 Thu, 17 Oct 2019 18:57:45 +0300

Доступен релиз дистрибутива Ubuntu 19.10 "Eoan Ermine". Готовые образы созданы для Ubuntu, Ubuntu Server, Lubuntu, Kubuntu, Ubuntu Mate, Ubuntu.

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