|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо. Тут проблемы в другом 20013065 , объектов очень много поэтому сборка мусора томозит. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2016, 20:46 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
в свое время компания трейдер - елмакс двинула проект disruptor, так вот, там они отказались вообще от уборки мусора. архитектурное решение довольно интересное. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 12:57 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Где-то в степи, на C++ небось перешли? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 13:55 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttDenis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо. В режиме многопоточного частого чтения и периодической записью не будет. Это надо профайлить. Так не угадаешь. + есть вариант ридерарйтерлок. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 14:44 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Dima TDenis.еще можно попробовать заменить конкурентдикты на обычные с локами. Частенько выходит и быстрее и менее прожорливо. Тут проблемы в другом 20013065 , объектов очень много поэтому сборка мусора томозит. Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Так 700 мегабайт Код: c# 1.
Так 200. Его 3 гб могут превратиться в 500 мб. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 14:54 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.Так 700 мегабайт Код: c# 1.
Так 200. Его 3 гб могут превратиться в 500 мб. там реально byte используется? Если так и int только положительный, то можно так Код: c# 1.
займет 2 Гб и никакой сборки мусора не понадобится. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 16:47 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.Так 200. Его 3 гб могут превратиться в 500 мб. Настолько жирно-толсто-натянутый пример, что даже не смешно. Байты в словаре? Серьёзно!? А чего так жирно, давай биты! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 17:09 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVostt, откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 20:00 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.hVostt, откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 20:57 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Dima TDenis.hVostt, откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают. У меня проблемы нету. А у тс может быть проблема и в том и в том. Сборку вызывает давление на память, а не количество бесхозных рутов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2016, 21:19 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.Сборку вызывает давление на память, а не количество бесхозных рутов. Это не правда. И ты не прав. Влияет и давление на память, и количество объектов в 0-м поколении. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 06:44 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.откуда мне знать что у него там за данные лежат, наоборот демонстрирует особенности словарей оставляя данные за скобками Ты взял заведомо некорректный пример, который весьма далёк от жизни. Всё что ты выяснил, это то, что ConcurrentDictionary потребляет дополнительную память. И это никогда не скрывалось, всё имеет свою цену. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 06:47 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.Dima Tпропущено... Количество объектов не меняется. Проблема у тебя в количестве , а не в памяти которую они занимают. У меня проблемы нету. А у тс может быть проблема и в том и в том. Сборку вызывает давление на память, а не количество бесхозных рутов. Согласен, но так понижается частота сборки мусора, а у ТСа проблемы из-за времени одной сборки. Теоретически общее количество объектов при использовании Dictionary может быть меньше, мы же не знаем что там дополнительно создается для работы самих Dictionary/ConcurrentDictionary. Только непонятно как это померить. Не нашел как посмотреть сколько объектов создано на текущий момент. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 07:19 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttDenis.Сборку вызывает давление на память, а не количество бесхозных рутов. Это не правда. И ты не прав. Влияет и давление на память, и количество объектов в 0-м поколении. Я сомневаюсь что у него 100мс чистится 0 поколение. А можно ссылку на источник что колво объектов важно? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 08:54 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Pallaris, Как это делается? Как сделать словари рутами? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 09:52 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
_r2003Pallaris, Как это делается? Как сделать словари рутами? Товарищ hVostt уже писал 20011426 - кэширование, как вариант - реализовать какой-то синглетон-сервис, который будет в себе хранить ссылки на объекты словарей в течении всей жизни приложения. По необходимости обращаться к сервису за нужными словарями. Кстати, это 100% инфа, что приложение приунывает из-за сборки мусора? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 10:17 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Сделать один/набор объектов в LOH с переиспользованием уже предлагали? Вижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:08 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
y.dev.netСделать один/набор объектов в LOH с переиспользованием уже предлагали? Вижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС. Переиспользование имеет смысл в огромной, массированной и быстрой текучке данных, например, загрузка данных блоками в режиме автомата. Если используются одни и те же данные, то единственно верным будет организация грамотного кеширования. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:16 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Denis.А можно ссылку на источник что колво объектов важно? https://msdn.microsoft.com/ru-ru/library/ee787088(v=vs.110).aspx MSDNЕсли выполняется фоновая сборка мусора и в поколении 0 размещено достаточное количество объектов, среда CLR выполняет высокоприоритетную сборку мусора для поколения 0 или поколения 1. Информация подтверждается и на других источниках. Информация подтверждается испытаниями, для разных версий фреймворка и при разных условиях это предельное количество плавает, но оно существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:18 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
y.dev.netВижу в обсуждении кэши - сразу скажу, что они как раз приводят к риску сбора мусора в не-эфемерных поколениях, что по сути своей трагедия для ТС. Какой ещё риск? Если данные лежат в кеше, то GC их собирать не будет. Если данные вытесняются из кеша, значит достиг предел использования памяти. Либо заданное в настройках ограничение достигнуто, или реально свободной памяти становится мало. При чём тут GC? Это уже обсуждение механики работы кеша. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:21 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttПереиспользование имеет смысл в огромной, массированной и быстрой текучке данных, например, загрузка данных блоками в режиме автомата. У ТС, насколько я понял, и есть текучка в виде проксинга tcp запросов и требование предотвратить любые остановки на GC. В вашем описании кэширования оно не сильно отличается от переиспользования, имхо. Только вы допускаете попадание этого кэша в 2-е поколение, а я за "сразу в LOH". ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:21 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
hVosttКакой ещё риск? Риск такой, что в кэше по ключу создается другой объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:23 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
Pallaris, Да, PerfView - Это показывает. Event Name Time MSec DURATION_MSEC Count Depth Microsoft-Windows-DotNETRuntime/GC/Stop 242 499,616 985,262 478 2 Microsoft-Windows-DotNETRuntime/GC/Stop 400 108,341 101,213 489 1 Microsoft-Windows-DotNETRuntime/GC/Stop 527 150,331 96,683 498 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:33 |
|
Остановка потоков сервиса на период сборки мусора.
|
|||
---|---|---|---|
#18+
y.dev.netУ ТС, насколько я понял, и есть текучка в виде проксинга tcp запросов и требование предотвратить любые остановки на GC. В вашем описании кэширования оно не сильно отличается от переиспользования, имхо. Только вы допускаете попадание этого кэша в 2-е поколение, а я за "сразу в LOH". Не согласен. Всё имеет свою цену. Можно убить время и выяснить потом, что проблема тормозов вовсе не из-за работы GC, или не только из-за него. Сразу в LOH звучит, также как переписать всё на C++. Может оно вообще все проблемы порешает ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2016, 11:34 |
|
|
start [/forum/topic.php?fid=20&msg=39369925&tid=1400130]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
others: | 271ms |
total: | 442ms |
0 / 0 |