Разработчик из компании Intel представил (https://lkml.org/lkml/2014/5/5/686) для обсуждения и рецензирования в списке рассылки разработчиков ядра Linux упрощённую реализацию (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... сетевого стека, рассчитанную на использование на маломощных встраиваемых системах. Разработка выполнена в процессе экспериментов по запуску Linux на системах с небольшим объёмом оперативной и постоянной памяти, таких как платы на базе процессоров Intel Quark (http://en.wikipedia.org/wiki/Intel_Quark), в которых может поставляться 2-4 Мб памяти.
В текущем виде, включение в сборку сетевого IPv4-стека Linux приводит к увеличению размера примерно на 400 Кб, что ставит крест на использовании традиционного стека на системах с 2 Мб памяти. Применение легковесного сетевого стека LWIP (http://lwip.wikia.com/wiki/LwIP_Wiki), работающего в пространстве пользователя, приводит к увеличению потребности в памяти каждого связанного с ним приложения примерно на 100 Кб. По мнению разработчиков, штатный сетевой стек ядра Linux сам по себе достаточно компактный, но раздувается из-за большого числа поддерживаемых функций.
Главная идея разработчиков из Intel связана с предоставлением возможности сборки урезанной версии сетевого стека, содержащей только минимально необходимую функциональность. Многие из расширенных возможностей штатного сетевого стека Linux востребованы только на серверных системах и могут быть удалены без негативного влияния на работу клиентских приложений. Такой урезанный стек может успешно конкурировать с LWIP.
Так как применение ifdef для исключения каждой порции излишнего кода отмечено как очень трудоёмкая задача, при создании патча разработчики Intel активно полагаются на использование техники оптимизации на этапе связывания (LTO). Основные ссылки на вызов опциональных компонентов экранируются через ifdef, а весь оставшийся без вызова используемый код чистится силами компилятора. Для некоторых возможностей, которые невозможно просто удалить, созданы упрощённые аналоги. В итоге, применение подготовленного патча с включением LTO-оптимизаций позволило сократить размер полнофункционального сетевого стека до 170 Кб.
Планируется подготовить три опции сборки:
- Урезанный универсальный стек;
- Подмножество стека для работы клиентских приложений. Из стека будет удалена (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... поддержка таких возможностей, как fastopen (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... XPS (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... и GRO offload (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... сокращен (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... размер всех hash-таблиц, задействованы (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... упрощённые таблицы маршрутизации, прекращено (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... использование mmap, прекращено накопление TCP-метрик (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... и статистики для SNMP (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g...- Максимально урезанный стек для встраиваемых систем, требующий запуска специально адаптированных приложений. При включении данной опции будет удалена поддержка rtnetlink (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... (оставлен только ioctl), ethtool (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... LPF-фильтров (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... raw-сокетов (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g... и ping-сокетов (https://git.kernel.org/cgit/linux/kernel/git/ak/linux-misc.g....
URL: https://lkml.org/lkml/2014/5/5/686
Новость: http://www.opennet.me/opennews/art.shtml?num=39721
они 80386 возродили? до чего людей кризис довёл...
Хм, а стОит ли экономить на памяти (ну добавьте ещё пару-тройку метров), и при этом рубать шашкой сетевой стек направо и налево. Чревато ведь. А то наклепают стотыщ мильонов копеечных девайсов, из них 99,9% без возможности обновления прошивки. А потом - упс, мы ж там в пару десятках мест, оказывается, за стек повылазили, и у нас теперь ботнеты из кофемолок, умных лампочек и гаражных ворот.
> Хм, а стОит ли экономить на
>наклепают стотыщ мильонов копеечных девайсов
>А потом - упс,и PROFFITT. Intel же.
> мы ж там в пару десятках мест, оказывается, за стек повылазили, и у нас
Да чё мелочиться, давай уж тогда везде Core_i7 и Unity ставить. Ну чтоб наверняка. И обновлять i7 до i9 чтобы гаражные ворота продолжали открываться и не тормозили. Это же так необходимо подключиться к воротам по VNC и пинговать kernel.org.
хрен чего на таком ботнете еще запустишь :)
Ну туча мошки может сожрать лося
> у нас теперь ботнеты из кофемолок, умных лампочек и гаражных ворот.Не смешно. Камеры наблюдения например уже ищутся в гугле по характерным кейвордам. Теперь можно порулить чьей-нибудь камерой наблюдения, ибо болванам которые их ставят, забыв установить хоть какой-то пароль и в голову не приходит что интернет - он, оказывается, для всех, поэтому крутить их супер-пупер камеру во все стороны теперь может каждый встречный :). Я разок так нашел секурити-камеру в здании которое я знаю даже, которая точно не фэйк. Никогда бы не подумал что охрана там настолько упыри.
>> у нас теперь ботнеты из кофемолок, умных лампочек и гаражных ворот.
> Не смешно. Камеры наблюдения например уже ищутся в гугле по характерным кейвордам.
> Теперь можно порулить чьей-нибудь камерой наблюдения, ибо болванам которые их ставят,
> забыв установить хоть какой-то пароль и в голову не приходит что
> интернет - он, оказывается, для всех, поэтому крутить их супер-пупер камеру
> во все стороны теперь может каждый встречный :). Я разок так
> нашел секурити-камеру в здании которое я знаю даже, которая точно не
> фэйк. Никогда бы не подумал что охрана там настолько упыри.Мужик, на те зарплаты нанимаются отнюдь не Сократы со Спинозами. Улавливаешь?
Ага, 80386 с энергопотреблением на порядок меньше. Мелочь, да. Игрушки же не потянет.
Что интересно, ARMы прекрасно себя чувствовали с полным сетевым стеком :). Просто этот кварк получился настолько обрубочный что видимо ему даже это сложно. Позор, x86 который дохлее ARMов.
> Что интересно, ARMы прекрасно себя чувствовали с полным сетевым стекомКакой-нибудь Cortex-M - нет. Армов много разных есть, встречаются даже SoC с сотнями килобайт памяти на борту.
> Какой-нибудь Cortex-M - нет.А у них чаще всего нет не то что MMU, у большинства даже MPU нет. При таком раскладе - накукуй тебе на этих обрубках линукс? Да еще с обкоцаным стеком? Там все-равно не будет работать без дикой долботни то за что любят линух. А кривые мегакастомные обрубки уже много лет как можно делать и без линуха. И линух лю за то что с ним всей этой долботни как раз и нет. А есть отлаженный за многие годы и фичастый протокольный стек.
> Армов много разных есть, встречаются даже SoC с сотнями килобайт памяти на борту.
И у всех них кое-что общее: без диких изгалений типа донавески кучи памяти на внешней шине Linux туда не лезет. А если воротить внешнюю шину - тогда и платить за набортный флеш ни к чему. Можно взять сразу cortex A серии и не париться.
Новость не читаем, лишь бы в комментах отметиться? Это для Quark, для носимых устройств типа часов, очков и пр.
> Это для Quark, для носимых устройств типа часов, очков и пр.Да знаешь, ARMы там и с нормальным сетевым стеком справляются неплохо.
x86 как бы тем более. Речь про память (она у тех и других одинаковая).
Вопрос в том, что если сделать маленькую hash таблицу для маршрутизации, то на web сервере будут сплошные коллизии и как следствие медленная обработка. Но пользовательскому девайсу поддерживать возможность 10тыс коннектов одновременно ценой четверти памяти не очень разумно.
mips никогда и не умирал. самое то для embedded-а.
только 8051
только хардкор
> только хардкорХардкор будет когда ты его из отдельных транзисторов научишься собирать.
Попса какая.
Из ламп и реле бы вот предложили, аналоговый - вот то было б дело.
100кб для _каждого_ приложения. Если у тебя на девайсе не только вебморда - будет 200к, 300к, 400к...
А тут - 170к итого.
Перенеси, проверь.
Да уже отклонили ее, два дня как. Ты б написал об этом в новости
Кто отклонил? Интел?
Дэвид Миллер. Читай почтовый тред по ссылке.
> При включении данной опции будет удалена поддержка ...
> raw-сокетовТо есть, Wireshark не будет работать?
> и ping-сокетов .
Хомячки будут рыдать, что LOIC перестал работать.
Зачем Wireshark на встроенной железке?
Тогда надо пойти и дальше и спросить: на кой там вообще linux?
альтернативы подскажешь?
Альтернативы чему? Тому во что превратят линух на этих носимых устройствах с таким подходом урезания? Так что обычный софт перекомпиляцией запустить нельзя будет. А если так то бери любую ртос и вперёд.
> А если так то бери любую ртос и вперёд.Хорошая заявка на эпический кластерфак ^^^.
RTOS это:
1) Сложно
2) Очень много писать
3) Нельзя заюзать готовый софт (утилиты, демоны и т.п.)Лучше всего подходит для каких-нибудь наколеночных железок с Cortex-M (STM32, LPC) с не очень сложной логикой. Даже самый простой веб-сервер я бы на RTOS заводить не взялся.
а если ещё ядро собрать, не с жирнейшей bclib, или такой же ebclib, а с компактной библиотекой musl. оно тогда и жрать меньше будет, и работать быстрее.
Хм... А как одно с другим повязано? Никак... Так что мимо...
Ядро не пользуется функциями libc. Оно актуально только для user-space.
>и жрать меньше будетДа.
>и работать быстрее
Нет.
О,дааа... там шоу:Andi Kleen:
Multiple receive queues are not needed on small systems, so allow disabling them.
David Miller:
I'm really totally, and completely, convinced that you wrote this entire patch series with your brain turned off.
I'm not applying any patch in this series Andi, come back when you have something specific and small and reasonable to discuss, rather than this huge patch bomb of total and complete crap.
Andi Kleen: Make TCP metrics optional
This is all the code that saves connection information between different sockets. Not really essential for small systems. Saves about 5.5k text
David Miller:
It is absolutely essential unless you want poor performance of TCP connections.
I'm not applying this.
давно пора!
> 2-4 Мб памятишёл 2014 год...
>> 2-4 Мб памяти
> шёл 2014 год...Специально для тебя:
----
рассчитанную на использование на маломощных встраиваемых системах
----
Даже в самой маломощной встраиваемой системе можно добавить хотя бы 32 или 64 МБ. А если нет - так нефиг туда линух пихать. В конце концов, если она уж такая маломощная, зачем ей вообще сеть? Там же придётся сигнал передавать!
> хотя бы 32 или 64 МБ. А если нет - так нефиг туда линух пихать.Да знаешь, даже ядро 3.х запускается даже на древних как мамонты деваясах с 16Мб памяти. Так что оптимизации от интеля смотрятся достаточно забавно - видимо их x86 урод в виде кварка получился совсем ни о чем.
Richard Cochran годно резюмировал>Regarding the multiplicity of RTOSs out there, all I can say is, they
all suck, especially the ones you pay money for. It would be great to
have a small Linux like OS for micro controllers and tiny micro
processors. I have looked and looked for an open source, posix like
alternative, but all I found was Nuttx, ActionOS, and RTEMS. I looked
closely at the first two, and putting aside technical issues, neither
seems to have any steam in terms of active development. RTEMS says it
has a BSD stack, and it seems to have a respectable development
effort, but I did not look too closely at it.
>There is a huge area out there (think of all the Cortex M3) that needsa real networking stack, but I don't see much hope. Minimizing Linux
is a big PITA (tons of work), and building a suitably small OS from
scratch is hopeless. As was said, it is easier just to buy a bigger
memory. The people who can't or won't (who are also building the IoT)
will just throw in some lwIP or uIP. You can imagine how secure these
systems will be.
Оказалось что запихнуть слона целиком в такую коробочку сложно, решили частями запихивать по принципу сколько влезет
Что-то много 400 и 100 килобайт. Народ для AVR Atmega328 пишет ethernet-стек, а там всего 2КБ ОЗУ и 32КБ флэша :)
> а там всего 2КБ ОЗУ и 32КБ флэша :)А теперь попробуй прицепить атмегу к билайну - wi-fi, PPTP или L2TP на выбор. И вебмордочку потом нарисуй. На пингвине то это как два пальца об асфальт...
Только это СТЭКОМ называть нельзя. Только реализацией части протокола.
> Только это СТЭКОМ называть нельзя. Только реализацией части протокола.При том примитивной и работающей только в идеальных условиях.
А зачем платить больше когда 90% встраиваемых железок имеют 1 сетевой интерфейс, работают по UDP (реже по TCP)... Нафига там все это обилие г...на? Еще бы кто пересмотрел rc.d систему или уже помог с systemd, а то идея встроить скрипты в вачдог мне понравилась... и будет сносная операционка )))
А оракл предоставит сокращённый вариант джавы? Вот тогда и поговорим
> А оракл предоставит сокращённый вариант джавы? Вот тогда и поговоримJava ME
16-bit or 32-bit CPU with a clock speed of 16 MHz or higher
At least 160 KB ROM allocated for the CLDC libraries and virtual machine
At least 8 KB total RAM available to the Java platform
Low power consumption, often operating on battery power
Connectivity to some kind of network, often with a wireless, intermittent connection and limited bandwidth
Java Card вообще работает на смарт-картах.
>[оверквотинг удален]
> Java ME
> 16-bit or 32-bit CPU with a clock speed of 16 MHz or
> higher
> At least 160 KB ROM allocated for the CLDC libraries and virtual
> machine
> At least 8 KB total RAM available to the Java platform
> Low power consumption, often operating on battery power
> Connectivity to some kind of network, often with a wireless, intermittent connection
> and limited bandwidth
> Java Card вообще работает на смарт-картах.Побольше бы платформ с Java ME, а то что не платформа то Linux ARM )))
вот же люди, сначала сами себе отрезают руки, а потом начинают придумывать протезы. ну поставьте не 2-4 мб памяти, а хотя бы 8-12 и уже всякие openwrt на том без проблем работать будут. разницы-то на копейки.
Тем более что чипы DRAM менее чем 32 Мб кажется уже просто не выпускают - даже в самой паршивой китайчине идущей на грани демпинга, порядка 15 уе за модуль - менее 32 Мб уже редкость просто.
Вы наверное будете шокированы, но 15 уе - это сейчас дороже, например, целого современного небольшого устройства с этими 16MB RAM и Линуксом, Ethernet, литиевым аккумулятором 1800 mAh (с контроллером его зарядки), двумя USB 2.0 и WiFi (b,g,n), удобным пластиковым корпусом и бесплатной доставкой из Китая в РФ.
http://wiki.openwrt.org/toh/hame/mpr-a1
http://ru.aliexpress.com/item/Wireless-3G-wifi-router-HAME-A...А там где речь идёт о 2-4 мегабайтах, обычно имеется в виду SRAM.
> Вы наверное будете шокированы, но 15 уе - это сейчас дороже, например,
> целого современного небольшого устройства с этими 16MB RAM и Линуксом, Ethernet,
> литиевым аккумулятором 1800 mAh (с контроллером его зарядки), двумя USB 2.0
> и WiFi (b,g,n), удобным пластиковым корпусом и бесплатной доставкой из Китая в РФ.Мы не будем шокированы, ибо в курсе что цена на комплектуху зависит от партии. И да, даже на этом нечто с 16Мб памяти - вполне можно запустить обычный линь 3.х и не заниматься извращениями. Более того, даже специально написано что у ряда клонов больше памяти.
> А там где речь идёт о 2-4 мегабайтах, обычно имеется в виду SRAM.
А зачем? "Как сделать дорого, бестолково и при этом сильно пободаться?" SRAM гораздо дороже за одну и ту же емкость из-за того что на 1 ячейку памяти больше транзюков. IIRC коэффициент 6 к 1 (число транзисторов в ячейке). К тому же SRAM сильно менее массовый и потому опять же дороже. А скоростной SRAM который с современными процами сможет работать на сколь-нибудь разумных wait states - вообще редкая и дорогая хрень.
>чипы DRAMВы сами ответили на свой вопрос - люди хотят уложиться внутри кеша процессора, а внешнюю память сделать не обязательной.
Я чёт не понял, они перековеркали 6 уровней OSI ?
угу. в дым. потому и отклонили. отчасти.
Короча, ждём Intel OS
Вот так программисты сходят с ума((( создают-создают, а потом...
Интел - как медведь в посудной лавке )) Вместо того, чтобы изобрести что-то тонкое и быстрое, решил подрезать стек "под себя". Как не влезающая в свадебное платье кобылица, отказывающаяся признать себя "толстой" ))
А уж их Атом-ы - вообще шедевр инженерной мысли. На 2х-ядерном с интеловской же графикой пришлось оптимизировать параметры Xorg-a (EXA,PXA, хренокса), чтобы просто посмотреть видео без тормозов на 1280*1024 (не хд-шное). На ноуте с 3-пнем спокойно открываю и смотрю "искаропки". Правда видюха - Trident )
> Интел - как медведь в посудной лавке )) Вместо того, чтобы изобрести
> что-то тонкое и быстрое, решил подрезать стек "под себя". Как не
> влезающая в свадебное платье кобылица, отказывающаяся признать себя "толстой" ))
> А уж их Атом-ы - вообще шедевр инженерной мысли. На 2х-ядерном с
> интеловской же графикой пришлось оптимизировать параметры Xorg-a (EXA,PXA, хренокса),
> чтобы просто посмотреть видео без тормозов на 1280*1024 (не хд-шное). На
> ноуте с 3-пнем спокойно открываю и смотрю "искаропки". Правда видюха -
> Trident )Просто сами X не торт. Смотри на фреймбуфер:
mplayer -vo fbdev2 porn2.avi
> mplayer -vo fbdev2 porn2.aviСовсем зажрались. Я ещё mplayer -vo aa porn1.avi не досмотрел.
Да я обычно через vlc смотрю, удобнее как-то. И скины прикручиваются, и больше форматов играет + битые\недокачанные файлы, которые mplayer просто отказывается открывать.
Что очень важно, когда льешь с торрентов тот же teenporn3.mkv, и хочется глянуть что там, чтобы зря 2 гига не тащить если что.
Да и в браузере сейчас половина видео смотриться, и там видеоускорение нужно. Поэтому желательно чтобы оно глобально работало, а не через кастомную настройку каждого приложения.
Давно пора уже забить на все и оставить один только UDP ))) этого вполне хватит для систем с 2-4Мб все равно на них ничего кроме термометра не создать...
А, дошло. Это они Торвальдсу так трансмету припомнить пытаются :]