Тим Берд (Tim Bird), инженер компании Sony и участник группы разработки встраиваемых систем в Linux Foundation, опубликовал подробное руководство (PDF, 550 Кб) по тюнингу производительности файловых систем Ext4, Btrfs и F2FS с учётом выбора планировщиков ввода/вывода, для достижения оптимальной производительности на накопителях eMMC/SSD. В статье досконально проанализированы доступные опции и представлены тесты производительности, демонстрирующие эффект, достигнутый при использовании каждой опции. В частности, изучен эффект от монтирования с такими опциями, как "mount -o noatime", "mount -o discard", "tune2fs -O ^has_journal", "mount -o data=writeback", "mount -o nobarrier", "mount -o stripe=, mkfs -E stripe-width=", "mount -o ssd", "mount -o ssd_spread". Оценено влияние выбора планировщиков ввода/вывода noop, deadline, cfq, row. В итоге, правильный выбор планировщика и опций монтирования позволил увеличить производительность при выполнении некоторых тестов от 20% до 400%. При этом универсального набора
Аарон Сейго (Aaron Seigo), основной разработчик KDE-оболочки Plasma, сообщил о проведении ряда оптимизаций, связанных с уменьшением потребления памяти и ускорением выполнения операций с файлами. В процессе работы Plasma используется большое количество файлов с диска, например, при чтении QML-стилей, использовании плазмоидов или загрузке изображений при отображении визуальных тем. В рамках проекта libplasma2 Аарон решил реализовать поддержку кэша обращений к файловой системе. Дополнительно были переработаны классы Package с целью экономии памяти, благодаря использованию структур меньшего размера и минимизации дублирования данных за счет организации совместного использования несколькими объектами. Результат оказался впечатляющим: время выполнения 100 тыс. операций копирования и удаления сократилось с 2700мс до 37мс, а 100 тыс. операций копирования, проверки и удаления - с 3900мс до 40мс. К сожалению внесенные изменения основаны на подвергнутом рефакторингу коде классов Package и PackageStructure и не могут
Как известно, одной из проблем DNS-сервера BIND 9 является очень медленный запуск при большом числе обслуживаемых DNS-зон. Если для сотен зон загрузка длится около минуты, то для сотен тысяч зон на запуск может уйти несколько часов (для миллиона зон - около 10 часов). Как оказалось, подобное поведение вызвано ошибкой разработчиков. После внесения изменений время запуска сервера с 500 тысячами зон сократилось с пяти с половиной часов до 2-3 минут, при росте потребления памяти на 2%. Исправление будет включено в состав будущих выпусков 9.8.1, 9.6-ESV-R5 и 9.7.4. Проблема была вызвана неверным выбором размера пула одновременно выполняемых в BIND внутренних задач. При загрузке для обслуживания каждой зоны создается своя внутренняя задача, в рамках которой кроме разбора данных выполняются такие требующие времени действия, как отправка SOA-запросов master-серверам и отправка NOTIFY-уведомлений slave-серверам, сброс на диск дампа динамических зон и генерация DNSSEC-сигнатур. Так как по умолчанию число одновременно
Представлена новая открытая утилита AMDOverdriveCtrl, предназначенная для управления частотой GPU и памяти для видеокарт AMD/ATI, поддерживающих технологию OverDrive (Radeon HD 2000 и более новые карты). Для взаимодействия с видеокартой в утилите используется библиотка AMD Display Library (ADL). Утилита поддерживает управление частотой GPU и памяти, дает возможность производить мониторинг температуры GPU у изменять скорость вращения кулера. Поддержка OverDrive была интегрирована в проприетарный пакет AMD Catalyst 8.8, но возможности по тонкой настройке и слежением за перегревом там ограничены. В то время как, интерфейс AMDOverdriveCtrl, который написан с использованием wxWidgets, специально оптимизирован для "разгона" (overclock), так как позволяет более полно (в ручном режиме) и наглядно контролировать влияние изменения частоты на температуру чипа. Тем, кто заинтересован разгоном видеочипсетов AMD/ATi, можно дополнительно посоветовать похожие программы: rovclock и atipower для старых чипсетов, а также
Разработчики социальной сети Facebook представили проект "HipHop" - новый открытый транслятор для языка PHP, распространяемый в рамках свободной лицензии PHP. HipHop трансформирует код PHP скриптов в высоко оптимизированное представление на языке C++, пригодное для дальнейшей компиляции при помощи g++ в машинные инструкции. В настоящее время HipHop используется для обработки около 90% запросов в сети Facebook. В состав пакета входит транслятор кода, переработанный PHP runtime и набор переписанных с целью повышения производительность стандартных библиотек и расширений. По заявлению разработчиков использование HipHop позволяет уменьшить нагрузку на CPU примерно на 50%. Обратной стороной высокой производительности является принципиальное отсутствие поддержки некоторых PHP конструкций, таких как eval(). HipHop содержит более 300 тыс. строк кода и 5 тыс. unit-тестов, загрузить исходные тексты транслятора можно будет через несколько часов с сервиса GitHub. Проект создан как универсальная альтернатива
Видеозапись выступления с рассказом об устройстве инфраструктуры проекта Facebook, работающего на стандартном LAMP стеке (Linux, Apache, MySQL, PHP), при этом наиболее нагруженные серверные компоненты написаны на C++, Erlang и Java. Из недр Facebook выросли такие открытые проекты, как система агрегирования логов с большого числа серверов Scribe, библиотека для построения web-сервисов Thrift, парсеры FBML (Facebook Markup Language), FQL (Facebook Query Language) и FBJS (Facebook Javascript), патчи для улучшения производительности memcached, распределенное хранилище ThruDB, интерактивный shell phpsh, система профилирования PHP скриптов XHProf, библиотека для встраивания PHP скриптов в C++ программы, распределенное хранилище данных cassandra, утилита flvtool++ для изменения мета-данных в FLV файлах и т.д.
Для Linux ядра представлены патчи с реализацией подсистемы анализа производительности, использующей в своей работе данные из специальных PERFMON регистров современных процессоров, появившихся в CPU начиная с Intel Core 2 и отражающих такие статистически данные как число выполненных инструкций, распределение попаданий данных во внутренний кеш, качество работы предсказательной логики CPU. Достоинство задействования аппаратных счетчиков производительности в возможности проведения операции профилирования без использования ptrace и без замедления работы на выполнение сопутствующих вычислений. Несмотря на то, что дизайн новой подсистемы ориентирован на упрощенный доступ к счетчикам производительности из пользовательских приложений, он предусматривает и возможность будущего расширения для реализации полного спектра возможностей. Для работы со счетчиками представлен только один новый системный вызов - sys_perf_counter_open(), все основные операции после открытия счетчика выполняются через стандартные функции read()
Презентация по организации работы инфраструктуры Wikipedia. Для обеспечения работы сайта, обслуживающего 7 миллиардов запросов в месяц задействовано 250 web-серверов (squid в качестве акселератора, Apache, PHP+APC, memcached) и 150 серверов СУБД (MySQL). Поддержкой всей инфраструктуры занимаются 7 инженеров. Все MySQL серверы разделены на 3 группы - обеспечение работы английской версии энциклопедии, 19 самых больших wiki и все 764 остальных языка. Внутри групп для разбиения данных по конечным серверам используется шардинг (сегментирование по определенному признаку), для хранения мета-данных, линков и пользовательских аккаунтов задействован один большой MySQL сервер. Каждый из MySQL серверов реплицирован на несколько slave систем, на которые сливается нагрузка по операциям чтения.
"Cuzillion: Check your zillion web pages" - разработчики Google представили web-приложение Cuzillion, предназначенное для определения узких мест, влияющих на скорость загрузки web-страницы в различных браузерах, например, из-за невозможности параллельной обработки некоторых элементов. Кроме того, можно отметить выход статьи "Ajax performance analysis" в которой рассказано о выявлении и исправлении проблем с производительностью в Ajax приложениях. В качестве средств для анализа используются Firebug и YSlow.
Опубликованы несколько интересных заметок с результатами оценки нового "Barracuda" формата InnoDB таблиц, представленного в недавно выпущенном релизе плагина InnoDB: "Testing InnoDB “Barracuda” format with compression" - оценка производительности нового формата InnoDB, с задействованием средств сжатия на лету (данные загружались на 30-50% медленнее, но зато на диске занимают на 70% меньше места); "Real-Life Use Case for “Barracuda” InnoDB File Format" - по другой оценке, использование нового формата InooDB позволило значительно снизить нагрузку на систему ввода/вывода. 60Гб база после конвертации стала занимать 5Гб, на несколько порядков возросла скорость выполнения запросов с выборкой по первичному ключу. Несколько других заметок: "Efficient Boolean value storage for Innodb Tables" - сравнение эффективности упаковки нескольких флаговых полей в MySQL таблицах (сравнивались типы bit(1), tinyint(4) и char(0)). В результате, оказалось, что bit(1) и tinyint(4) в InnoDB имеют