Интересно, определяются ли потоки ядра системы max max тем, сколько ядер у вашего процессора. Или это решено по-другому?
1 ответ
Нет, вы можете установить максимальное количество потоков в ядре.
Обратите внимание, что слово "потоки" используется для разных вещей:
Большинство программистов используют его для ссылки на независимые потоки выполнения в смысле потоков POSIX. Это способ организации программ и не зависит от аппаратной поддержки. См. Максимальное количество потоков на процесс в Linux?
Intel использует его для обозначения своей технологии "Hyperthreading". См. Почему мой Intel i7-920 отображает 8 ядер вместо 4 ядер? и что означает "поток" по отношению к процессорам?
Возможно, использование Intel вызывает путаницу.
Обновление веток ядра
Вот некоторые потоки ядра Linux, работающие в CoLinux под Vista на двухъядерном процессоре AMD Athlon 64 X2.
$ ps -eLf
UID PID PPID LWP C NLWP STIME TTY TIME CMD
root 1 0 1 0 1 17:24 ? 00:00:00 init [2]
root 2 0 2 0 1 17:24 ? 00:00:00 [kthreadd]
root 3 2 3 0 1 17:24 ? 00:00:00 [ksoftirqd/0]
root 4 2 4 0 1 17:24 ? 00:00:00 [events/0]
root 5 2 5 0 1 17:24 ? 00:00:00 [khelper]
root 21 2 21 0 1 17:24 ? 00:00:00 [kblockd/0]
root 22 2 22 0 1 17:24 ? 00:00:00 [kseriod]
root 41 2 41 0 1 17:24 ? 00:00:00 [pdflush]
root 42 2 42 0 1 17:24 ? 00:00:00 [pdflush]
root 43 2 43 0 1 17:24 ? 00:00:00 [kswapd0]
root 44 2 44 0 1 17:24 ? 00:00:00 [aio/0]
root 727 2 727 0 1 17:24 ? 00:00:00 [kjournald]
LWP - это идентификатор потока.
(См. man ps
: «-L Показывать потоки, возможно, со столбцами LWP и NLWP»… «LWP lwp (легкий процесс или поток) ID сообщаемого lwp. (Псевдоним spid, tid)»)
kthreadd - это демон потоков ядра, я полагаю, что он отвечает за все остальные потоки ядра. Примечание. Я не показываю демонов типа klogd, которые не выполняются в кольце 0 (насколько я знаю).
Количество потоков ядра!= количество ядер процессора. (ссылка на название вопроса)
Потоки ядра состоят из набора регистров, стека и нескольких соответствующих структур данных ядра.
...
Предполагаемое преимущество потоков ядра перед процессами заключается в более быстром создании и переключении контекста по сравнению с процессами.
...
Потоки ядра считаются «легкими», и можно ожидать, что количество потоков будет ограничено только адресным пространством и временем процессора
...
В частности, ядра операционной системы склонны рассматривать потоки ядра как особый тип процесса, а не как уникальную сущность. Например, в ядре Solaris потоки называются «легковесными процессами» (LWP ). Linux фактически создает потоки ядра, используя специальный вариант fork, называемый «клон», и до недавнего времени каждому потоку присваивался отдельный идентификатор процесса. Из-за этого наследия на практике потоки ядра имеют тенденцию быть ближе к памяти и затратам времени к процессам, чем потоки уровня пользователя,
(Многократные потоки управления в параллельных программах с миграцией, 2006 г.)