Для приложения C# .net 3.5, которое неизбежно создает много данных в куче, с точки зрения аппаратного обеспечения, что бы я искал с точки зрения памяти? Будет ли это просто самая большая шина сокета? Или «пропускная способность» карт памяти? Или фактическая частота, с которой они работают?Распределение кучи и подходящее оборудование
Мы пришли к выводу, что узкое место нашего приложения нельзя избежать, и при масштабировании, распространяя работу по нескольким потокам, мы, похоже, получаем «коллизии» из-за большого количества потоков, обращающихся к ОЗУ.
Реальная проблема относится к блокировке элементов и имеет много потоков, пытающихся получить доступ к этим элементам. Невозможно продолжить оптимизацию блокировки резьбы. Поскольку это касается потоковой передачи, я не был уверен, следует ли мне также исследовать альтернативные варианты выбора ЦП, а также внимательно посмотреть статистику QPI? В настоящее время мы используем архитектуру Westmere, но медленную тактовую частоту 2 ГГц.
EDIT: было предложено, что DMA может нам помочь.
Я собираюсь пометить это как C# и Java, потому что я считаю, что ответ не будет C# -специфичным.
Заранее спасибо,
Сколько процессоров? –
Откуда вы знаете, что нет возможности еще больше оптимизировать блокировку? – DNA
@Henk, 4x Физические процессоры из 8 логических ядер (4x Xeon x7550) – mezamorphic