Закрепление памяти и процессора - PullRequest
1 голос
/ 11 августа 2010

Я работаю над проектом на C, для которого требуются потоки, работающие на разных процессорах, а не на начальном процессе.Я использую библиотеку pthread для создания этих потоков.Я использую sched_setaffinity, чтобы прикрепить основной процесс к процессору.Могу ли я сделать то же самое для каждого потока, чтобы закрепить их на отдельных процессорах?

Я также закрепляю память основного процесса.Будет ли вызов mlockall (MCL_CURRENT | MCL_FUTURE) перед созданием pthreads фиксировать всю память, используемую также pthreads, или мне нужно будет повторно вызывать ее в каждом pthread?

Заранее спасибо.

Ответы [ 2 ]

5 голосов
/ 11 августа 2010

В Linux у вас есть pthread_attr_setaffinity_np, но, как указывает np, это непереносимо или расширение.

3 голосов
/ 11 августа 2010

Память распределяется между всеми потоками в процессе, поэтому нет смысла вызывать mlockall более одного раза для каждого процесса.

Кроме того, память распределяется между всеми процессорами в системе.API mlockall не позволяет операционной системе записывать страницы памяти процесса на диск и не имеет ничего общего с блокировкой памяти для процессора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...