Оживший юзерпик (tobotras) wrote,
Оживший юзерпик
tobotras

Линуксовое

У линукса есть несколько механизмов ограничить процесс в доступных процессорных ядрах. Как минимум, cgroup и taskset. Если процессу важно знать, сколько у него ядер (чтобы сконфигурировать thread pool или ещё зачем-нибудь), то наивный способ -- прочитать /proc/cpuinfo. Он неправильный. Менее наивный -- позвать sysconf(_SC_NPROCESSORS_ONLN). Он тоже неправильный. Правильный -- вот:
  long num_processor_configured = sysconf (_SC_NPROCESSORS_CONF); /* list the number of processors configured */
  long num_processor_available;
  cpu_set_t mask;

  if (sched_getaffinity(0, sizeof(cpu_set_t), &mask) == 0) {
	num_processor_available = CPU_COUNT(&mask);
  } else {
	num_processor_available = sysconf(_SC_NPROCESSORS_ONLN);
  }
Tags: СЯУ, линуксовое, программирование, рабочее
Subscribe

  • Как мы с женой провели воскресенье

    Непросто определить, где чьё воскресенье! This entry was originally posted at https://tobotras.dreamwidth.org/728530.html. Please comment…

  • Автомобильное

    Электропривод сидений -- это удобно, кроме когда нужно с водительского места подвинуть или откинуть пассажирское сиденье. Регулярная перевозка…

  • Автомобильное

    Хочу учинить автоматическое закрывание люка при выключении зажигания. Есть модули типа Pandora DWM-502, которые это умеют. Но им надо изобрать…

"Если процессу важно знать, сколько у него ядер" - его надо переписать. ибо никто ему не гарантирует, что этих ядер вдруг не станет меньше или больше.

Error

Anonymous comments are disabled in this journal

default userpic

Your reply will be screened

Your IP address will be recorded 

  • Как мы с женой провели воскресенье

    Непросто определить, где чьё воскресенье! This entry was originally posted at https://tobotras.dreamwidth.org/728530.html. Please comment…

  • Автомобильное

    Электропривод сидений -- это удобно, кроме когда нужно с водительского места подвинуть или откинуть пассажирское сиденье. Регулярная перевозка…

  • Автомобильное

    Хочу учинить автоматическое закрывание люка при выключении зажигания. Есть модули типа Pandora DWM-502, которые это умеют. Но им надо изобрать…