Что значит numactl --localalloc
делать? Привязывает ли он выделение программ только к одному узлу, numactl --localalloc
был запущен? Или он гарантирует, что всякий раз, когда программа выделяет данную память из своей локальной памяти?
--localalloc
вызовет выделение памяти из локального пула для узла, на котором выполняется процесс, каким бы узлом он ни был.
Чтобы принудительно выполнить привязку к определенному процессору, --physcpubind
опция должна быть указана. При использовании вместе с localalloc, он заставляет процесс запускаться на указанном узле и использовать память только из этого узла.
--preferred
сообщает ему, что нужно выделять память из определенного узла, если это возможно, но если нет, использовать удаленную память.
Я понимаю документацию, что --localalloc
будет выделять память на узле процессора, который сделал системный вызов. Это должно хорошо работать для приложений, в которых рабочие потоки прикреплены к отдельным процессорам, и в сочетании с malloc
библиотеки, которые хранят пулы памяти для каждого потока, такие как TCMalloc.