tobotras: (Default)
[personal profile] 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);
  }

Date: 2014-08-22 05:30 am (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
сегодня не ставится, а завтра -- опа и ставится.
а апи эти поди похожи как близнецы-братья, разница только в инклюдах и префиксах, т.е. все бесплатно, если сразу.

Profile

tobotras: (Default)
tobotras

December 2024

S M T W T F S
123 4567
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 11th, 2025 03:35 pm
Powered by Dreamwidth Studios