вторник, 28 сентября 2010 г.

Супердома, оракулы и четыре/восемь гавков (SuperDomes, Oracles and four or eight gawks)...

Занимался сегодня переустановкой Линукса на своём домашнем компьютере и наткнулся на свои полуторагодичной давности упражнения по ускорению биллинга:

Заказчик: один из топ-3 операторов фиксированной связи России

Задача: подсчет интерконнект-биллинга

Описание задачи и текущий способ решения:

1) Берется месячный объем CDR от всех транзитных голосовых коммутаторов Заказчика (все CDR - нормализованные), около 160 000 000 записей, общий объем файлов ~16GB.

2) На основании обработки всех записей составляется следующий результирующий файл:

-------------------------------------------------- 
зонаА,зонаB,к-во вызовов,длительность 
7495,7812,1993029,3465931
..... 
---------------------------------------------------

содержащий пары зон (зона оригинатор - только Россия [четыре первые цифры номера A], терминирующая зона - Россия или зарубеж [плавающее количество цифр в начале номера B]), кол-во вызовов между зонами пары и длительность этих вызовов.

3) В настоящее время задача решается на HP SuperDome оборудованном 32 процессорами HP PA-RISC, 32GB RAM, с подключенным через 2*4Gbit/s хранилищем данных HP XP 12000. СУБД Oracle и ПО биллинга от флагманского разработчика российских билинговых систем из С-Пб. Стоимость системы исчисляется цифрой с шестью нулями в долларах.

4) Решение задачи занимает как минимум 8 часов (не считая времени, которое нужно для подъема всех CDR в базу данных, Заказчик постеснялся назвать это время).

Моё решение:

1) Весь исходный текст системы и результат прогона на тестовых данных (~4GB) представлен на картинке вот здесь.

2) Использовался мой офисный подстольный компьютер: Mac Pro, 2*2,.66GHz Dual Core Intel Xeon, 17GB RAM, 1*SATA HDD 7200 RPM. СУБД не использованы, вместо них четыре стандартных Unix-утилиты: gawk, make, cut, sort.

3) Результат - 5 мин 48 секунд. На полном объеме данных было бы 20 - 22 минуты. Если прогонять этот тест на 8 ядерной машине, то можно добится 2-кратного улучшения результата. SSD-диски и RAID могут дать еще выигрыш в два раза. Т.е. 5 минут - вполне достижимо. Я это проверю сегодня вечером дома на своем домашнем компьютере с описанными характеристиками (стоимостью $3200).

4) Итого - 96-кратное ускорение при минимум 312-кратном снижении затрат.

 

5) Проверил на домашней машине:

ASUS Z7S MB Two 2.0GHz Quad Core Intel Xeon 5405 24 GB FB-DIMM PC2-5300 DRAM LSI MegaRAID with 256MB cache RAID 0 with 2 * 64GB Samsung solid-state disks (SSD) Ubuntu Linux 8.10 64 bit

Как и ожидал, получил почти четырехкратное (по сравнению с Маком) ускорение: задача решается на том-же наборе тестовых данных за 1 минуту 23 сек. Снимок здесь. Таким образом, полный интерконнент на 16-ти гиговом наборе будет сделан за время примерно равное 5-6 минутам против 8 часов на 32-х процессорном HP SuperDome за 3 млн долларов (плюс неизвестная, но немалая сумма за лицензии Оракла и флагманского биллинга). 

P.S. После того, как я представил это решению ИТ-директору Заказчика, он попросил меня никому о нём не рассказывать - как-то ему неуютно стало. Понятно, что не он принимал решение о покупке супердомов и флагманского биллинга, и принималось оно не по причине суперэффиктивности этих решений, но ведь, при случае, с него могли и спросить... Вот такая вот модернизация страны, ёлки-палки... О механизмах принятия решений в нашем телекоме читайте открытое письмо Е.Юрченко.

суббота, 25 сентября 2010 г.

Превращаем Acer Aspire Revo в медиаплейер (Turning Acer Aspire Revo into media player)

Благодаря наличию HDMI и видеоподсистеме nVIDIA ION,  этот маленький неттоп может проигрывать HD-видео не напрягая слабосильный процессор Atom и, учитывая невысокую стоимость, является идеальным кандидатом для домашнего медиаплейеера. Ведь, в отличие от "железных" медиаплейееров типа Tvix'a, Iconbit'a и иже с ними, на этот неттоп можно поставить софт, способный проиграть даже самую заковыристую матроску.

8bbff6de5d4957622fa3ab11a65276cd_250x250.jpg

 

Я купил не самый дешевый вариант этого неттопа (в принципе, для использования в качестве медиаплейеера можно купить Revo в комплектации, которая почти в два раза дешевле). Все зависит от того, какого размера диск вам нужен, нужна ли вам беспроводная мышь и клавиатура (и даже джойстик).

Windows 7, несмотря на то, что она работает немного быстрее Висты, всё-равно безобразна. Более того, если мы собираемся использовать эту машинку только для просмотра фильмов и прослушивания музыки, то винда, особенно установленная производителем, в этом случае просто противопоказана - помимо общей тормознутости при загрузке, просыпании ото сна и просто работы, вас гарантированно замучают всякие макаффи и нортоны постоянными предложениями то обновить базу вирусов, то проверить диск на вирусы, то купить лицензию - и всё это всплывающими окнами во время просмотра фильма! Да, конечно, всё это можно отключить или деинсталлировать, но я предпочёл более радикальный метод.

После долгого использования VLC (на Маке, на Линуксе и Винде) в качестве проигрывателя фильмов, в итоге я в нем почему-то разочаровался (корявый интерфейс+не всегда хорошее качество воспроизведения) и я стал искать ему замену. Замена нашлась в виде очень попсово выглядящего, но тем не менее превосходно работающего XBMC. Помимо того, что он доступен для всех платформ (Mac, Linux, Win), существует версия XBMC  в виде live cd, который можно установить вместо стандартной операционки. Что я и сделал, хотя в паре мест пришлось поковыряться.

 

Итак, рецепт превращения следующий:

Prerequisites

  1. Чистая флэшка размером минимум 2 Гига
  2. Компьютер с виндой

Шаг 1. Качаем дистрибутивы

Шаг 2. Готовим флэшку

  • Распаковываем архив с XBMC Live, получаем файл с iso-образом диска xbmc-9.11-live-repack.iso
  • Запускаем UNetbootin, выбираем "Disk Image", "ISO", нажимаем на кнопочку с тремя точками и находим скачанный и распакованный образ xbmc-9.11-live-repack.iso; далее убеждаемся, что в качестве "Drive:" выбрана чистая флэшка (например, "E:\") и давим ОК
  • Дожидаемся завершения работы UNetBootin

Шаг 3. Готовимся к инсталляции без CD-ROM

Acer Revo не имеет CD/DVD привода. Поэтому, если у вас нет внешнего привода или вам лень заниматься записыванием болванки, или вы хотите быть eco-friendly, то я предложу как обойтись при установке XBMC без записывания образа диска на болванку. Итак:

  • Запускаем cmd.exe, переходим в директорию, где лежит образ диска.
  • Делаем:
mkdir E:\iso
copy xbmc-9.11-live-repack.iso E:\iso
Всё, на этом подготовка флэшки закончена. Переходим теперь собственно к сносу винды и установке XBMC.

Шаг 4. Инсталляция

  • Вставляем флэшку в любой USB-разъём Revo
  • Включаем (или перегружаем Revo), при старте компьютера давим на Del - входим в настройку BIOS
  • Находим там порядок загруки, ставим USB-флэш на первое место, жёсткий диск на второе, далее не важно (можно и не менять порядок загрузки навсегда, а воспользоваться при загрузке клашей F12 и выбрать флэшку для загрузки)
  • Сохраняем изменения нажатием F10 и грузимся с флэшки
  • Ждем появления следующей картинки:

xbmc-ion-0009.jpg

  • Выбираем "Install XBMCLive to disk". ВНИМАНИЕ: Попрощайтесь с виндой и всеми файлами, которые сейчас у вас есть на Revo - они будут безвозвратно стёрты!
  • Выбираем язык установки (выберите English, так будет проще):

xbmc-ion-0011.jpg

  • Далее выберите регион (можно Россию, не принципиально):

xbmc-ion-0011-1.jpg

  • Далее вам предложат автоопределить клавиатуру, не соглашайтесь, выберите её тип сами (Russian-Russian).
  • Теперь главное - разбиение и форматирование диска (выбираем Guided - use entire disk):

xbmc-ion-0013.jpg

  • Выбираем диск:

xbmc-ion-0014.jpg

  • И форматируем его (назад пути нет!):

xbmc-ion-0015.jpg

  • Во время форматирования смотрим примерно на такую картинку:

xbmc-ion-0016.jpg

  • После чего вы скорее всего получите экран с вопросом:  “Load CD-ROM driver from removable media?”. Как увидели его, нажимайте ALT-F2, и введите следующие команды:

mkdir /mnt/usb /mnt/iso
mount –t vfat /dev/sdb /mnt/usb
mount –t iso9660 –o loop /mnt/usb/iso/xbmc-9.11-live-repack.iso /mnt/iso
  • Нажмите ALT-F1 и заполните следующие экраны следующим образом:

Load CD-ROM driver from removable media? <No>
Manually select CD-ROM module and device> <Yes>
Module needed for accessing the CD-ROM: none
  • Device file for accessing the CD-ROM: /dev/loop0
  • Дальше соглашаемся со всем по умолчанию, и заводим пользователя (назовём его, например xbmc, с паролём, например, xbmcpass).
  • Перегружаемся - XBMC установлен на вашем Revo.

Шаг 5. Обновление драйверов, звук через HDMI

Без этого шага звук через HDMI работать не будет - нужно обновить драйвер nVidia. Делаем это так:

  • Включаем Revo, ждём загрузки XBMC
  • Нажимаем CTRL-ALT-F2
  • Вводим логин и пароль, которые мы завели на Шаге 4 (например, xbmc и xbmcpass)
  • Далее вводим следующие команды:
sudo service xbmc-live stop
wget http://us.download.nvidia.com/XFree86/Linux-x86/256.25/NVIDIA-Linux-x86-256.25.run
sudo sh ./NVIDIA-Linux-x86-256.25.run
sudo reboot
  • Дожидаемся загрузки XBMC, идём в меню настроек звука SYSTEM->SYSTEM->AUDIO OUTPUT. Выставляем:

Audio output: Digital
Audio output device: hdmi
Passtrough output device: iec958

Всё, можете наслаждаться!