2012-04-10 2 views
1

Для приложения C# .net 3.5, которое неизбежно создает много данных в куче, с точки зрения аппаратного обеспечения, что бы я искал с точки зрения памяти? Будет ли это просто самая большая шина сокета? Или «пропускная способность» карт памяти? Или фактическая частота, с которой они работают?Распределение кучи и подходящее оборудование

Мы пришли к выводу, что узкое место нашего приложения нельзя избежать, и при масштабировании, распространяя работу по нескольким потокам, мы, похоже, получаем «коллизии» из-за большого количества потоков, обращающихся к ОЗУ.

Реальная проблема относится к блокировке элементов и имеет много потоков, пытающихся получить доступ к этим элементам. Невозможно продолжить оптимизацию блокировки резьбы. Поскольку это касается потоковой передачи, я не был уверен, следует ли мне также исследовать альтернативные варианты выбора ЦП, а также внимательно посмотреть статистику QPI? В настоящее время мы используем архитектуру Westmere, но медленную тактовую частоту 2 ГГц.

EDIT: было предложено, что DMA может нам помочь.

Я собираюсь пометить это как C# и Java, потому что я считаю, что ответ не будет C# -специфичным.

Заранее спасибо,

+0

Сколько процессоров? –

+0

Откуда вы знаете, что нет возможности еще больше оптимизировать блокировку? – DNA

+0

@Henk, 4x Физические процессоры из 8 логических ядер (4x Xeon x7550) – mezamorphic

ответ

1

Я бы опробовал приложение на более быстрой машине. Из-за его звуков, ваша пропускная способность памяти - это горлышко бутылки, поэтому я бы попробовал 4,5 ГГц с тактовой частотой i7 с 32 ГБ памяти 1600 МГц или аналогичным. Вы можете купить один за около 1000 долларов. Вы можете обнаружить, что с гораздо более быстрой системой шея бутылки движется.

BTW: Я сомневаюсь, что создание объекта на C# можно избежать, хотя оно может быть не достигнуто, поскольку кажется, что у него есть ограниченное время, чтобы исправить это. В Java я написал несколько высокопроизводительных серверов, которые GC не реже одного раза в день, но вам нужно написать весь основной код с целью. Аналогичным образом вы можете написать услугу, которая не блокируется в критических разделах кода, но ее не сложно, просто добавить это позже.

+0

Привет! Спасибо, что помогли на прошлой неделе. Что касается этой проблемы, считаете ли вы, что скорость процессора будет иметь большое значение (следует указать, что мы используем Xeons на сервере в настоящий момент, поэтому разогнанный i7 невозможен)? Также упоминается скорость памяти, но не ширина интерфейса? Я предполагаю удвоенную скорость, но половина ширины даст хорошую производительность, как половину скорости, но вдвое больше ширины - они оба дают ту же теоретическую ширину полосы? – mezamorphic

+0

Забыл спросить, есть ли особенно хорошие архитектуры (Intel и AMD) для шины памяти?Я слышал, что у opterons всегда была лучшая шина памяти, чем у Intel – mezamorphic

+0

Я считаю, что это правда, пока Sandy Bridge, который, когда он вышел, был самым быстрым. Вероятно, у AMD есть что-то еще лучше или, по крайней мере, запланировано. –

Смежные вопросы