Есть ли способ прогамации для определения близости процессора к процессу в c/C++ для операционной системы Linux.CPU Affinity
ответ
Вам необходимо использовать sched_setaffinity(2)
.
Например, для работы на процессорах 0 и 2 только:
#define _GNU_SOURCE
#include <sched.h>
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(0, &mask);
CPU_SET(2, &mask);
result = sched_setaffinity(0, sizeof(mask), &mask);
(0
для первого параметра означает текущий процесс, поставить PID, если это какой-то другой процесс, который вы хотите контролировать).
См. Также sched_getcpu(3)
.
Используйте sched_setaffinity на уровне процесса, или pthread_attr_setaffinity_np для отдельных потоков.
Короче
unsigned long mask = 7; /* processors 0, 1, and 2 */
unsigned int len = sizeof(mask);
if (sched_setaffinity(0, len, &mask) < 0) {
perror("sched_setaffinity");
}
ВИскать CPU Affinity для получения более подробной информации
Я сделал много усилий, чтобы понять, что происходит, поэтому я добавить этот ответ для помощи людям, как я (я использую gcc
компилятор в Linux мята)
#include <sched.h>
cpu_set_t mask;
inline void assignToThisCore(int core_id)
{
CPU_ZERO(&mask);
CPU_SET(core_id, &mask);
sched_setaffinity(0, sizeof(mask), &mask);
}
int main(){
//cal this:
assignToThisCore(2);//assign to core 0,1,2,...
return 0;
}
Но не забудьте добавить эту опцию в команде компилятора: -D _GNU_SOURCE
Поскольку операционная система может назначить процесс конкретного ядра, вы можете добавить этот GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=2,3"
в файл потайного, расположенном в /etc/default
и пробег sudo update-grub
в терминале для резервирования ядер вы хотите
- 1. CPU Affinity Masks (Помещение потоков на разные процессоры)
- 2. Process Affinity
- 3. Процессор Affinity на Linux
- 4. Android Task Affinity Объяснение
- 5. Android set thread affinity
- 6. IBM MobileFirst Session Affinity
- 7. Приоритет OpenMP и CPU
- 8. linux irq affinity set не может принять effctive
- 9. asp.net mvc3 request thread affinity
- 10. Результаты распространения Affinity не соответствуют
- 11. Azure: Что такое «Affinity Group»?
- 12. CPU
- 13. Java Thread Affinity lib: Почему Affinity установлен в 1 << 3?
- 14. Кластеризация из матрицы Affinity в Python
- 15. Docker Swarm Mode service anti-affinity
- 16. Работа коллокации Affinity в Apache Ignite
- 17. DOS Batch multicore affinity не работает
- 18. Отключение ARR Affinity с использованием шаблона ARM
- 19. Как работает affinity-collocation в Inite?
- 20. Использование класса sklearn.cluster.SpectralClustering с параметром affinity = 'precomputed'
- 21. Максимальное использование CPU (максимально допустимый использование CPU)
- 22. python multiprocessing, cpu-s и cpu core
- 23. Связь между процессами Linux cpu-to-cpu
- 24. Kernel panic, CPU stucked, CPU stalled
- 25. Производительность CPU
- 26. Проблема с привязкой к CPU с использованием API Python для MOSEK
- 27. Одна или несколько групп Affinity для отдельных сред?
- 28. Как использовать sqlite manifest typing/type affinity с помощью sqlalchemy?
- 29. Запуск исполняемого файла using/affinity в cmd.exe (Windows XP)
- 30. Сессия Affinity поддерживается балансировщиком загрузки apache после одного экземпляра
Это может дополнить метод: для запроса CPU поток в настоящее время работает при использовании этого: –
ScrollerBlaster
2012-02-28 23:09:32
не забудьте указать _GNU_SOURCE_ при компиляции – 2014-01-20 16:42:34