Быстрый и бестолковый
майонезный пожиратель горчицы
У линукса есть несколько механизмов ограничить процесс в доступных процессорных ядрах. 
21st-Aug-2014 08:53 pm
У линукса есть несколько механизмов ограничить процесс в доступных процессорных ядрах. Как минимум, 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);   }

---
Оригинал вот у Бориса Тоботраса
</code></pre>
Comments 
21st-Aug-2014 06:00 pm
А у вас молоко убежало^W^Wформатирование уехало :)
22nd-Aug-2014 05:02 am
а почему нельзя ограничиться _SC_NPROCESSORS_ONLN?

не ехидствую, интересуюсь.
22nd-Aug-2014 05:26 am
А он, зараза, возвращает одно и то же, невзирая ни на cgroups (ограничение cpuset.cpus), ни на taskset — возвращает количество активных процессоров в системе. Ну, во всяком разе, у меня (2.6.32, glibc-2.12).
22nd-Aug-2014 05:31 am
2.6.32? cgroups? мнэ…
22nd-Aug-2014 05:37 am
А что не так?
22nd-Aug-2014 05:43 am
я к тому, что древность же ископаемая. да ну в задницу воркэранудить баги такой древности, если на новых версиях их нет. ну, то есть, я не проверял, но возможно, давно уже починили.
22nd-Aug-2014 06:15 am
RHEL 6.5 выпущен в ноябре 2013го. Оно, конечно, если production quality не волнует, то, моржет, и древность ископаемая. Нас волнует, к сожалению :)
22nd-Aug-2014 06:31 am
рхел вообще всегда древность ископаемая, вне зависимости от даты выпуска.
22nd-Aug-2014 07:13 am
См. выше :-)
22nd-Aug-2014 07:24 am
ну да, я в курсе: «у старого софта и баги старые, родные, известные.»

а вот откуда взялся миф, что «говно мамонта» и «production quality» — синонимы, этого я никогда понять не мог. никто же не заставляет на bleeding edge сидеть. но и не на злоебучей древности же.
22nd-Aug-2014 07:58 am
Ну, мне лень набивать так много букв. Просто поверьте на слово, что большая часть (примерно 99.9%) больших компаний не бросается переустанавливать свои production-сервера через день после выхода новой версии ОС. И через неделю тоже не бросается. И через месяц тоже не. (Ещё 2 месяца тому RHEL 6.5 был bleeding edge, как Вы выражаетесь)
22nd-Aug-2014 08:04 am
да я знаю это всё. но именно поэтому советы Кровавого Энтерпрайза всегда несколько… скажем так: своеобразны. как и его софт, набитый воркэраундами багов, которые в апстриме давно починили.
22nd-Aug-2014 08:07 am
собственно, это главная причина, по которой я стараюсь от Кровавого Энтерпрайза держаться подальше. там, конечно, бывают большие интересные задачи (иногда %-), над которыми было бы любопытно поработать, но борьба с окаменелостями не радует совершенно.
22nd-Aug-2014 05:42 am
нет, я понимаю: «что дали — с тем и плывём», но всё равно.
21st-Aug-2014 11:14 pm
Вот точно, оно и ленту разносит, если без ввода строки.
This page was loaded Oct 21st 2019, 10:31 am GMT.