Тесты mnesia (в задаче обработки котировок)

Dec 19, 2007 14:27

Модельная задача следующая: обрабатываем пакеты котировок по разным инструментам, формируем из них агрегаты OHLC, пишем их на диск раз в минуту.

дальше )

erlang, mnesia, тесты

Leave a comment

Comments 28

dbg December 19 2007, 12:04:17 UTC
Попробуй еще хэш поверх функциональных массивов, которые появились в R12, - помнишь, мы с тобой говорили по телефону об этом.

Reply

gaperton December 19 2007, 12:16:04 UTC
Интересная идея. Только надо разработать стратегию динамического увеличения диапазона хэша. Как это сделать эффективно, чтобы не налетель на однократный O(N) при очередной вставке, не вполне понятно.

Reply

dbg December 19 2007, 12:23:40 UTC
Они там sparse.

Reply

gaperton December 19 2007, 12:40:53 UTC
Это не решит проблемы. Если они сделаны по типу b-tree, то чтобы не жрать в недецких количествах память индексы должны быть кучными, что хрен обеспечишь. Во-вторых, нефигово было бы ограничить длину целого ключа, иначе сильно распухнет индекс. Плюс пойдут тормоза из-за long-int.

Хотя... В моем случае у меня как раз таки есть возможность раздать индексы всем инструментам так, чтобы они были кучными. Надо попробовать.

Reply


kurilka December 19 2007, 12:38:16 UTC
Может быть тупой вопрос, но как мерялось время?
И разница в 15 секунд из 10 минут общего времени работы - это очень важный параметр? Есть ещё куча операций помимо "приёмки" данных?

Reply

gaperton December 19 2007, 12:44:38 UTC
при помощи функции statistics с параметром wall_clock. Мерялось чистое время обработки.

Разница в 15 секунд на данном тесте на самом деле важна - в тесте фигурирует 100 инструментов, а проектная мощность должна быть в районе десятков тысяч инструментов, а желательно иметь запас до сотен тысяч. Пусть и не с такой средней нагрузкой, как 1000 котировок в минуту - такое реально будет не более чем по тысяче инструментов в пике.

Reply

kurilka December 19 2007, 12:56:35 UTC
А, ну для масштабирования конечно важна разница, согласен. Чтот об этом не подумал по глупости.

Reply

Я сейчас глупость скажу, но... thesz December 20 2007, 15:44:35 UTC
Неужто это разнести нельзя по разным процессам?

Reply


3bep December 19 2007, 22:07:59 UTC
А поподробнее о тестовом окружении - сколько нод, машин, как распределены процессы. И примерно как будет выглядеть окружение на продакшне.

Reply


Why Mnesia? anonymous December 20 2007, 10:44:26 UTC
Откровенно говоря не понял причем здесь мнезиа. Мы используем мнезию для синхронизации в системе обмена сообщениями. В наших тестах при использовании одного нода с yaws+mnesia (при установке disk-copy), получилось пока предварительно 150 запросов в секунду(это когда мы пишем in-сообщение и читаем out-сообщение) без всяких оптимизаций. Поэтому интересно было бы подробней узнать о Ваших тестах. Может наш тест слишком наивный?

Reply

Re: Why Mnesia? gaperton December 20 2007, 15:19:29 UTC
Зависит от ваших запросов.

Мой тест:
1) один узел.
2) Intel Core Duo 1,8
3) 10000 транзакций
4) каждая транзакция - 100 операций "чтение" - "запись" в ram only таблицу
5) Каждая тысячная транзакция + операция "запись" в таблицу disk only

Reply

Re: Why Mnesia? anonymous December 20 2007, 16:56:35 UTC
Понятно зависит, одно дело, если я буду пихать в таблицу несколько десятков строк, а другое мегабайт информации. Так сколько информации вы пихаете в одной транзакции в мнезию?

Reply

Re: Why Mnesia? gaperton December 20 2007, 18:12:16 UTC
Примерно 8-10 слов данных.

Reply


anonymous December 20 2007, 15:48:53 UTC
Use a disk_log.

-joel

Reply

gaperton December 20 2007, 18:14:41 UTC
Hi Joel,

btw, do you know the way how you can get a random access to disk_log records? I can't find anything to help with this.

Reply


Leave a comment

Up