Пытаясь увеличить скорость моих приложений на не-NUMA / стандартных ПК, я всегда обнаруживал, что узким местом был вызов malloc ()
потому что даже на многоядерных машинах он совместно используется / синхронизируется между всеми ядрами.
У меня есть ПК с архитектурой NUMA, использующий Linux и C, и у меня есть два вопроса:
malloc ()
будет выполняться независимо на каждом ядре / памяти, не блокируя другие ядра? memcpy ()
сделаны? Может ли это быть вызвано независимо на каждом ядре или, вызывая его, когда ядро блокирует другие? Возможно, я ошибаюсь, но я помню, что memcpy ()
имеет ту же проблему, что и malloc ()
, т.е. когда одно ядро использует его, другим приходится ждать.