Влияние кэша L3 на производительность - стоит ли двухпроцессорная система?
Я буду покупать новую высокопроизводительную систему, и мне хотелось бы лучше понять, может ли двухпроцессорная система Xeon (я смотрю на новый высокопроизводительный Xeon E5-2687W) реально обеспечить заметное улучшение производительности благодаря удвоению кеша L3 (20 МБ на процессор).
(Это в дополнение к случайным дополнительным преимуществам из-за удвоения ядер и оперативной памяти.)
Мой сценарий использования, примерно, заключается в том, что у меня много фоновых приложений, запущенных в любое время - 3 или 4 приложения сжатия / резервного копирования данных, веб-сервер с низким уровнем воздействия, одна или две виртуальные машины в любой момент времени (обычно довольно простоя), и возможно 20 служебных программ, которые используют заметную (но небольшую) часть ядер ЦП. В целом, когда я не пользуюсь компьютером активно, около 25% общей мощности ЦП используется в моей текущей 6-ядерной (12-поточной) системе i7-970.
Когда я выполняю рутинную работу, загрузка процессора часто превышает 50%, а иногда достигает 75%-80%.
Xeon E5-2687W - это не только i7 второго поколения (поэтому должно улучшить производительность по этой причине), но также имеет 8 ядер (16 потоков), а не 6 ядер. По этой причине я ожидаю, что процессор будет работать на 75% реже. Тем не менее, возможность удвоения ядер и оперативной памяти является соображением.
Однако, в конце концов, я считаю, что это решение сводится к тому, обеспечит ли удвоение кэша L3 заметное улучшение. Есть много тестов, и много дискуссий, касающихся мощности процессора. Однако я нахожу очень мало дискуссий об использовании кэша L3 и о том, как увеличение кэша L3 (например, удвоение его с помощью двух процессоров) влияет на производительность.
Например: если запущены только два процесса, но каждый получает выгоду от большого кэша L3 (например, это может иметь место в фоновых процессах, которые часто сканируют файловую систему), возможно, общая производительность системы может заметно улучшиться с двумя ЦП - даже если на каждом процессоре активно только одно ядро - каждый процесс имеет удвоенный эффективный кэш L3.
Я надеюсь, что кто-то почувствует преимущества увеличения (или удвоения) размера кэша L3.
Примечание: рассматриваемый мной процессор (Xeon E5-2687W) имеет 20 МБ кэш-памяти L3, поэтому система с двумя ЦП будет иметь 40 МБ кэш-памяти L3.
3 ответа
Как всегда в случае с вопросами кеширования, ответом будет "это полностью зависит от вашей рабочей нагрузки". Кэш может использоваться только в том случае, если ваши запущенные процессы тратят значительное количество времени на доступ к памяти и демонстрируют заметное месторасположение для адресации памяти (и не удовлетворены меньшим объемом кэш-памяти L1/L2, имеющимся в этом случае на ядро).
Наличие большого числа процессов, выполняющихся в разных потоках, увеличивает шансы на перерасход общего кэша и, таким образом, уменьшает выигрыш в производительности, который, возможно, был бы достигнут в противном случае. Это также является причиной увеличения размера кэша за счет увеличения числа ядер - чем больше потоков, конкурирующих с памятью, вы запускаете, тем больше должен быть ваш общий кэш, чтобы вообще быть полезным.
Есть старая статья от Tom's Hardware, в которой сравниваются два старых чипа P4 с кешем L3 и без него для ряда рабочих нагрузок рендеринга / графики. Цифры, как и весь тест, являются мусором, но содержат хорошее объяснение архитектуры кэширования в целом и кэширования L3 в частности.
Итог: вы, вероятно, не заметите разницу, но если вам нужны точные цифры, вам придется купить оба ЦП и запустить свою нагрузку на обоих из них, чтобы сравнить время выполнения.
Люди, которые говорят, что "кеш L3 увеличивается всего на 20 МБ", просто не знают, о чем говорят. Разумное увеличение размера кеша для данной архитектуры может привести к ощутимому увеличению производительности даже при средней нагрузке. Это более верно, когда вы думаете об архитектуре с турбонаддувом, реализованной в процессорах Sandy Bridge и Ivy Bridge.
У меня была возможность лично поэкспериментировать с этим на нескольких различных этапах архитектуры x86/x86_64: Sempron против Athlon, Celeron против Pentium 4, Pentium4 против Athlon, Pentium4-m против Pentium-m, Pentium 4 против Xeon, i7 против Xeon E5. Всякий раз, когда кеш больше (обычно удваивается или почти удваивается).
Является ли стоимость удвоения кэша доступной, зависит от вас. Но Xeon лучше для стабильности, так как они поддерживают память ECC и такие технологии, которые, безусловно, необходимы в некоторых приложениях (таких как 3D-моделирование для литья алюминия под давлением, что в моем случае).
Из вашего описания того, что вы делаете и как ваша нынешняя система справляется с этим, я могу только удивляться, почему вы хотите заменить это. В лучшем случае кэш-память третьего уровня даст незначительный прирост, но с большими затратами, но в описанном вами случае использования вы не можете ожидать каких-либо различий в результате увеличения кеш-памяти третьего уровня всего на 20 МБ.