Pull to refresh

Comments 51

Поддержку многих ненужных вещей можно выпилить во время сборки ядра. Так что linux не такой уж и громоздкий.
UFO just landed and posted this here

По сути было сказано выше про spinlock и NUMA. Атомарная инструкция заставляет обращаться в память, плюс еще блокировка памяти. В общем происходит насилие шины.

Ну уж, по крайней мере, не все эти жалобы старых пердунов о том, что, видите ли, их коллеги-хипстеры айфоны обсуждают и на самокатах катаются (был тут и такой пост, да), и как там очередную пищалку-светилку на ардуино сделать, или вообще полная ахинея в духе «слышал а че за хрень такая opengl? — не, не слышал» (да, это почти дословно).

Сама статья, кстати, очень содержательная, спасибо автору.
Второе – то, что десктопы сейчас достаточно маломощные, это какой-то обычный один процессор, немножко ядер, немножко памяти, никакой NUMA, т.е. все очень просто, все очень маленькое.


Не плохо бы автора принудительно пересадить на пару лет за 486 DX2 с 8 Mb. (Мы же не звери, чтобы сразу за 286 с одним метром.) А потом поспрашивать насчёт маломощности.
Думаю, что если автора, как и любого другого хорошего специалиста, пересадить сейчас на 286, то особых проблем у них не возникнет. Просто они вернутся к подходам и методам, которые зарекомендовали себя в эпоху 286 :) Говорят, что и сейчас такое встречается: где-то недавно читал, что одна европейская сеть супермаркетов вернулась к MS DOS и соответственному железу. Они посчитали, что для элементарных кассовых операций этого достаточно. Не уверен на 100% в правдивости этой инфы, однако ИМХО в любом случае в ней полезная идея: крутой комп в супермаркете, который периодически зависает из-за невысокой квалификации кассирши — не всегда лучшее решение.
Думаю, что рабочий ПК на 486 сейчас стоит больше, чем рабочий ПК на каком нибудь несчастном производящемся селероне, и оба они дороже Raspberry. На Raspberry я бы и посадил кассиров и прочих операторов блокнота.
У сети магазинов же, скорее всего, есть ПО под DOS для работы, но нет исходников, вот они и посчитали, что проще интегрировать DOS, чем переписывать ПО под винду. Про Linux в таких местах обычно даже не знают.
Ok, возможно. К Raspberry стоит присмотреться, если цены такие, как в рувики, то м.б. можно соорудить, что-то забавное. Спасибо.
Укрзалізниця: DOS приложение в DOSBox под Linux.
Сильпо (укр. сеть суперамаркетов) — приложение на Delphi (узнаю по дефолтным иконкам).

Но если честно меня печалят больше всего синие экраны на банкоматах и когда выбивает приложение в терминале приема денег — то можно увидеть «рабочий стол» Windows. По сравнению с ними — в «Укрзалізниці» продвинутые админы (и ни одного программиста).
я когда по пол-часа ждал девушку на платформе электрички, делал так: легонько пинал раздолбанную розетку, от чего платёжный терминал перезагружался. Когда мелькуал десктоп, бысто-быстро щёлкал по «мой компьютер» на рабочем столе, отчего поверх платёжного приложения открывался проводник. Оттуда можно попасть в ишак, в нём открыть msn или как его, оттуда по рекламе пройти на арстехнику.
Когда подружка приезжала, я снова шевелил розетку, и терминал загружался в нормальный режим.
Единственная на моей памяти польза от винды и от рекламы. А нет, ещё я таким же способом на кинотеатре (не домашнем) в Angry Birds играл, пока админ не спалил. Потом он играл.
А можно поподробнее узнать о Укрзалізниці? Просто работаю на этом предприятии, и такой «порнухи» не видел. Может я чего-то не знаю?
Дату сообщения видите? За несколько лет до этого точно было. Просто если покупать билет с кассы, кассирши вбивали параметры поиска и покупки билета в страшненьком TUI, это можно было наглядно наблюдать. Позже где-то кто-то мне сказал что это в DOSBox под Linux. Но давно перестал покупать билеты с кассы, причем точно раньше 2016. Поэтому и не скажу изменилось что-то или нет, а если изменилось то когда.
Зависит от номенклатуры. Делали номенклатуру в 40к изделий на 8088 с 512к, но это была боль, т.к. там не только наименования, но и учёт прихода-наличия-расхода с отчётами «что бы закупить». Современные счётные задачи на таком просто не решить(в память не влезет миллион замеров по сотне байт просто, а читать с диска — это в этом веке не закончить). А терминал забрать код-запросить сервер-отдать полученное на экран можно хоть на ардуине делать, на то он и терминал.
Я думаю, что автор сравнивал здесь десктопы с серверами. И когда имеешь дело с десятками ядер и сотнями гигабайт оперативки, то десктопы, вдруг, становятся маломощными.
Бывают случаи, когда рабочие станции десктопами обзывают, а если вникнуть в детали, то они составляют мощный кластер ;)
>>Это табличка данных от одного из пионеров построения больших датацентров по фильтрации трафика, они работают на обычном Intel’овском железе без всяких сетевых акселераторов, и люди делают собственную ОС.
А поподробнее? Что за пионеры и ОС?
У него еще оппонент был Minix Tanenbaum.
ИМХО очень много информации для размышления, спасибо! Но позвольте немного критики по структуре статьи — на мой взгляд, не хватает выводов. Однако формат публикации позволяет добавить их, например, в ответ на данное сообщение. Мне кажется, что это будет интересно большинству читателей.
Еще раз большое спасибо за интересную статью.
UFO just landed and posted this here
Ну Интел купила Альтеру. Будут встраивать плис на платы серверов.
Это поможет?
UFO just landed and posted this here
Хорошая статья. Жаль что следить за этим практически не вероятно, например даже актуальный курс по оптимизации работы с памятью с учетом архитектуры железа (на момент курса информация была уже устаревшая) имеет такой обьем информации что изучать это на уровне прикладной разработки, почти не возможно.
В больших базах данных – Postgres, MySQL, InnoDB – в основном, используют O_DIRECT

Для справки оставлю тут: Postgres не использует O_DIRECT, а использует простой write и если надо сбросить несколько страниц из буфер менеджера делает mmap (но это редко).
Но да… у него свой Clock-SI буфер менеджер (на самом деле ещё RLU для CLOG к примеру).

О чём речь? Операционная система с некооперативной многозадачностью имеет оверхед? Логично. Давайте вынесем функции ОС в юзер спейс? Зачем же. Если вы оптимизируете железо для работы конкретно с одной единственной программой — то вам не нужна многозадачная ОС. Возьмите однозадачную. Ну или напишите сами, если не осталось ни одной. Там и кеши, и виртуальная память и всё-всё-всё будет управляться исходя из потребностей этой единственной программы, которую вам надо запустить.

А линукс такой, как он есть, потому что он создан многозадачным. Более того, задачи разные, значит нельзя оптимизировать ядро под один конкретный тип задач — нужно быть универсальным. В статье много рассказывается о том, какой громоздкий линукс, но так и не сказано, а где конкретно ошибка, что можно поменять к лучшему. Может быть какие-то алгоритмы не оптимальны? Или нужна другая архитектура? Нет, всё что мы слышим, это что одна единственная задача, запущенная на голом железе, будет работать быстрее чем если бы проходила через прослойку ОС. Удивили.
Согласен. Задача многозадачных ОС общего назначения — создание универсальных механизмов, позволяющих организовать совместный доступ задач к разделяемым ресурсам. Логично, что для этого необходимо использование определённого уровня абстракций от железа с ненулевыми накладными расходами. Но для подавляющего большинства задач эти накладные расходы действительно получаются низкими. Более того, есть такой момент, как стоимость разработки. Чем ниже уровень абстракции, тем выше стоимость разработки.

Если специфика задачи такова, что даже простое копирование данных в памяти уже является узким местом, то это не проблема конкретной ОС, это ваша проблема. Используйте ту ОС, которая больше подходит для вашей задачи, либо делайте свои реализации стека TCP/IP и т.д. Не зря же написано про «1 задача — 1 сервер».

P.S. Для работы на скоростях 10 гбит/с и выше вообще используется FPGA.
Так это одна задача очень хочет прямого доступа к поторохам. Например, к системе управления виртуальной памятью, потому что она предоставляет ряд интересных возможностей вроде пометок памяти, вызова прерываний при доступе, которые можно использовать для увеличения эффективности работы с памятью.

Авторы таких программ готовы к погружению в дебри. Так что им скорее нужна полу-библиотека, полу-ОС, которая имеет небольшой набор выполняемых функций, и даёт подменить дефолтное поведение прикладной программе, которая может поставить свои собственный процедуры вместо системных.
Теоретически, для этого подходят ROS, где всё это настраивается.
микроядерные ОС?
у них оверхед выше чем у монолитов.
Любая современная вещь — плохая штука, котороя вскоре изменится, модифицируется, исчезнет наконец
Поэтому броскость преамбулы — не более чем броскость
Является ли современная организация ОС тупиковой — скорее всего нет, тем более, что все упирается в железо, точнее в две рабочие лошадки — софт и хард, которые помимо общего тягла взаимно подтягивают друг друга.
Пока не видно особых проблем, связанных с ОС
Другое дело изменить концепцию ОС
Например, в свое время я задумывался об ОС по типу муравейника, где ядро, как матка, генерирует необходимые обработчики в каждый момент времен, которые выполнив свои задачи, исчезают, то есть структура ОС пластична в зависимости от конкретной ситуации
Любая современная вещь — плохая штука, котороя вскоре изменится, модифицируется, исчезнет наконец
Согласен.
Является ли современная организация ОС тупиковой — скорее всего нет, тем более, что все упирается в железо, точнее в две рабочие лошадки — софт и хард, которые помимо общего тягла взаимно подтягивают друг друга.
ИМХО софт давно и сильно отстает от харда. Многопоточность никак освоить многие компании не могут, но все делают вид (ИМХО) :)
Пока не видно особых проблем, связанных с ОС
ИМХО есть. Одна из первых — малая надежность. Не говорю про бортовые ОС, где сбой = фатальный исход. Но и в быту частые зависы и прочие проблемы ОС раздражают и… снижают прибыль всяких лавочек, магазинов, банков и т.д. В «Виндах» ИМХО очень мало настроек при установке. Чтобы сделать минимальную версию нужно много чистить после установки. В линуксах можно делать чудеса, но и там очень долго делать чудо. В общем везде встает куча ненужного для целей конкретного пользователя хлама, который зачастую мешает.
Другое дело изменить концепцию ОС
Например, в свое время я задумывался об ОС по типу муравейника, где ядро, как матка, генерирует необходимые обработчики в каждый момент времен, которые выполнив свои задачи, исчезают, то есть структура ОС пластична в зависимости от конкретной ситуации
Хорошая идея! Не слабо такое в линуксе сделать? ;)
Одна из первых — малая надежность

Не путайте надёжность операционной системы с надёжностью прикладного софта.
В подавляющем большинстве случаев в ненадёжности виноват именно софт.
Частый случай: два компа похожей конфигурации, на них одинаковые прикладное ПО и ОС. На одном ОС встала нормально, а на другом криво. На первом проблем почти нет, а на втором постоянные проблемы. Беда в том, что многие ОС норовят встать криво. Эта тенденция («норов») и называется ненадежностью. К сожалению, если ОС встала нормально, это не значит, что ее не искривит со временем :(
Зачастую низкая надёжность ОС == низкая надёжность драйверов, именно они зачастую вызывают BSOD'ы и KP.

К чему претензии в WIN — это к системе апдейтов, которые очень громоздкие, обновляют одни файлы при разных апдейтах, начинают конфликтовать сами с собой и вообще перестают устанавливаться, загнав систему обновления в какой-то циклический маразм. Более простой вариант «последняя версия библиотек для W7.Pro.x64» как аналог пакетов в Linux была бы предпочтительней по крайней мере по надёжности.
Dependency Hell в Linux пока ещё никто не отменял.
Есть подозрение что * Hell будет в любом * при достаточно большом количестве.

Во всей этой истории меня напрягает только дублирование функционала.
К примеру хотелось бы как то иметь возможность переиспользовать буфер менеджер из ядра эффективным способом.

UFO just landed and posted this here

Нда. Читать стенограмму живого выступления без промежуточного редактирования и причесывания текста сложно. У статьи получился очень невнятный и ломанный язык. Но, мысли, высказываемые в докладе, позволяют простить все. Очень интересно было читать.

во! а я как раз хотел спросить — меня одного коробят «ивенты», «стейт машины» и «корутины»?
хорошая статья, но автор — в России живешь!
Соглашусь, что читать статью трудновато, хотя внизу статьи и имеется приписка «расшифровка выступлений». Что же тогда до расшифровки было?)

А скажите, запись выступления где-нибудь можно найти?

либо мы используем какой-то фреймворк потоковый, например, Boost.Asio


Asio, например, расшифровывается как «asynchronous I/O» и никакой это не фреймворк и никакой не потоковый.

Доклад сумбурный, беспорядочный поток сознания.
Я всегда хотел получше узнать Linux (ядро и ОС) более глубоко. Посоветуйте где почитать. Потому что из этого доклада я не понял практически ничего.
Будем считать, что классика вроде Таненбаума Вами уже освоена.

Конкретно по ядру линукса есть две неплохие книжки, которые правда уже устарели, новых редакций не выходит, но заменить их нечем. В первую очередь это Linux Kernel Development, написанный Robert Love, и Understanding The Linux Kernel от O'Reilly.

Если так глубоко лезть не хочется, но интересно узнать как работает линукс, как на нём писать системные приложения, и чем Linux отличается от POSIX — то рекомендую Michael Kerrisk: The Linux Programming Interface.

Все книги давно уже стали классикой и легко ищутся в сети.
Таненбаума я ещё не читал. «Современные операционные системы», 4 изд. — это оно?
Нет, имелся в виду Operating Systems: Design and Implementation
Sign up to leave a comment.