Intereting Posts
Является ли подразумеваемая декларация функции законной в C89? Передача динамически выделенного массива в качестве параметра в C связь между двумя дочерними процессами с трубами Как вы используете offsetof () в структуре? Поиск типов данных одинаковой точности в нескольких языках программирования, например C / C ++, D, Go Как разгрузить конкретный stream одного приложения в определенные ядра Xeon Phi? fscanf в C не читает полные строки? Эффективное генерирование случайных чисел в открытом интервале (0,1) Странное поведение printf с inet_ntoa Как синхронизировать pthreads менеджера / рабочего без соединения? Видимость памяти через библиотеку pthread? Десятичное значение для двоичного Безопасное наказание char * удваивается в C Напишите функцию, которая перегруппирует связанный список, чтобы помещать узлы в четные позиции после узлов в нечетных позициях в списке Проблема компиляции примера K & R

Как получить число физических процессоров: s в Linux с помощью C?

Я знаю, что sysconf(_SC_NPROCESSORS_ONLN) даст мне количество логических процессоров. Но как я могу получить количество физических процессоров?

@Havoc P: offline cpus не отображается в / proc / cpuinfo.

Топология CPU описывается как / sys / devices / system / cpu / cpu * / топология / *

Вы можете разобрать / proc / cpuinfo и подсчитать количество отдельных строк «физического идентификатора:». Вид раздражает, но я не знаю, есть ли лучший вариант. Если вы используете GLib или другую библиотеку с поддержкой регулярных выражений, было бы проще. Или вы можете открыть () командную строку, чтобы сделать это, если вы чувствуете себя очень взломанным. пример командной строки: http://www.brandonhutchinson.com/Understanding_proc_cpuinfo.html

Я думаю, что лучший способ получить эту информацию – использовать hwloc: http://www.open-mpi.org/projects/hwloc/ .

Они предоставляют кучу пользовательских инструментов, которые позволяют вам получить топологию процессора в системе, но они также предоставляют библиотеку, которую вы можете использовать с C: http://www.open-mpi.org/projects/hwloc/doc/ v1.1.1 / # интерфейс

Возможно, этот ответ на аналогичный вопрос помогает. Есть комментарий о том, что код не правильный, но это может быть хорошей отправной точкой.