Мы покупаем сервер для запуска различных программных пакетов биоинформатики. Основной пакет на нашей тестовой машине является многопоточным и полностью привязан к ЦП, ввод-вывод и ОЗУ не ограничивают производительность - ЦП работает на 100%, тогда как ОЗУ и дисковый ввод-вывод находятся на минимальном уровне.
Мы хотим быть уверены, что получим лучший процессор для нашей рабочей нагрузки, но, учитывая довольно большой список Intel Xeon на выбор, как мы можем выбрать лучший для наших нужд?
Я понимаю, что на фундаментальном уровне «больше» = «лучше», но как я могу определить, имеет ли, например, более высокая скорость шины большее значение по сравнению с большим кешем, или большее количество ядер лучше, чем тактовая частота.
Итак, есть ли способ профилировать наш программный пакет, чтобы выяснить, какой процессор выбрать. Рассматриваемое программное обеспечение представляет собой набор скриптов Python, поэтому мы можем выполнять профилирование в Linux или Windows.
Вы смотрели на кэш, который является частью действительно отличного Валгринд пакет профилирования памяти?
Cachegrind, по крайней мере, даст вам представление о том, сколько происходит перегрузки кеша. Вы можете обнаружить, что ваше приложение так сильно перегружает кеш, что не имеет значения, есть ли у вас больший L2 / L3-кеш Xeon или нет, но, опять же, вы можете быть связаны конвейером ЦП, и сбой может не происходить, что много.
Cachegrind также позволяет вам устанавливать произвольные размеры кеша, чтобы вы могли тестировать свой код в различных сценариях размера кеша.