Выполняется ли функция malloc / memcpy независимо на NUMA?

Пытаясь увеличить скорость моих приложений на не-NUMA / стандартных ПК, я всегда обнаруживал, что узким местом был вызов malloc () потому что даже на многоядерных машинах он совместно используется / синхронизируется между всеми ядрами.

У меня есть ПК с архитектурой NUMA, использующий Linux и C, и у меня есть два вопроса:

  1. В машине NUMA, поскольку каждое ядро ​​снабжено собственной памятью, malloc () будет выполняться независимо на каждом ядре / памяти, не блокируя другие ядра?
  2. Как обстоят дела в этих архитектурах? вызовы к memcpy () сделаны? Может ли это быть вызвано независимо на каждом ядре или, вызывая его, когда ядро ​​блокирует другие? Возможно, я ошибаюсь, но я помню, что memcpy () имеет ту же проблему, что и malloc () , т.е. когда одно ядро ​​использует его, другим приходится ждать.
9
задан unwind 28 March 2011 в 23:34
поделиться