The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Раздел полезных советов: Автоматическое определение в Linux ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Автоматическое определение в Linux ..."  +/
Сообщение от auto_tips (??), 19-Авг-12, 23:05 
Данный подход можно применять для обработки данных на компьютерных системах с разным количеством процессоров.

Пример скрипта с использованием cppcheck

   #!/bin/sh

   COUNT=$(cat /proc/cpuinfo | grep 'model name' | sed -e 's/.*: //' | wc -l)
   echo "number of detected CPUs =" $COUNT

   cppcheck -j $COUNT --force --inline-suppr . 2>errors.txt

URL:
Обсуждается: http://www.opennet.dev/tips/info/2708.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Андрей (??), 19-Авг-12, 23:05 
Хмм.. А зачем?? Типа каждый день отсылать статистику по кол-ву процов на мыло админа?? Плюс еще график от рисовать :)
Было бы неплохо описать задачу с которой столкнулись и для чего это?? Загрузку процессоров, понятно для чего в автоматическом режиме, но кол-во... Что-то я не догоняю - подскажите??
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Vee Neeemail (?), 19-Авг-12, 23:11 
Как вариант:
COUNT=$(lscpu -p=cpu | grep -v \# | wc -l)

Не понимаю только, для чего вырезание заголовка строки sed-ом, вариант без него что-то упускает?
COUNT=$(grep 'model name' /proc/cpuinfo | wc -l)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Карбофос (ok), 19-Авг-12, 23:19 
например, для параллельной обработки фотографий
отчасти проблематика была затронута здесь http://www.opennet.dev/tips/info/2498.shtml
то есть, немного переписав скрипт, его можно применять универсально для разных компов, с различным кол-вом процессоров
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Карбофос (ok), 19-Авг-12, 23:25 
благодарю за дополнение!
нет, не упускает. видимо, sed еще использовался для того, чтобы выдавать имя процессора, после этого просто ничего не меняли :)
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "Автоматическое определение в Linux количества процессоров в ..."  +1 +/
Сообщение от pavlinux (ok), 20-Авг-12, 03:49 
Кто больше вариантов определения процов?


#!/bin/sh

  # Вот этот самый Юникс-вей фен-шуйный, POSIX IEEE Std 1003.1-2001, все дела...

  getconf _NPROCESSORS_ONLN;

  # А дальше скриптодрочка.
  echo $((`cat /sys/devices/system/cpu/online | cut -d"-" -f2`+1));
  dmesg | grep "processors activated" | cut -d" " -f3;

Хардкор мазафака кульхацкер метод


#!/bin/sh

cat >> /tmp/cpus.c << EOF
#include <stdio.h>
#include <unistd.h>

int main(void) {

     printf("%ld\n", sysconf(_SC_NPROCESSORS_ONLN));

return 0;
}
EOF
gcc /tmp/cpus.c -o /tmp/cpus;

export CPU=$(/tmp/cpus)


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Андрей (??), 20-Авг-12, 04:53 
Далек от этой темы.. Пока далек.. Но кто знает когда потребуется.. Спасибо :)
В любом случае, чтобы избежать подобных глупых вопросов, не помешало бы описание 'проблемы' в начале 'типса' :)
Спасибо еще раз..
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

8. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от pavlinux (ok), 20-Авг-12, 05:04 
 
#!/bin/sh

sed -ne '/processor/p;' /proc/cpuinfo | wc -l;
awk '/processor/{x++}; END {print x}' /proc/cpuinfo;

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от pavlinux (ok), 20-Авг-12, 05:49 
COUNT=$((`lscpu -p=cpu | tail -1`+1))

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

10. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Карбофос (ok), 20-Авг-12, 07:10 
с комуляцией - вообще жесть.
спасибо за варианты :)

слушай, а он разве в /proc/cpuinfo как раз не показывает только активированные процы?

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

11. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Andrey Mitrofanov (?), 20-Авг-12, 09:58 
> Не понимаю только, для чего вырезание заголовка строки sed-ом, вариант без него что-то упускает?

А wc?!%)

> COUNT=$(grep 'model name' /proc/cpuinfo | wc -l)

egrep -c '^processor' /proc/cpuinfo

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

12. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Карбофос (ok), 20-Авг-12, 10:35 
кстати, тоже хорошая идея использовать как можно меньше утилит, мерси за сие!
grep -c '^processor' /proc/cpuinfo
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Карбофос (ok), 20-Авг-12, 12:45 
это нужно для параллельного запуска заданий по обработке данных, для полного использования компьютерных ресурсов.
как раз с cppcheck и был приведен пример: запускается несколько параллельных потоков статической проверки исходников
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

14. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Анонимуз (?), 20-Авг-12, 15:24 
Процов? Насколько я заметил, тут речь идет исключительно о количестве ядер.
Ну, я понимаю, что обычно не количество сокетов интересует, а именно ядра, но почему бы так и не написать сразу?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Карбофос (ok), 20-Авг-12, 15:41 
это принципиально что-то меняет?
для меня лично ядро=процессор. точка.
можно, конечно, вступить в бессмысленный диспут, в том числе и затронуть HT.
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "Автоматическое определение в Linux количества процессоров в ..."  –1 +/
Сообщение от Анонимуз (?), 20-Авг-12, 16:37 
Для большинства людей операционная система = винда, а название статьи не соответствует содержимому.
Не-не, спорить тут не о чем, все хорошо.
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Andrey Mitrofanov (?), 20-Авг-12, 23:22 
> но почему бы так и не написать сразу?

А в "процессора-а-ах" я зничиительно длинннее! <.)>

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

18. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от pavlinux (ok), 21-Авг-12, 01:09 
Да, только онлайновые!

Где-то там: http://lxr.free-electrons.com/source/arch/x86/kernel/cpu/pro...

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

19. "Автоматическое определение в Linux количества процессорных я..."  +/
Сообщение от АнонимусРекс (?), 22-Авг-12, 00:10 
а где разделение на треды?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Автоматическое определение в Linux количества процессорных я..."  +/
Сообщение от Карбофос (ok), 22-Авг-12, 00:50 
если шапка жмёт - дополни
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

21. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Карбофос (ok), 22-Авг-12, 00:52 
ну вот и речь об чем: нефиг забор городить из нескольких скриптов
Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

22. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от pavlinux (ok), 22-Авг-12, 04:05 
# getconf _NPROCESSORS_ONLN;

как раз делает вот это

# echo $(('cat /sys/devices/system/cpu/online | cut -d"-" -f2'+1));

только тебе не видно :)

$ strace -e open getconf _NPROCESSORS_ONLN 2>&1 | grep sys

open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

23. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Аноним (-), 22-Авг-12, 21:19 
Например чтобы make пинать с нужным -j. Ну так, самый очевидный вариант :)
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

24. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от pavlinux (ok), 23-Авг-12, 02:42 
А двайте регистрами меряться?!
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

25. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Аноним (-), 23-Авг-12, 10:38 
как все сложно в ваших линухах, толи дело во фре:
sysctl kern.smp.cpus
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

26. "Автоматическое определение в Linux количества процессорных я..."  +1 +/
Сообщение от DelGod (?), 23-Авг-12, 20:56 
Количество физических процессоров
grep 'physical id' /proc/cpuinfo | sort -u | wc -l

Количиство Ядер в каждом из процесоров
grep 'core id' /proc/cpuinfo | sort -u | wc -l

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

27. "Автоматическое определение в Linux количества процессорных я..."  –1 +/
Сообщение от Michael Shigorinemail (ok), 24-Авг-12, 02:55 
> если шапка жмёт - дополни

Вообще в первом же Вашем примере наблюдается избыточное применение cat(1), да и остального:

echo "CPU cores available: `grep -c ^processor /proc/cpuinfo`"

А для адаптивного параллельного выполнения лучше сразу смотреть на parallel(1) или paexec(1).

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

28. "Автоматическое определение в Linux количества процессорных я..."  +/
Сообщение от zumm (?), 24-Авг-12, 17:32 
гыгы

#!/bin/sh
cat >> /tmp/cpus.f90 << EOF
program cpus_num
use omp_lib
write (*,*) omp_get_num_procs()
end program cpus_num
EOF

gfortran /tmp/cpus.f90 -fopenmp -o /tmp/cpus;
/tmp/cpus

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

29. "Автоматическое определение в Linux количества процессорных я..."  –1 +/
Сообщение от Michael Shigorinemail (ok), 24-Авг-12, 17:38 
> -fopenmp

Этак недалеко до "поставить оракл и сделать запрос". :)

(напомнило анекдот про выяснение чётности числа различными программистами)

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

30. "Автоматическое определение в Linux количества процессоров в ..."  +1 +/
Сообщение от Michael Shigorinemail (ok), 24-Авг-12, 17:39 
> Для большинства людей операционная система = винда

Большинство людей таких слов-то не знают, из наблюдений...

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

31. "Автоматическое определение в Linux количества процессорных я..."  +/
Сообщение от Карбофос (ok), 24-Авг-12, 18:04 
>echo "CPU cores available: `grep -c ^processor /proc/cpuinfo`"

наблюдается избыточность и ненужность такой строки вообще. а мне нужно было значение переменной.

Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

32. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Аноним (-), 24-Авг-12, 21:01 
И сколько сантиметров у тебя регистр?
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

33. "Автоматическое определение в Linux количества процессоров в ..."  +1 +/
Сообщение от pavlinux (ok), 26-Авг-12, 05:18 
> И сколько сантиметров у тебя регистр?

strlen("sizeof(register);");

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

34. "Автоматическое определение в Linux количества процессорных я..."  +/
Сообщение от pavlinux (ok), 26-Авг-12, 05:41 
> Количество физических процессоров
> grep 'physical id' /proc/cpuinfo | sort -u | wc -l

Да не, жирно слишком - и grep, и sort, и wc...  

$ getconf _NPROCESSORS_ONLN;


> Количиство Ядер в каждом из процесоров
> grep 'core id' /proc/cpuinfo | sort -u | wc -l

12
4
8

А че, на моем кластере и 4-х ядерные есть и 8-ми и 12... :)


Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

35. "Автоматическое определение в Linux количества процессорных я..."  +1 +/
Сообщение от pavlinux (ok), 26-Авг-12, 05:54 
> (напомнило анекдот про выяснение чётности числа различными программистами)

Как-то лет 12-13 назад, мерились в фидо, в RU.LINUX, кто-сколько,
придумает способов замены команды ls


Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

36. "Автоматическое определение в Linux количества процессорных я..."  +/
Сообщение от ананим (?), 29-Авг-12, 00:14 
ну тады и от меня добавь:
1)
$ cat /sys/devices/system/cpu/online
0-7
$ cat /sys/devices/system/cpu/offline
$ cat /sys/devices/system/cpu/possible
0-7
$ cat /sys/devices/system/cpu/present
0-7
2)
# dmidecode -t processor|grep Thread
    Thread Count: 8
# dmidecode -t processor|grep Core
    Family: Core i7
    Version: Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz
    Core Count: 4
    Core Enabled: 4
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

37. "Автоматическое определение в Linux количества процессорных я..."  +/
Сообщение от Crazy Alex (ok), 06-Сен-12, 11:47 
Мне, кстати, такие извращения когда-то пригодились - надо было разобраться с железкой, в которой было что-то адски ограниченное в роли шелла - в частности, ls не было. Обходился "echo *" и подобными.
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

38. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Аноним (-), 27-Окт-12, 19:05 
>> Для большинства людей операционная система = винда
> Большинство людей таких слов-то не знают, из наблюдений...

А должны были?

Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

39. "Автоматическое определение в Linux количества процессоров в ..."  +/
Сообщение от Michael Shigorinemail (ok), 27-Окт-12, 20:14 
> А должны были?

Здесь -- да, наверное.

Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

40. "Автоматическое определение в Linux количества процессорных я..."  +/
Сообщение от sailoremail (??), 05-Май-13, 22:56 
COUNT=$(sed -ne '/processor/p;' /proc/cpuinfo | wc -l)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

41. "Автоматическое определение в Linux количества процессорных я..."  +/
Сообщение от ziplex (?), 26-Сен-18, 15:18 
Забыли про утилиту nproc
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру