Re: GC в .NET
От: akasoft Россия  
Дата: 22.03.06 17:48
Оценка:
Здравствуйте, Чистяков Влад (VladD2 ), Вы писали:

ЧВV>Уже много сказано слов о том, что такое GC, чем он хорош и как лучше его применять.


Спасибо, статья оказалась вполне "для меня", несмотря на наличие подробностей и деталей. Всё-таки не так-то и просто оказалось после Object Pascal вписать в мировозрение этот Сборщик мусора. Хотя, конечно, ничего нового и не было изобретено, но это видно после прочтения статьи.
... << RSDN@Home 1.2.0 alpha rev. 648>> SQL Express 2005
Re: GC в .NET
От: Cyberax Марс  
Дата: 16.06.06 17:51
Оценка:
Здравствуйте, Чистяков Влад (VladD2 ), Вы писали:

ЧВV>Аннотация:

ЧВV>Уже много сказано слов о том, что такое GC, чем он хорош и как лучше его применять. Но, наверно, очень многим хочется знать, как устроен конкретный GC. Данная статья открывает некоторые подробности устройcтва GC в .NET Framework.

Есть разные способы учета ссылок из прошлых поколений. К сожалению, я не смог найти точную информацию о том, какой способ используется в .NET. Но по сути это и не важно. Важно понимать, что копирование ссылки на объект в поле другого объекта в .NET стоит дороже, нежели в неуправляемых языках. Это, можно сказать, плата за автоматическое управление памятью. В сумме со временем, затрачиваемым на уборку мусора, время, затрачиваемое на барьер записи, составляет основные затраты времени на управление памятью.

В .NET используется механизм защиты виртуальной памяти, а точнее функция GetWriteWatch (подробности на нее можно посмотреть в MSDN). То есть помечаются не отдельные ссылки на старое поколение, а страницы памяти, которые могут содержать эти ссылки.

Еще видел в блоге девелопера (но сейчас не могу найти), что в новых версиях .NET будет использоваться card marking (в Sun JVM он используется уже давно ). При помощи card marking'а так же отслеживается не точное положение ссылки, а "карта" (небольшой блок памяти, обычно 256-512 байт) в которой она находится. По сравнению с виртуальными страницами памяти имеем меньший оверхед по сканированию.
Sapienti sat!
Re[2]: GC в .NET
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.06.06 00:03
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Еще видел в блоге девелопера (но сейчас не могу найти), что в новых версиях .NET будет использоваться card marking (в Sun JVM он используется уже давно ). При помощи card marking'а так же отслеживается не точное положение ссылки, а "карта" (небольшой блок памяти, обычно 256-512 байт) в которой она находится. По сравнению с виртуальными страницами памяти имеем меньший оверхед по сканированию.


Отслеживание страниц — это и есть разновидность тарточной пометки. Так что вопрос только в размере блока.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: GC в .NET
От: Red Bird Россия  
Дата: 17.06.06 10:23
Оценка: -3 :)
Хорошая статья — мне понравилось.

Однако не могу согласиться со следующим утверждением:

...Многие противники GC, не находя аргументов, заявляют, что «GC не пригодно для задач реального времени». Сборщик мусора, реализованный в .NET, действительно непригоден для задач реального времени. Однако будем честными друг с другом – многие ли занимаются такими задачами?

При разработке служб Windows часто приходится решать задачи реального времени.
Re[3]: GC в .NET
От: Cyberax Марс  
Дата: 17.06.06 11:02
Оценка:
Здравствуйте, VladD2, Вы писали:

C>>Еще видел в блоге девелопера (но сейчас не могу найти), что в новых версиях .NET будет использоваться card marking (в Sun JVM он используется уже давно ). При помощи card marking'а так же отслеживается не точное положение ссылки, а "карта" (небольшой блок памяти, обычно 256-512 байт) в которой она находится. По сравнению с виртуальными страницами памяти имеем меньший оверхед по сканированию.

VD>Отслеживание страниц — это и есть разновидность тарточной пометки. Так что вопрос только в размере блока.
Под "card marking" понимают именно явную пометку в таблице карт.

В некоторых статьях противопоставляется "card marking" и "virtual memory approach". Например, здесь: http://www-128.ibm.com/developerworks/java/library/j-jtp11253/ в главе "Tracking intergenerational references".
Sapienti sat!
Re[2]: GC в .NET
От: Nickolay Ch  
Дата: 17.06.06 13:43
Оценка:
RB>При разработке служб Windows часто приходится решать задачи реального времени.
Поясните пожалуйста это утверждение. Каких конкретно служб. И еще надо учесть, что Windows — не ОС реального времени, поэтому говорить о задачах реального времени
сложно.
Re[3]: GC в .NET
От: Red Bird Россия  
Дата: 18.06.06 07:54
Оценка: :)
Здравствуйте, Nickolay Ch, Вы писали:


RB>>При разработке служб Windows часто приходится решать задачи реального времени.

NC>Поясните пожалуйста это утверждение. Каких конкретно служб. И еще надо учесть, что Windows — не ОС реального времени, поэтому говорить о задачах реального времени
NC>сложно.

Например, чтение входящих сообщений (e-mail).
Re[4]: GC в .NET
От: WolfHound  
Дата: 18.06.06 08:16
Оценка:
Здравствуйте, Red Bird, Вы писали:

RB>Например, чтение входящих сообщений (e-mail).

Гм... а зачем тут реальное время?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: GC в .NET
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 18.06.06 08:24
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Red Bird, Вы писали:


RB>>Например, чтение входящих сообщений (e-mail).

WH>Гм... а зачем тут реальное время?
И не говори... Нафига ограниченное время реакции на письмо, если само письмо может идти неограниченно долго

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[2]: GC в .NET
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.06.06 14:30
Оценка:
Здравствуйте, Red Bird, Вы писали:

RB>При разработке служб Windows часто приходится решать задачи реального времени.


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

То что ты называшь "решать задачи реального времени" на самом деле не являются задачами реального времени. Это просто задачи требующие быстрого отлика в болшинстве случаев.

GC в .NET более чем пригоден для таких задач. Так на нем без проблем можно писать игры или серверы для игр. Да и для большинства задач обработки данных он пригоден. Единственное что нужно делать — это кэшировать входной поток данных. А вот писать программы интерактивно возаимодействующие с аппаратурой на Виндовс нельзя. По крайней мере критические (приводящие к аппоратным сбоям в случае если программа не успеет среагировать).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: GC в .NET
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.06.06 14:30
Оценка:
Здравствуйте, Red Bird, Вы писали:

RB>Например, чтение входящих сообщений (e-mail).


Даже задача вроде "Instant messenger" не является задачами реального времени. Она требует быстрой реакции программы в общем случае и не критична если программа иногда (например раз в 10 часов) задумается на пол секунды (огромное время по машинным меркам).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: GC в .NET
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 19.06.06 14:55
Оценка:
Здравствуйте, Чистяков Влад (VladD2 ), Вы писали:

Эта, Влад, RASDN же под .Net? А можно привести статистику работы GC с RSDN — размеры поколений, частота сборок, продолжительность пауз?
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[2]: GC в .NET
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.06.06 18:19
Оценка: 12 (2)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Здравствуйте, Чистяков Влад (VladD2 ), Вы писали:


ANS>Эта, Влад, RASDN же под .Net? А можно привести статистику работы GC с RSDN — размеры поколений, частота сборок, продолжительность пауз?


Можно, но смысла нет. Основное время отедает MS SQL (агреггирующие запросы). ЖЦ практически не влияет на работу. Сборка мусора нулевого поколения просходит раз 1-4 секунды. Раз в 10 секунд просходит сборка второго поколения. Где-то так же первого. Время проведенное в GC колеблится от 0.3% до 3%. В среднем меньше 1%.

MS SQL отжирает 1.6 гига из доступных 3-х. Дотнет 200-300 метров. Периодически поднимается долбаный Перл которым толи спамфильтр проверяется, то ли еще что. Так эта зараза отжирает памяти примерно столько же как основной процесс сайта.

Второе по значимости приложение на дотнете — NNTP-сервер с 17-го числа произвел 600 сборок мусора второго поколения. Время в GC менее 0.01%.

Короче, не влияет ЖЦ тут ни на что.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: GC в .NET
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 19.06.06 18:28
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Можно, но смысла нет. Основное время отедает MS SQL (агреггирующие запросы). ЖЦ практически не влияет на работу. Сборка мусора нулевого поколения просходит раз 1-4 секунды. Раз в 10 секунд просходит сборка второго поколения. Где-то так же первого. Время проведенное в GC колеблится от 0.3% до 3%. В среднем меньше 1%.


А размеры поколений?

ЗЫ. У меня сложилось впечатление, что днём всё заметно медленнее работает. У тебя есть какая-то статистика?
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[4]: GC в .NET
От: WolfHound  
Дата: 19.06.06 19:06
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>ЗЫ. У меня сложилось впечатление, что днём всё заметно медленнее работает. У тебя есть какая-то статистика?

Так по тому что днем приходит много народа.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: GC в .NET
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 20.06.06 06:42
Оценка:
Здравствуйте, WolfHound, Вы писали:

ANS>>ЗЫ. У меня сложилось впечатление, что днём всё заметно медленнее работает. У тебя есть какая-то статистика?

WH>Так по тому что днем приходит много народа.

Мне это действительно интересно. Хотелось бы увидеть что-то дневное и ночное в числовом выражении. Ну, там среднее время отдачи страницы с одним /случайным/ сообщением, распределение по поколениям, процент простоя от GC.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[4]: GC в .NET
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.06.06 00:32
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>А размеры поколений?


ANS>ЗЫ. У меня сложилось впечатление, что днём всё заметно медленнее работает. У тебя есть какая-то статистика?


Все упирается в SQL-сервер. Есть некое число запросов которые могут пройти в секунду. Кокда пользователей много (с 10 до 16 и особенно с 11 до 14), то они просто выстраиваются в очеред и получаются тормоза.

В этом в основном виноват и движок сайта который не исползует агрегирование информации. Объем данных все время растет и количество пользователей тоже (хотя оно сдерживается скоростью сайта). Вот на сегодня движок и тормозит в часы пик.

В ближайшее время мы частично решим проблему банальным апгрэйдом железа.

Параллельно мы переписываем сайт. Процесс этот не быстр, так как все люди занятые, а объем работы и их сложность огромны.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: GC в .NET
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.06.06 00:41
Оценка: 8 (2)
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Здравствуйте, WolfHound, Вы писали:


ANS>>>ЗЫ. У меня сложилось впечатление, что днём всё заметно медленнее работает. У тебя есть какая-то статистика?

WH>>Так по тому что днем приходит много народа.

ANS>Мне это действительно интересно. Хотелось бы увидеть что-то дневное и ночное в числовом выражении. Ну, там среднее время отдачи страницы с одним /случайным/ сообщением, распределение по поколениям, процент простоя от GC.


На сейчас расклад такой.
Объем памяти (в гигах):
MS SQL         1.66
Сайт + Янус    0.3
Перл (паскуда) 0.2

Статистика памяти процесса сайта (процесс запущен 20.06.2006 в 19:01):
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: GC в .NET
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 21.06.06 06:55
Оценка:
Здравствуйте, VladD2, Вы писали:

Gen0 38M
Gen2 17M

Прикольный расклад.

И пара вопросов:
wtf is "Promoted memory" & "Promoted finalization-memory" ?
И не понятно почему сумма всех поколений не равна "Bytes in all heaps"
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re: GC в .NET
От: Аноним  
Дата: 21.06.06 07:10
Оценка:
Здравствуйте, Чистяков Влад (VladD2 ), Вы писали:

ЧВV>Статья:

ЧВV>GC в .NET
Автор(ы): Чистяков Влад (VladD2)
Дата: 14.06.2006
Уже много сказано слов о том, что такое GC, чем он хорош и как лучше его применять. Но, наверно, очень многим хочется знать, как устроен конкретный GC. Данная статья открывает некоторые подробности устройчтва GC в .NET Framework.


ЧВV>Авторы:

ЧВV> Чистяков Влад (VladD2 )

ЧВV>Аннотация:

ЧВV>Уже много сказано слов о том, что такое GC, чем он хорош и как лучше его применять. Но, наверно, очень многим хочется знать, как устроен конкретный GC. Данная статья открывает некоторые подробности устройcтва GC в .NET Framework.

что такое эфимерный?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.