Archive for February 2009

Нескучно живём

Есть у нас некое программное обеспечение, занимающееся пакетной обработкой документов в разных форматах, с СУБД в качестве backend – MS Access или MS SQL. Это самое некое ПО планируется запускать на “облаке” Amazon EC2. Постольку поскольку в стране кризис, а документов очень много, процесс необходимо оптимизировать таким образом, чтобы уменьшить затраченное машинное время, и, следовательно, и количество долларов, перетекшее из нашего кармана в карман Amazon.

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

Первое, и самое очевидное – пробуем разные конфигурации EC2. Они различаются количеством доступной памяти и вычислительных ядер (виртуальных, как и всё прочее). Прирост есть, но более мощные конфигурации стоят дороже, поэтому смысл эксперимента несколько портится. Однако, сравниваем цифры, выбираем лучший тип машины для наших целей, в прицелом на то, что этот метод “оптимизации” можно скомбинировать с чем-то из нижеследующего.

Второе – создаём RAID, т.е. striped drive встроенными средствами Windows. В основе лежит здравое предположение, что диски, пусть и виртуальные, в группе должны работать быстрее. Как позже выяснилось, ненамного. Что на этот диск поместить? Разумеется, файл подкачки, папку %TEMP% и собственно исходные и конечные данные. Потом пробуем туда же положить базы СУБД

Далее – чрез более быстрые диски – к звездам! Если RAID быстрее обычного диска, то диск виртуальный должен быть вообще на высоте. Создаём, кладем всё то же, что и в предыдущем примере. Быстро, блин! Виртуальный диск, понятно, не бесплатен, однако соотечественники в этом отношении не подкачали, создав не хуже и дешевле.

А как насчет того, чтобы создать несколько виртуальных дисков? Пробуем. Конечно, RAID из них не сделаешь, но зато можно положить все ключевые компоненты (как называлось – %TEMP%, своп, данные БД и данные) на разные диски и попробовать. Бодрячком, как говаривал Сява.

Пятое – пробуем заменить MS Access, использовавшийся до этого, на MS SQL. Это был офигенный рывок в производительности, особенно если разместить базы на виртуальном диске.

До этого мы пользовали SQL Express. Он бесплатный, поэтому не вполне enterprise-grade. Пробуем поменять его на Standard. ПРОФИТа в нашем клиническом случае [почти] нет.

Замечаем, что наше ПО написано без учёта многопоточности, соответственно, использует только одно ядро. Ну и ладно, у нас будет своя параллелизация – с блекджеком и шлюхами. Пробуем запустить несколько копий. Не работает – проверяет наличие имиджа себя в памяти. Переименовываем *.exe файлы в четыре разных (по числу ядер) – работает, но глючит. Тьфу, неинтересно.

Пробуем запустить те же самые экзешники в окружении Terminal Server. TS использует какой-то хитрый механизм, предоставляя каждому приложению свою виртуальную копию реестра, окружения, и всего прочего, т.о. копии становятся более изолированными друг от друга и чудесно работают даже безо всяких переименований. Читаем заклинания: change user /install, потом change user /execute, стало быстрее.

Так как программка использует Ms Office, пробуем даунгрейдить 2007 до 2003. Стало быстрее раза в полтора.

Ну и под конец дня, люто ненавидя всех, пробуем вообще унести SQL сервер на другую виртуальную машину. В нашем случае оказалось не принципиально.

Когда писался этот текст, стало известно, что мы не будем использовать сие супер-ПО из-за каких-то непоняток с лицензированием, а будем использовать софт от другой фирмы, изначально написанный для параллельной обработки. Завтра будет ещё один весёлый день…

Еда как техногенная катастрофа

17 октября 1814 года, Лондон. На пивоваренном заводе цистерна, содержащая 610 кубометров пива, разрушается, вызывая эффект домино и стремительное разрушение других цистерн. В результате волна из 1470 кубометров пива вырывается на улицы, крушит всё, два дома разрушены полностью. Погибли девять человек – восемь утонули и один отравился алкоголем.

15 января 1919 года, Бостон. Огромная ёмкость с патокой, из-за конструктивных ошибок и необычайно жаркой погоды лопается. 8 700 000 литров патоки, предназначенной для производства спирта, образуют волну высотой 4,5 метра, которая проходит по улицам со скоростью 56 км/ч, оставляя за собой слой липкой, сладкой массы глубиной до 90 сантиметров. Район превращается в гиганскую липкую ловушку для мух, погибает 21 человек, в том числе два ребёнка, 150 ранены. Глазированные трупы были неузнаваемы, два тела так и не удалось опознать. Некоторые утверждают, что запах патоки в том районе можно почувствовать и сегодня – если погода достаточно жаркая.

P.S. Пришли ко мне живые спамеры с бирж постеров. Удалять некрасиво – живые же люди пишут, стараются, но и игнорировать тоже нехорошо. Не забыть сделать на следующей неделе <noindex> в дополнение к nofollow, чтобы некоторым жизнь мёдом не казалась…