Мы используем механизм выталкивания, аналогичный тестам производительности, указанным здесь для ZeroMQ. http://www.zeromq.org/results:perf-howto

Для теста пропускной способности с размером сообщения 4,3 КБ и 100 000 сообщений я получил производительность 85 000 msg/sec.

Vikas@vikas-laptop:~/w/software/exploded/zeromq-2.1.10/perf$ local_thr tcp://127.0.0.1:5555 4300 100000 размер сообщения: 4300 [B] количество сообщений: 100000 средняя пропускная способность: 85203 [ msg/s] средняя пропускная способность: 2930,983 [Мбит/с]

Однако с кодом на Scala и с использованием привязки Scala 0.0.3 я получаю менее 15 тыс. msg/sec.

Суть здесь https://gist.github.com/1496406

Что не так?

2
Vikas Hazrati 19 Дек 2011 в 14:17

1 ответ

При тестировании пропускной способности 0MQ вам нужно немного позаботиться о том, чтобы получить значимые цифры.

Во-первых, используйте машину с достаточным количеством ядер или две машины в быстрой сети.

Во-вторых, отправьте достаточно сообщений, чтобы фактически нагрузить тестовый пример на несколько секунд. 100к это слишком мало, наверное 1м было бы лучше.

В-третьих, протестируйте сообщения разных размеров, чтобы увидеть влияние различных операций. Используйте 1-байтовые сообщения для проверки стоимости языкового API (Scala). Используйте 100-байтовые сообщения для проверки стоимости операций ввода-вывода. Используйте сообщения 1K, чтобы проверить стоимость копирования памяти. Обычно вы видите кривую.

2
Pieter Hintjens 20 Дек 2011 в 20:38
Спасибо, Питер, за ваш ответ, суть, которую я опубликовал, — это всего лишь один сценарий, но, как вы предложили, мы попробовали различные комбинации размеров и количества сообщений. Цифры далеки от того, что мы получаем при тестировании производительности. Я внес изменения, предложенные Виктором, см. ветку почты здесь groups.google.com/forum/#!searchin /scala-user/… по-прежнему нет улучшения, близкого к ожидаемому.
 – 
Vikas Hazrati
29 Дек 2011 в 12:09