сервере 2 cpu, в суме 48 потоков. В последних версиях дефолтное значение GOMAXPROCS равно же 24?
https://stackoverflow.com/questions/17853831/what-is-the-gomaxprocs-default-value
Там неясно на счет многосокетных систем. Помоему я когда тестил (давно дело было), NumCPU был равен количеству потоков одного cpu, а не потокам всех процов. А узнать с помощью го сколько цпу в системе та еще задачка 😔
тебе не нужно знать сколько цпу
cat /proc/cpuinfo | grep processor | wc -l
с помощью го. Даный метод не кроссплатформенный
На сколько мне известно, даный метод дает количество cpu(s), на одном сокете. В системе с двумя сокетами вероятно нужно runtime.GOMAXPROCS(runtime.NumCPU()*2) что бы задействовать все ядра. Или я ошибаюсь?
А почему просто не проверить, если есть доступ к этой машине? println(runtime.GOMAXPROCS(-1))
На даный момент доступа нет. Позже обязательно проверю. Думал может кто уже сталкивался с подобным и подскажет что к чему.
Не очень понятно что вы хотите сделать и какая разница сколько там сокетов. Go оперирует логическими процессорами ОC и по умолчанию задействует все логические процессоры которые эта самая ОС предоставляет.
на дедике с двумя сокетами, где каждый по 6 ядер имеет и 12 потоков, выражение выше показывает 24
Обсуждают сегодня