Занимался сегодня переустановкой Линукса на своём домашнем компьютере и наткнулся на свои полуторагодичной давности упражнения по ускорению биллинга:
Заказчик: один из топ-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. После того, как я представил это решению ИТ-директору Заказчика, он попросил меня никому о нём не рассказывать - как-то ему неуютно стало. Понятно, что не он принимал решение о покупке супердомов и флагманского биллинга, и принималось оно не по причине суперэффиктивности этих решений, но ведь, при случае, с него могли и спросить... Вот такая вот модернизация страны, ёлки-палки... О механизмах принятия решений в нашем телекоме читайте открытое письмо Е.Юрченко.
А супердом от остальной нагрузки на эти 8 часов был освобожден?
ОтветитьУдалитьВообще создание партицированной таблички, индексов + загрузка в нее 16 гб сырых данных + тупой запрос в лоб с аггрегацией и пересечения со справочником направлений все равно не дадут 8 часов и супердома. Максимум полчасика на обычном 4ядерном айбиэме series-x средней руки за $2-3k.
Я практически уверен что в конечном итоге такое время решения вылилось из некомпетентности отдельновзятого студента, которому в топ-1-биллинг-софтваре доверили модуль обработки cdr.
Освобожден, так как ничем другим ему не положено было заниматься - был куплен, что называется, "под задачу"...
ОтветитьУдалитьНасчет кривости рук студента - не уверен. По моему мнению, подкрепленному богатой практикой, весь набор средств ИТ в энтерпрайзе (и софт, и хард) заточен под раздувание расходного бюджета, а не на создание эффективных систем.