Мультипроцессорность и .NET Framework
От: mihailik Украина  
Дата: 08.06.04 16:22
Оценка:
Добрый день!

После некоторого время чтения блогов разных редмондских мудрецов, у меня сложилось впечатление, что мультипроцессорность и .NET пока не очень гладко подружены.

Особенно, если углубиться в те ссылки, что обсуждались в механизме write barrier
Автор: Serginio1
Дата: 06.05.04
.


Может быть кто-нибудь поделится реальным опытом, цифрами? Мол, у нас на столько-то процессорном сервере работает дотнет-софтина столько-то времени и столько-то багов.

Интерестно, что-нибудь реальное дотнетовское кроме ASP.NET на мультипроцессорных тачках запускалось? Как масштабирование, какие вообще особенности? Если кто использовал многопоточный GC, то как результаты?


Может, я зря поднял бучу и никаких особенностей нет. Хочется удостовериться в мнении незаангажированной общественности.

Ми.
... << Rsdn@Home 1.1.4 beta 1 >>
Re: Мультипроцессорность и .NET Framework
От: der Igel Россия  
Дата: 08.06.04 16:34
Оценка: 43 (4) :)
Hello, mihailik!

m> Интерестно, что-нибудь реальное дотнетовское кроме ASP.NET на

m> мультипроцессорных тачках запускалось? Как масштабирование, какие вообще
m> особенности? Если кто использовал многопоточный GC, то как результаты?

m> Может, я зря поднял бучу и никаких особенностей нет. Хочется

m> удостовериться в мнении незаангажированной общественности.

Ну кроме самого сайта (который неинтересн, так как ASP.NET ), на нашем сервере (2х процесорный Xeon, так что процесорров как-бы 4. Это например, заметно на дефолтном размере пуле потоков — 100 (25x4) ) сервере крутится RSDN NNTP Server.
Многопоточный (потоки берутся из пула). Явно с GC ничего не делаю — но очевидно он многопоточный (нет?).
Вообщем, никаких особенностей не заметил. Все тикает, не падает.
Posted via RSDN NNTP Server 1.9 alpha
Re[2]: Мультипроцессорность и .NET Framework
От: mihailik Украина  
Дата: 09.06.04 07:37
Оценка:
DI>сервере крутится RSDN NNTP Server. Многопоточный (потоки берутся из пула).

Да, интерестные данные. А в этом сервере что-то существенное обрабатывается, или только в MSSQL/из MSSQL данные гоняются?

Загоняется ли там что-нибудь в DataSet'ы, есть ли lock'и, P/Invoke? Так сказать, краевые эффекты.


DI> Явно с GC ничего не делаю — но очевидно он многопоточный (нет?).


Кажется, для многопоточного нужно где-то выставлять фишку. По умолчанию, вроде как не многопоточный. Типа, серверный, но однопоточный — по-моему так.
... << Rsdn@Home 1.1.4 beta 1 >>
Re[2]: Мультипроцессорность и .NET Framework
От: Fomka Россия  
Дата: 09.06.04 07:45
Оценка: 9 (1) +1
Здравствуйте, der Igel, Вы писали:

DI>Явно с GC ничего не делаю — но очевидно он многопоточный (нет?).


Вот выдержка из Рихтера

Synchronization-Free Allocations

On a multiprocessor system running the workstation (MSCorWks.dll) or server
(MSCorSvr.dll) version of the execution engine, generation 0 of the managed heap is
partitioned into multiple memory arenas, one arena per thread. This allows multiple threads
to make allocations simultaneously so that exclusive access to the heap isn’t required.

Scalable Parallel Collections

On a multiprocessor system running the server version of the execution engine
(MSCorSvr.dll), the managed heap is split into several sections, one per CPU. When a
garbage collection is initiated, the garbage collector has one thread per CPU; each thread
collects its own section in parallel with the other threads. Parallel collections work well for
server applications where the worker threads tend to exhibit uniform behavior. The
workstation version of the execution engine (MSCorWks.dll) doesn’t support this feature.

Concurrent Collections

On a multiprocessor system running the workstation version of the execution engine
(MSCorWks.dll), the garbage collector has an additional background thread that collects
objects concurrently, while the application runs. When a thread allocates an object that
pushes generation 0 over its threshold, the garbage collector first suspends all threads and
then determines which generations to collect. If the garbage collector needs to collect
generation 0 or 1, then it proceeds as normal. However, if generation 2 needs collecting, the
size of generation 0 grows beyond its threshold to allocate the new object and the
application’s threads are resumed.

Re[3]: Мультипроцессорность и .NET Framework
От: der Igel Россия  
Дата: 09.06.04 16:11
Оценка: 18 (1)
Hello, mihailik!

m> Да, интерестные данные. А в этом сервере что-то существенное

m> обрабатывается, или только в MSSQL/из MSSQL данные гоняются?

С одной стороны на сокете висим асинхронно, ждемс, с другой стороны web-service дергаем.
Так что, существенного особо не обрабатывается, ну мессаги из одного формата в другой туда-сюда конвертятся.
Особо не профилировал...

m> Загоняется ли там что-нибудь в DataSet'ы, есть ли lock'и, P/Invoke? Так

m> сказать, краевые эффекты.

Нет, особых краевых эффектов нет — ни DataSet'ов, ни lock'ов, ни P/Invoke'ов.
Posted via RSDN NNTP Server 1.9 alpha
Re[4]: Мультипроцессорность и .NET Framework
От: der Igel Россия  
Дата: 09.06.04 17:05
Оценка: :))
Hello, der!

dI> С одной стороны на сокете висим асинхронно, ждемс, с другой стороны


Совмещение несовместимого
Posted via RSDN NNTP Server 1.9 alpha
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.