Comments 51
По сути было сказано выше про spinlock и NUMA. Атомарная инструкция заставляет обращаться в память, плюс еще блокировка памяти. В общем происходит насилие шины.
Сама статья, кстати, очень содержательная, спасибо автору.
Боже! Пишите ещё!
Второе – то, что десктопы сейчас достаточно маломощные, это какой-то обычный один процессор, немножко ядер, немножко памяти, никакой NUMA, т.е. все очень просто, все очень маленькое.
Не плохо бы автора принудительно пересадить на пару лет за 486 DX2 с 8 Mb. (Мы же не звери, чтобы сразу за 286 с одним метром.) А потом поспрашивать насчёт маломощности.
У сети магазинов же, скорее всего, есть ПО под DOS для работы, но нет исходников, вот они и посчитали, что проще интегрировать DOS, чем переписывать ПО под винду. Про Linux в таких местах обычно даже не знают.
Сильпо (укр. сеть суперамаркетов) — приложение на Delphi (узнаю по дефолтным иконкам).
Но если честно меня печалят больше всего синие экраны на банкоматах и когда выбивает приложение в терминале приема денег — то можно увидеть «рабочий стол» Windows. По сравнению с ними — в «Укрзалізниці» продвинутые админы (и ни одного программиста).
Когда подружка приезжала, я снова шевелил розетку, и терминал загружался в нормальный режим.
Единственная на моей памяти польза от винды и от рекламы. А нет, ещё я таким же способом на кинотеатре (не домашнем) в Angry Birds играл, пока админ не спалил. Потом он играл.
А поподробнее? Что за пионеры и ОС?
Linux TorvaldsКлассика… :-)
Еще раз большое спасибо за интересную статью.
В больших базах данных – Postgres, MySQL, InnoDB – в основном, используют O_DIRECT
Для справки оставлю тут: Postgres не использует O_DIRECT, а использует простой write и если надо сбросить несколько страниц из буфер менеджера делает mmap (но это редко).
Но да… у него свой Clock-SI буфер менеджер (на самом деле ещё RLU для CLOG к примеру).
А линукс такой, как он есть, потому что он создан многозадачным. Более того, задачи разные, значит нельзя оптимизировать ядро под один конкретный тип задач — нужно быть универсальным. В статье много рассказывается о том, какой громоздкий линукс, но так и не сказано, а где конкретно ошибка, что можно поменять к лучшему. Может быть какие-то алгоритмы не оптимальны? Или нужна другая архитектура? Нет, всё что мы слышим, это что одна единственная задача, запущенная на голом железе, будет работать быстрее чем если бы проходила через прослойку ОС. Удивили.
Если специфика задачи такова, что даже простое копирование данных в памяти уже является узким местом, то это не проблема конкретной ОС, это ваша проблема. Используйте ту ОС, которая больше подходит для вашей задачи, либо делайте свои реализации стека TCP/IP и т.д. Не зря же написано про «1 задача — 1 сервер».
P.S. Для работы на скоростях 10 гбит/с и выше вообще используется FPGA.
Авторы таких программ готовы к погружению в дебри. Так что им скорее нужна полу-библиотека, полу-ОС, которая имеет небольшой набор выполняемых функций, и даёт подменить дефолтное поведение прикладной программе, которая может поставить свои собственный процедуры вместо системных.
Поэтому броскость преамбулы — не более чем броскость
Является ли современная организация ОС тупиковой — скорее всего нет, тем более, что все упирается в железо, точнее в две рабочие лошадки — софт и хард, которые помимо общего тягла взаимно подтягивают друг друга.
Пока не видно особых проблем, связанных с ОС
Другое дело изменить концепцию ОС
Например, в свое время я задумывался об ОС по типу муравейника, где ядро, как матка, генерирует необходимые обработчики в каждый момент времен, которые выполнив свои задачи, исчезают, то есть структура ОС пластична в зависимости от конкретной ситуации
Любая современная вещь — плохая штука, котороя вскоре изменится, модифицируется, исчезнет наконецСогласен.
Является ли современная организация ОС тупиковой — скорее всего нет, тем более, что все упирается в железо, точнее в две рабочие лошадки — софт и хард, которые помимо общего тягла взаимно подтягивают друг друга.ИМХО софт давно и сильно отстает от харда. Многопоточность никак освоить многие компании не могут, но все делают вид (ИМХО) :)
Пока не видно особых проблем, связанных с ОСИМХО есть. Одна из первых — малая надежность. Не говорю про бортовые ОС, где сбой = фатальный исход. Но и в быту частые зависы и прочие проблемы ОС раздражают и… снижают прибыль всяких лавочек, магазинов, банков и т.д. В «Виндах» ИМХО очень мало настроек при установке. Чтобы сделать минимальную версию нужно много чистить после установки. В линуксах можно делать чудеса, но и там очень долго делать чудо. В общем везде встает куча ненужного для целей конкретного пользователя хлама, который зачастую мешает.
Другое дело изменить концепцию ОСХорошая идея! Не слабо такое в линуксе сделать? ;)
Например, в свое время я задумывался об ОС по типу муравейника, где ядро, как матка, генерирует необходимые обработчики в каждый момент времен, которые выполнив свои задачи, исчезают, то есть структура ОС пластична в зависимости от конкретной ситуации
Одна из первых — малая надежность
Не путайте надёжность операционной системы с надёжностью прикладного софта.
В подавляющем большинстве случаев в ненадёжности виноват именно софт.
К чему претензии в WIN — это к системе апдейтов, которые очень громоздкие, обновляют одни файлы при разных апдейтах, начинают конфликтовать сами с собой и вообще перестают устанавливаться, загнав систему обновления в какой-то циклический маразм. Более простой вариант «последняя версия библиотек для W7.Pro.x64» как аналог пакетов в Linux была бы предпочтительней по крайней мере по надёжности.
Во всей этой истории меня напрягает только дублирование функционала.
К примеру хотелось бы как то иметь возможность переиспользовать буфер менеджер из ядра эффективным способом.
Нда. Читать стенограмму живого выступления без промежуточного редактирования и причесывания текста сложно. У статьи получился очень невнятный и ломанный язык. Но, мысли, высказываемые в докладе, позволяют простить все. Очень интересно было читать.
А скажите, запись выступления где-нибудь можно найти?
либо мы используем какой-то фреймворк потоковый, например, Boost.Asio
Asio, например, расшифровывается как «asynchronous I/O» и никакой это не фреймворк и никакой не потоковый.
Доклад сумбурный, беспорядочный поток сознания.
Конкретно по ядру линукса есть две неплохие книжки, которые правда уже устарели, новых редакций не выходит, но заменить их нечем. В первую очередь это Linux Kernel Development, написанный Robert Love, и Understanding The Linux Kernel от O'Reilly.
Если так глубоко лезть не хочется, но интересно узнать как работает линукс, как на нём писать системные приложения, и чем Linux отличается от POSIX — то рекомендую Michael Kerrisk: The Linux Programming Interface.
Все книги давно уже стали классикой и легко ищутся в сети.
Современная операционная система: что надо знать разработчику