Я знаю, что sysconf(_SC_NPROCESSORS_ONLN) даст мне количество логических процессоров.Но как узнать количество физических процессоров?
sysconf(_SC_NPROCESSORS_ONLN)
@ Havoc P: автономные процессоры не отображаются в / proc / cpuinfo.
Топология процессора описывается в / sys / devices / system / cpu / cpu * / topology / *
Я думаю, что лучший способ получить эту информацию - использовать hwloc: http://www.open -mpi.org / projects / hwloc / .
Они предоставляют набор пользовательских инструментов, которыеПозвольте вам получить топологию процессора системы, но они также предоставляют библиотеку, которую вы можете использовать из C: http://www.open -mpi.org / projects / hwloc / doc / v1.1.1 / # interface
Вы можете проанализировать / proc / cpuinfo и посчитать количество отдельных строк "физического идентификатора:".Вроде раздражает, но я не знаю, есть ли лучший вариант.Если вы используете GLib или другую библиотеку с поддержкой регулярных выражений, это будет проще.Или вы можете использовать popen () в командной строке, если вы чувствуете себя действительно хакером.пример командной строки по адресу: http://www.brandonhutchinson.com/Understanding_proc_cpuinfo.html
Возможно этот ответ на аналогичный вопрос помогает.Есть комментарий о неправильности кода, но это может быть хорошей отправной точкой.