Главная / Блоги / alexu's blog
Ottawa Linux Symposium: День второй
НЕОБХОДИМОСТЬ В ПОДСИСТЕМЕ АСИНХРОННОГО СЕТЕВОГО ВВОДА\ВЫВОДА
Я пошел на презентацию "Необходимость в Асинхронном Сетевом I/O", где Ульрих Дреппер долго и скучно рассказывал о таковой необходимости, а также показывал сигнатуры функций на слайдах. Указав на недостатки epoll_wait(), такие как работа только с дескрипторами файлов, невозможность работы с sync примитивами, очередями, асинхронными запросами ввода-вывода и сигналами, он сказал, что, дескать, было бы хорошо иметь такой вот унифицированный интерфейс.
Так что когда он закончил говорить, то на вопросы осталось не более чем 3 минуты. Люди продолжали задавать вопросы, указывая на потенциальные проблемы предложенного решения. Я тоже задал вопрос о kevent'aх. Конечно же, не сам придумал - люди подсказали. Ульрих ответил утвердительно, что знаком с ними (с kevent'aми, не с людьми с ЛОРа :-) Когда же я его спросил, почему он не считает keventы альтернативой предложенному решению, он упомянул что-то невнятное о том, что, дескать, keventы это больше похоже на epoll и слишком тяжеловесны и что-то еще. Возможно, если это не так, автору keventов стоит еще раз обратиться к Ульриху и пообщаться с ним поподробнее - быть может, тот не до конца уяснил возможности keventов.
В любом случае, дискуссия по поводу асинхронного ввода-вывода затянулась уже даже после презентации больше, чем на час. Ульрих стоял в коридоре, окруженный внушительной толпой, все обсуждая и дискутируя предложенные новшества.
OCFS2: КЛАСТЕРНАЯ ФАЙЛОВАЯ СИСТЕМА ОТ ORACLE
Марк Фашех начал рассказывать довольно бойко о представленной недавно OCFS2, однако быстро скатился в ненужные детали и похвалу JDB, говоря о том, что использования журналирования jdb сэкономило ему массу времени. Так что наиболее интересной частью презентации были вопросы и ответы, в которой люди обсуждали и уточняли возможности этой файловой системы и ее поведение в различных ситуациях.
АНТИФРАГМЕНТИРОВАНИЕ: ЧТО, ПОЧЕМУ И КУДА?
Гуру менеджера памяти Линукс, Мел Горман, рассказывал о способах избежать фрагментации памяти, чтобы сделать возможным использование больших страниц. Упомянул он и о том, как сложно порой объяснить людям на lkml свое видение проблемы и предложенные способы решения. Так, предложенный им первый метод был полностью дискредитирован на lkml, и поэтому он предложил второй, сделанный по рекомендациям и замечаниям. И те самые люди, которые разносили его первоначальное предложение "в пух и прах", теперь критиковали ими же самими и предложенные способы решения. В итоге Мел, потративший изрядное количество времени на разработку и тестирование обеих идей, сказал, что переработает свое первое решение и попытается объяснить его преимущества еще раз на том же lkml в ближайшем будущем.
GIT ЭКСКУРСИЯ
Йон Лоелигер (Jon Loeliger) из Freescale рассказывал об использовании git и его преимуществах над другими аналогичными системами. Когда его спросили о cogito, он упомянул, что его использование может облегчить работу с git в некоторых ситуациях, однако сам он предпочитает использовать git. Достаточно наглядно Йон объяснил причины использования данной системы управления кодом, а также рекомендуемые способы ее работы с ней.
Были продемонстрированы типичные задачи в git - клонирование репозитория, создание веток, коммиты, слияние ветвей и их стратегии, выбор отдельных возможностей. Йон сделал упор на использовании правильных почтовых клиентов при работе над созданием патчей - слишком много патчей просто отвергается из-за "нездоровых" почтовых клиентов, которые портят форматирование самостоятельно. Под правильными почтовыми клиентами, насколько я понял, подразумевались pine и mutt.
ПОЧЕМУ ПОЛЬЗОВАТЕЛЬСКИЕ ПРОГРАММЫ - ФИГНЯ (Why Userspace Sucks)
Дэйв Джоунс из РедХат, как и организаторы конференции, не ожидали, что этот доклад будет пользоваться такой популярностью. Иначе бы они организовали аудиторию побольше. Свободных мест не было нигде - ни на стульях, ни в проходах, ни вдоль стен.
Дэйв не первый задался вопросом "Почему так долго стартует система?". Однако он один из первых, кто решил поподробнее в этом разобраться. В итоге были получены следующие цифры: только при старте машины происходит примерно 70 тысяч вызовов stat(), открывается 26 тысяч файлов (через open()), и выполняется 1382 exec(). При выключении - около 23 тысяч stat() и более 8 тысяч файлов было открыто. Ужаснув участников этими цифрами и выучив комбинации клавиш по увеличению шрифтов в gnome-terminal, Дэйв продолжил уже с конкретными примерами.
HAL:
HAL был упомянут как наихудщий пример бессмысленного использования ресурсов, а именно:
- повторное чтение десятков XML файлов (в некоторых случаях - один и тот же файл был перечитан 54 раза)
- чтение файлов для устройств, которые в системе не присутствуют
- в общей сложности - 1918 open() и 7106 stat().
CUPS:
открытие и чтение всех известных ему ppd файлов, даже если принтер не подсоединен, делая в общей сложности около 2500 stat() и 500 open().
Xorg
Затем настала очередь Xorg - как раз то место, где все стало намного интереснее... Дэйв подробно рассказал, как Xorg делает сканирование PCI шин:
- сканирует /proc/bus/pci по порядку
- пробует случайные номера шин и пытается их открыть
- пробует по-порядку устройства на шинах и пытается открыть их
- делает повторное сканирование /proc/bus/pci
"ИЗВИНИТЕ!!!" - вдруг послышалось из зала... "Дайте нам час, мы исправимся!!!". В зале послышались аплодисменты и дружный смех, разрядивший обстановку. Но Дейв не унимался, и настала очередь
XFS
"Не используйте XFS!", громко выкрикнул тот же самый голос, который чуть ранее кричал "Извините"... Снова дружный смех зала был ответом...
Крестовый поход продолжился. Досталось многим гномовским приложениям: наутилусу, гамину, gnome-session'у, и т.д. "Обвинения" все те же - открытие и проверка ненужных\несуществующих файлов или открытие файлов повторно.
ШРИФТЫ
Разделавшись с файлами, Дейв принялся за шрифты. Как выяснилось, много, очень много приложений открывают файлы со шрифтами, которые абсолютно не нужны им для работы. Скопировав к себе в ~/.fonts 6000 файлов со шрифтами и запуская различные приложения, господин Джоунс считал открываемые ими файлы и представил публике неутешительные результаты.
Энергосбережение:
Дейв также рассказал, как много у Линукс проблем с энергосбережением. Так, каждые 256 мс в USB подсистеме срабатывает таймер и она выполняет код. "ИЗВИНИТЕ!"- послышался громогласный голос Грега Кроа-Хартмана. "Мы уже более бережливы, чем... были ранее" - добавил он под смешок. На встречный вопрос "А что же так?" Грег ответил, что USB устройства, работающие не по спеку не сообщают о своем присутствии и их можно обнаружить только если пробовать шину снова и снова.
В принципе, USB был не одинок - еще много других устройств занималась подобными вещами. Например, контроллер клавиатуры i8042 двадцать раз в секунду проверяет, не подключили ли к нему мышь. Или курсор, который перерисовывается 5 раз в секунду... Xorg тоже не остался в стороне. По вычислениям Дейва, Xorg пытается узнать сколько сейчас времени (с использованием gettimeofday() (спасибо, исправил) ) больше чем 1800 раз в секунду.
Множество других вещей осталось в стороне, но уверен, многие другие программы ведут себя подобным (но не подобающим) образом. В заключении Дейву задали вопрос о КДЕ, на что он ответил "я не исследовал КДЕ, я был слишком напуган результатами Gnome"...
IBM/FreeScale PowerPC
Данный BOF/демонстрация заняла 3 часа (начавшись с опозданием на полчаса). И хотя в программе было заявлено около 10 докладчиков, доклад сделан был всего один. Вернее, даже не доклад, а демонстрация.
Демонстрация одной машины. С 64ю процессорами и 128 ядрами в общей сложности. Забравшись на подиум, Бен Херреншмидт просто показал несколько слайдов с фотографиями этой машины, а затем открыл на ней шелл и скомпилировал ядро 2.4.17. За 3.5 секунды. Именно за три с половиной и именно все ядро 2.4.17. Потом сказал - нет, мол, большинство времени занимает линковка... Давайте скомпилируем 10 ядер одновременно. И скомпилировал. 10 ядер, одновременно. За 13 секунд. Вот и все презентации за три часа. Все остальное время люди кушали, выпивали, общались, и участвовали в лоторейном розыгрыше: в качестве призов были представлены Mac G5, а также различные штуковины, работающие под управлением встроенного Linux.
Так как все на этой сессии текло достаточно медленно, я успел посетить немного других. Например, демонстрацию встроенного инсталлятора Xen в Yast (не заработал, DVD отвалился и пришлось перезагружаться), а также BOF по контейнерам в Linux, на котором ребята из SWsoft'a явно доминировали, рассказывая о преимуществах OpenVZ над другими системами виртуализации.
На такой веселой ноте (или нота была навеселе? :) закончился день второй
- alexu's blog
- 3443 просмотра
Страница для печати


Кажется, про таймер и попытки обнаружить устройства -- это было не про USB, а про PS/2 (или _и_ про PS/2 тоже). Мол, единственная возможность узнать, что воткнули PS/2 клаву или мышку -- это постоянно поллить.
--kir
Чёрт, я не дочитав бросился отправлять комментарий :( Пардон
--kir
да ладно ;) некоторые люди вообще "не осилили" мой ломаный русский
Отправить комментарий