
Dorian
04.08.2018
15:00:17
Может если проц позволяет, то инсерт делать тоже в горутинах?

Alexander
04.08.2018
15:01:49
А на сколько обьем выставляли?
Ну 100. Но там на 20 сообщений в секунду cpu отдирается. Мало того, как я писал, я убирал одну еорутину и делал без буфера - картина та же.

Лемур
04.08.2018
15:02:50
Говорят, можно прямо в прод сунуть с включеным профайлом потому, что оверхед не большой

Google

Pavel
04.08.2018
15:06:08
В проде вроде его можно включать http запросом на определенное время. В остальное время он не активен.

Лемур
04.08.2018
15:07:11

Pavel
04.08.2018
15:08:28
Главное для всего интернета этот порт не открывайте.

Alexander
04.08.2018
15:09:20

Daniel
04.08.2018
15:09:59
и что профиль?

Лемур
04.08.2018
15:16:46
Там сразу понятно где он вызывается

Alexander
04.08.2018
15:20:16

Лемур
04.08.2018
15:20:40
Горшочек не вари
Умываю руки)

Vadim
04.08.2018
15:27:38

Dmitri
04.08.2018
15:28:06
Wrapper?
И не враппер. Вся соль в том, что из возвращаемой функции виден контекст функции, из которой ее вернули

Google

Alexander
04.08.2018
15:28:33
Делаю граф

Vadim
04.08.2018
15:29:16
А сколько gomaxprocs?

Alexander
04.08.2018
15:30:53
я делал два - тоже самое что и не установлено
ловите

Vadim
04.08.2018
15:31:30
Try to run it after:
export GOMAXPROCS=4
This should drop that timing a lot. Some of the design decisions on
mgo were made with scalability and concurrency in mind. It performs
well if you allow it to use more threads, and it should continue to
perform well under quite a bit of abuse when you do more stuff
concurrently with whatever else is being done. [1]
On Thu, Mar 28, 2013 at 6:55 PM, <mbil...@gmail.com> wrote:
> Perhaps I'm doing something wrong in here? mongod doesn't seem to be
> sweating running either program.
If you can send an example that is self-contained, including the data
creation bits, I can run it here as well to compare. Otherwise, I have
no idea about how you're exercising that code, which makes it harder
to help.
[1] Out of coincidence, this was posted today:
https://github.com/rossan/kuenea
Look at the timings there.

Alexander
04.08.2018
15:32:06
смотрите, я убрал монгу, заменил на rethink - но 20% всё равно много
для наглядности

Dorian
04.08.2018
15:34:38
Сборщик мусора выедает

Vadim
04.08.2018
15:35:56
Угу
https://www.mongodb.com/blog/post/running-mongodb-queries-concurrently-with-go

Alexander
04.08.2018
15:37:52

Daniel
04.08.2018
15:38:49

Alexander
04.08.2018
15:38:55
Там по сути один malloc на сообщение и free после базы. 10 сообщений в секунду, какой ещё сборщик?!?

Dorian
04.08.2018
15:39:25

Alexander
04.08.2018
15:39:42
Народ, это профиль с rethink. Я отключил монгу - с ней вообще жутко.

Daniel
04.08.2018
15:40:18
коллега, у вас там подземный стук

Dorian
04.08.2018
15:41:00
А по делу?

Alexander
04.08.2018
15:52:58
Я на го два дня, но мне тоже подумалось что scanobjects это гц

Google

Dorian
04.08.2018
15:55:35
mallocgc это что-то другое?
Вроде аллокейт и скан как раз об этом. Не утверждаю, но предполагаю

Pavel
04.08.2018
15:57:43
Или попробуете комментить код кусками и профайл запускать и посмотреть после отключения каких строк тормозить перестаёт.

Alexander
04.08.2018
15:59:26

Pavel
04.08.2018
16:00:35
Monkey debug 101
Ещё у вас там светится синк мэп, конвертация типов, коннект к h2 серверу.

Alexander
04.08.2018
16:09:30

Pavel
04.08.2018
16:10:29
Проблема в 2% CPU?
Программу можно не запускать и тогда будет 0% CPU — вообще идеал. Если это ваша цель.
И время на разработку можно не тратить.

Alexander
04.08.2018
16:14:31
2% CPU для практически ничего не делающей программы - это прилично ИМХО.

Daniel
04.08.2018
16:14:42
Нет

Alexander
04.08.2018
16:15:16
я бы ожидал не более 5% целиком от этой программы, в идеале 2%. но тут 20%

Pavel
04.08.2018
16:15:46

Alexander
04.08.2018
16:16:00
Нет
ok, давайте так, я ожидал что go будет быстрее nodejs, а он прилично медленее на данном примере у меня. я не понимаю почему - может я что-то не так, или у меня завышенные ожидания к го были?

Daniel
04.08.2018
16:16:45
А не должен быть

Pavel
04.08.2018
16:17:06
А был уже вопрос сколько сообщений в секунду обрабатывает программа при 2% CPU?

Google

Daniel
04.08.2018
16:17:14
Ваша задача должна в базу упираться

Alexander
04.08.2018
16:17:34

Daniel
04.08.2018
16:19:46
Значит, что-то не так вы написали

Alexander
04.08.2018
16:20:14
я выше показал примитивный код + прислал профиль. подскажите что именно.

Daniel
04.08.2018
16:20:18
Если уж совсем надо - кладите на гитхаб, я гляну вечером

Pavel
04.08.2018
16:20:26
удачи
(везде замените, а не в одном месте)
чет я вангую что это поможет

Alexander
04.08.2018
16:23:17
в канал тоже &map[string] класть? хотя врядли

Pavel
04.08.2018
16:26:30
попробуйте с &Message

Daniel
04.08.2018
16:26:37
Мап можно без указателя класть

Alexander
04.08.2018
16:27:46
опять же - я переписал это всё без промежуточного буфера (но тогда с монгой) - и всё было так же печально

Pavel
04.08.2018
16:30:29
но вообще я чет сижу и думаю

Alexander
04.08.2018
16:31:46

Pavel
04.08.2018
16:32:03
вы паритесь, расслабьтесь

Google

Alexander
04.08.2018
16:32:22
но в целом всё так:
mongo (оффициальный) - 100% cpu
mgo - 75%
rethink - 20%

Pavel
04.08.2018
16:32:59
почему вы загружаете себя проблемой 2% CPU?

Alexander
04.08.2018
16:33:28

Pavel
04.08.2018
16:33:51
раз у вас нет бюджета на чтение json, то может не читать его?
я имею ввиду, у вас там кто-то умрет от лишних 2% CPU?
в чем ценность оптимизации?
сколько денег сэкономите?

Alexander
04.08.2018
16:35:16
если каждая примитивная операция будет 2%, то серверов надо будет пачку вместо одного
и кстати
смотрите, никто не умрёт, кроме реализации на go, так как на nodejs это работает (более экономично по бюджету).

Dorian
04.08.2018
16:36:36
А какие мощща если не секрет?

Alexander
04.08.2018
16:37:14

Pavel
04.08.2018
16:37:31
в общем кроме как на &Message заменить все у меня идей нет, плюс я так же не очень понял от чего вы экономите время CPU, а не свое

Alexander
04.08.2018
16:40:16
я думаю я лучше сэкономлю на переписывании того что я писал выше - я ожидал что go будет прилично быстрее и его можно будет внедрять дальше, но пока не оправдываются надежды, или я не заметил какой-то косяк усебя в коде.

Vadim
04.08.2018
16:43:26

Alexander
04.08.2018
16:44:10

Daniel
04.08.2018
16:44:27
Там выше есть ссылка на гитхаб
Я, правда, ночью только до нее доберусь

Alexander
04.08.2018
16:44:45
есть ссылка на gist для mongodb и для rethinkdb