|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
Есть ли смысл создавать потоки количество которых больше чем количество ядер процессора?29.10.2016, 13:09. Показов 8764. Ответов 35
Метки нет (Все метки)
Сабж. Есть ли смысл? Ведь одновременно одно ядро процессора не может выполнять более одной задачи (а поток это задача)
0
|
|
| 29.10.2016, 13:09 | |
|
Ответы с готовыми решениями:
35
Имеет ли смысл создавать больше потоков, чем ядер в процессоре?
|
|
|
|
| 29.10.2016, 15:02 | |
|
Зависит от того, что делает поток. Если потоки работают, например, с медленными устройствами типа файла или сети, то в этом случае возникают долгие (по процессорным меркам) паузы, в которых процессор простаивает, а второй поток эти паузы может эффективно заполнить. Если потоки занимаются рассчётами (т.е. сильно нагружают процессор), то большого смысла нет
4
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 29.10.2016, 15:24 [ТС] | ||
|
Если правильно понимаю, то это не всегда может быть выгодно. Потому что простаивающий поток чье место займет иной поток может быть "важнее" для работы жизни приложения. А по факту менее важный поток который вклинился в этот самый простой может мешать выполняться тем потокам которые делают основную работу(один из главных пяти закончил свою работу и теперь так же ждет вклинившийся 6-ой поток который выполняет менее полезную работу). Я прав?
0
|
||
|
|
|||
| 29.10.2016, 15:57 | |||
|
"Простой" это немного другое. Допустим, поток обратился к файлу. Делается это через ОС. ОС увидела, что данные нигде не закэшированы и полезла на диск. Обращение на диск занимается тысячи (а может и сотни тысяч) тактов и ОС об этом знает. В случае одного потока, ОС настроит процессор таким образом, чтобы он, грубо говоря, щёлкал вхолостую (это я назвал "простой"), дожидаясь, пока не придут данные с диска. В случае двух потоков ОС может поставить на исполнение на процессор второй поток, коль скоро процессор всё равно работает впустую
Добавлено через 1 минуту
2
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||
| 29.10.2016, 16:03 [ТС] | |||
|
Или я чего то не понимаю?
0
|
|||
|
|
||
| 29.10.2016, 16:34 | ||
Сообщение было отмечено Undisputed как решение
РешениеЕсли имеется один процессор (ядро) и десять процессов, то процессор их будет исполнять по очереди. Сначала 0.01 секунду будет исполнять первый процесс, потом 0.01 секунду будет исполнять второй процесс и так далее по кругу. Если у процессов есть приоритеты, то очередь будет выглядеть по другому. Например, 0.05 секунд исполнять процесс с большим приоритетом, а потом по 0.01 секунды процессы с маленьким приоритетом
3
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||
| 29.10.2016, 16:49 [ТС] | |||
|
0
|
|||
|
|
|||
| 29.10.2016, 17:16 | |||
|
2
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 29.10.2016, 17:24 [ТС] | |
|
Evg,
Плохо понимаю почему вы говорите именно про процессы когда речь идет о потоках Если один поток попросил данные с диска это ведь не означает что процесс-владелец этого потока на время будет вытеснен другим процессом. Этот процесс может остаться активным потому что второй его поток совершает более быстрые вычисления и на него может быть переключен контекст и выйдет так, что процесс который является контейнером для двух потоков все равно останется активным.
0
|
|
|
|
||||
| 29.10.2016, 18:23 | ||||
|
3
|
||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 29.10.2016, 19:38 [ТС] | |
|
Evg,
Спасибо
0
|
|
|
|
|
| 29.10.2016, 20:12 | |
|
Собственно, ещё одну мысль забыл сказать.
Если смотреть в диспетчер задач, то там обычно загрузка процессора измеряется в процентах. Допустим, у нас одно ядро и указано, что его загрузка 70%. Загрузка в 70% вовсе не означает, что работает только 70% транзисторов в процессоре или процессор работает на 70% от своей максимальной частоты или любые другие подобные соображения. А означает, что 70% процессорного времени тратится на исполнение пользовательских задача и 30% времени процессор щёлкает впустую. Т.е. находится в исполнении кодов ОС, которые выполняют циклы холостого хода или что-то подобное (я точно не знаю). Во время исполнения этих пустых кодов в процессоре действительно задействовано меньше транзисторов, т.к. на исполнение nop'а требуются совсем не такие усилия, как, например, на исполнение операции вычисления квадратного корня. Ну и, очевидно, при исполнении цикла холостого хода процессор меньше греется. Но процессор работает постоянно. А когда нет полезной нагрузки, то современные процессоры умею ещё и частоту понижать. Но пока ещё не изобрели технологий, которые для многоядерного процессора отключали бы ненужные в данный момент ядра (а это могло бы привести к ещё большей экономии энергии)
3
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 30.10.2016, 01:15 [ТС] | |
|
Evg,
Интересное замечание. Это конечно плохо. Зачем делать вид что работаешь если работы просто нет и все об этом знают? ![]() Надеюсь этот пробел в архитектуре процессоров будет исправлен
0
|
|
|
|
||
| 30.10.2016, 12:04 | ||
|
Я не настолько хорошо знаю устройство низкоуровневых вещей, чтобы ответить на эти вопросы. У меня даже нет хотя бы соображений на тему, а где вообще проблемы - в процессоре или в ОС.
Добавлено через 22 минуты Когда-то давно объяснял, мало ли вдруг пригодится (хотя на первый взгляд кажется, что тут всё слишком далеко от вопроса про многопоточность) Своя ОС для чайника (продолжение двумя постами ниже)
0
|
||
| 30.10.2016, 15:39 | ||
|
Новая однокристальная платформа использует технологию CorePilot, которая позволяет максимально задействовать наиболее производительные ядра при тяжёлой нагрузке, и сразу же отключает их при завершении выполнения ресурсоёмких задач. В Core Ix ядра не делятся на высоко/низко производительные и достаточно снижения частоты.
0
|
||
|
|
||
| 30.10.2016, 16:00 | ||
|
То, что по ссылке - это в общем-то не процессор, а целый компьютер (или может быть даже что-то типа нескольких компьютеров, объединённых в сеть).
На видеокартах, насколько я знаю, в видеопроцессор зашиты не только сами исполнительные ядра, но ещё и какие-то устройства, которые по смыслу выполняют функции операционной системы - занимаются планированием заданий и раскидыванием их по вычислительным ядрам. На этой однокристальной платформе из ссылки, возможно, тоже что-то подобное (т.е. что-то типа ОС, встроенного в железо). Такие устройства принципиально сильно отличаются от "обычных" процессоров Но в любом случае я предметно тут ничего не могу сказать. Если на современных настольных/серверных процессорах нет возможности отключать ядра, то наверное для этого есть какая-то причина Добавлено через 1 минуту Добавлено через 2 минуты Не... по ходу я загнул. У того, что называется "система на кристалле", насколько я понял, нету устройств, выполняющих роль планирования заданий
0
|
||
|
|
||
| 30.10.2016, 21:17 | ||
|
Судя по всему, тема начинает превращаться в срач, так что на всякий случай умолкаю
0
|
||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
| 02.11.2016, 16:34 | |
|
sys_beginner, тебе стоит почитать про то, что такое concurrency, а что такое parallelism, зачем они нужны и чем отличаются.
Осознать, что существуют не только системные потоки, но и концепция green threads. Разобраться с ней. Принять к сведению существование hyper-threading technology, чтобы понимать, что кол-во логических процессоров может быть больше кол-ва физических.
1
|
|
| 02.11.2016, 16:34 | |
|
Помогаю со студенческими работами здесь
20
Подсчитайте количество наборов, в которых как количество десяток, так и количество черных карт больше половины.
Температура процессора i5 3470 (+количество ядер) Можно ли подделать количество ядер процессора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|