Критерии выбора процессора сервера и профилирование
Мы покупаем сервер для запуска различных программных пакетов Биоинформатика. Основной пакет на нашей тестовой машине является многопоточным и полностью связан с процессором, IO и RAM не ограничивают производительность - CPU работает на 100%, тогда как RAM и дисковый IO находятся на минимальных уровнях.
Мы хотим гарантировать, что мы получим лучшие процессоры для нашей рабочей нагрузки, но, учитывая довольно большой список Intel Xeon на выбор, как мы можем выбрать лучший для наших нужд?
Я ценю это на фундаментальном уровне, "больше" = "лучше", но как я могу определить, например, что более высокая скорость шины имеет большую разницу по сравнению с большим кешем или если больше ядер лучше тактовой частоты.
Так есть ли способ профилирования нашего программного пакета, чтобы выяснить, какой процессор выбрать. Данное программное обеспечение представляет собой набор скриптов Python, поэтому мы можем выполнять профилирование в Linux или Windows.
1 ответ
Вы взглянули на cachegrind, который является частью действительно превосходного пакета профилирования памяти Valgrind?
Cachegrind, по крайней мере, даст вам представление о том, сколько происходит кеша. Вы можете обнаружить, что ваше приложение перегружает кэш-память настолько, что не имеет значения, есть ли у вас кэш-память L2/L3 большего размера в Xeon или нет, но опять же, вы можете быть связаны конвейером ЦП, и может произойти сбой, что много.
Cachegrind также позволит вам устанавливать произвольные размеры кэша, поэтому вы сможете протестировать свой код в различных сценариях размера кэша.