
Aleksandr
25.03.2018
20:55:35
Это как рассчитывать на силу трения об асфальт во время торможения, а не на тормоза

Александр
25.03.2018
21:02:34
я честно по описанию не совсем понял

Wingman
25.03.2018
21:05:13

Google

Александр
25.03.2018
21:08:57
вы бы вообще прототип сделали, на тестовых сущностях
бенч там к нему
и пришли бы уже "вот тут у меня проблема" ?

Wingman
25.03.2018
21:10:32
блин, я всего-то спросил "насколько плохо использовать и дёргать МНОГО мьютексов" :)

Александр
25.03.2018
21:11:34
мьютексы сами по себе не очень замедляют, в один поток если ? там основная проблема что блокировка для паралельных

Andrey
25.03.2018
21:12:08
Syscall это всегда дорого

Wingman
25.03.2018
21:12:35
да вот хз
(*) The problem with less very often locked mutexes is that if you have too much locking in your application, it causes to much of the inter-CPU/core traffic to flush the mutex memory from the data cache of other CPUs to guarantee the cache coherency. The cache flushes are like light-weight interrupts and handled by CPUs transparently - but they do introduce so called stalls

Александр
25.03.2018
21:13:03
да?

Wingman
25.03.2018
21:13:10
ну да
балин, накидал и рефрешнул

Александр
25.03.2018
21:14:28
я конечно не большой спец по мьютексам, но с какого перепугу вложенный профиль будет вообще дергаться

Wingman
25.03.2018
21:17:23

Google

Александр
25.03.2018
21:18:35
а зачем вам лочить?

Wingman
25.03.2018
21:18:52
дык, чтобы не читать/писать в момент изменения кем-то ещё

Александр
25.03.2018
21:19:09
так вы трогаете то Object, а не AuthProfile
или вы хотите трогать AuthProfile?

Wingman
25.03.2018
21:19:27

Александр
25.03.2018
21:19:39
а чорд

Wingman
25.03.2018
21:20:07
ну вот, и таких объектов тыщщщи

Александр
25.03.2018
21:20:12
ну это как то не совсем корректно имхо

Wingman
25.03.2018
21:20:14
и локов тогда будут сотни тыщщ
мб как вариант хранить не ссылки, а копии — но тогда при любых изменениях нужно будет все объекты обходить и заменять, тоже не айс

Александр
25.03.2018
21:24:39
я сразу об этом подумал
это сожрет такое количество памяти

Wingman
25.03.2018
21:25:14
угу
и доп.неудобства при модификации

Александр
25.03.2018
21:26:27
может бизнес задачу обрисуете?
что-то мне кажется тут проблема в построении архитектуры
не с того конца копаем

Wingman
25.03.2018
21:27:12
ну... мониторинг оборудования ; с одной стороны - постоянный его опрос по snmp/telnet/ssh, с другой - приём и парсинг логов и snmp трапов

Александр
25.03.2018
21:27:48
а объекты в которые вы так старательно кормите профили, это что?
событие на оборудовании?

Google

Wingman
25.03.2018
21:28:03
само оборудование

Александр
25.03.2018
21:28:50
и у них общие "поля"?

Wingman
25.03.2018
21:29:07
да

Александр
25.03.2018
21:29:29
для чтения?
или вы пишите из сущности тоже?

Wingman
25.03.2018
21:29:37
ну, к примеру, в профиле указано, как ходить на железо - telnet/ssh, логин-пароль; интервалы опроса и т.д.
в основном для чтения

Александр
25.03.2018
21:30:11
что-то тут подозрительно

Wingman
25.03.2018
21:30:22
почему?)
в том и смысл, чтобы не настраивать каждую железку индивидуально, а унифицировать конфигурацию

Александр
25.03.2018
21:31:54
ну в данном случаи этот профиль будет якорить всю очередь

Daniel
25.03.2018
21:31:57

Александр
25.03.2018
21:32:40
у вас есть телевизор, холодильник и микроволновка. Если вы их запросили одновременно, то из за общего профиля "питание" они будут выполнены один-за-одним
вернее получены
потому что на питании стоит лок на чтение

Wingman
25.03.2018
21:33:05
ну есть ещё rwmutex

Александр
25.03.2018
21:33:29
есть
интересно без локов, чтение прокатит ?
или мы таки умрем где то по дороге

Google

Daniel
25.03.2018
21:34:39
Так поеду

Александр
25.03.2018
21:34:40

Daniel
25.03.2018
21:34:54
На какую тему?

Александр
25.03.2018
21:35:44
у человека есть телевизор, холодильник и микроволновка. У них есть ссылка на профиль "электропитание"

Wingman
25.03.2018
21:35:48
На какую тему?
насколько дороги очень частые локи мьютексов для проца/кеша/системы в целом? :)

Александр
25.03.2018
21:35:56
при чтении любой сущности, он лочит электропитание
и сразу стоит вопрос производительности
ибо тогда "многопоточность" схлопывается до 1 потока фактически

Wingman
25.03.2018
21:36:40
да не схлопывается она, если rwmutex
по идее)

Daniel
25.03.2018
21:37:02
Не схлопывается

Wingman
25.03.2018
21:37:03
но вот постоянное их дёргание мне не нравится само по себе

Daniel
25.03.2018
21:37:43
Смотрите
Самый быстрый из синхронизаторов - atomic

Александр
25.03.2018
21:38:21
а он разве не на мьютексах? ?

Daniel
25.03.2018
21:38:34
Ровно наоборот

Александр
25.03.2018
21:38:35
я что-то думал что это такая оберточка, что бы попроще

Wingman
25.03.2018
21:39:20
да я даже не про скорость: у меня 90% замедления в сетевом io будет
а вот нагрузка на проц, мне кажется, будет плачевна

Daniel
25.03.2018
21:39:44
И, если профайлер показал, что вы именно на мьютексе тратите время - можно попробовать

Google

Wingman
25.03.2018
21:41:14

Daniel
25.03.2018
21:41:33
Как проще!

Wingman
25.03.2018
21:41:36
позже менять - почти всё переписывать нафиг

Daniel
25.03.2018
21:42:15
Если геттер-сеттер выделить - все изменения коснутся только его

Александр
25.03.2018
21:42:55
Смотрите
погуглил тут про rw.RLock(), не совсем понимаю зачем он нужен, он же лочит на чтение. Мы же получаем все равно сможем нагадить из паралельного процеса. Или он преостанавливает, если к нам кто-то пишет?

The
25.03.2018
21:43:15
да
все читают, но когда приходит писатель, то все ждут.

Александр
25.03.2018
21:43:59
но есть же вероятность, при большой нагрузке
что мы прошли успешно RLock, и тут началась запись
и мы опять с голой попой

The
25.03.2018
21:44:17
ну так он ждет
пока выйдет rlock
и зайдет сразу

Александр
25.03.2018
21:44:43
а, с другой стороны запись тоже смотрит что бы пустой список локов был?

The
25.03.2018
21:45:10
там безопасно все. но тут нужно смотреть, иногда выгодней юзать обычный лок.

Let Eat
25.03.2018
21:45:23

Александр
25.03.2018
21:45:29
вот я и пытаюсь врубиться, почему не обычный лок
для записи то нам в любом случаи его придется юзать
почему бы не залочить тогда все к едреной

The
25.03.2018
21:46:02
если ты чаще читаешь, чем пишешь, то выгодно юзать RWMutex
если там чтение запись 1:1 или запись чаще, тогда лучше на обычный Mutex, но это пусть лучше гуру подскажут. Я в книге читал это, и встатьях часто упоминается.