Планирование и квант потока - PullRequest
0 голосов
/ 05 июня 2018

Мне было интересно, может ли слишком много потоков потенциально повлиять на квант времени, заданный конкретному потоку.

Например, если мой процесс имеет 100 потоков, может ли следующий / запланированный поток иметь меньше квантов /пакетный, чем 1000 потоков, так как планирование заняло бы еще больше времени?

IMO, так как планирование запускает свой собственный процесс, у него есть свой собственный поток для планирования, поэтому он не должен влиять на количество других потоков (но следует ввести некоторую задержку для выполнения следующего / запланированного потока).

Есть еще идеи?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Если ваша операционная система не была спроектирована с нуля, чтобы быть ОС реального времени (например, Xenomai или VxWorks ), вы будетеобнаружите, что планировщик ОС предоставляет очень, очень мало гарантий относительно того, когда ваши потоки будут работать, или как долго они будут продолжать работать после того, как они будут работать.

Учитывая вышеизложенное, вполне вероятно, чтоНаличие других потоков на том же компьютере (будь то потоки внутри вашего собственного процесса или потоки в других процессах) будет влиять на количество процессорного времени, которое получают ваши собственные потоки.Например, если другие потоки работают с более высоким приоритетом, чем ваши потоки, и существует конфликт между ядрами ЦП (т. Е. В конкретный момент времени нужно запустить больше потоков, чем имеется ядер ЦП для их запуска), тогда планировщик будетсбросить один из запущенных потоков с его текущего ядра ЦП до того, как истечет его квант, чтобы теперь готовый к запуску поток с более высоким приоритетом мог начать выполняться немедленно.

В общем, ответ на этот видВопрос заключается в разновидности «там будут драконы» - то есть, если вы написали свою многопоточную программу правильно, то вам не нужно знать (или заботиться) о том, какие квантовые размеры получают ваши потоки, как должен делать ваш код.быть в состоянии работать правильно независимо от того, как именно планировщик раздает временные срезы потокам.

(Исключение составляют случаи, когда абсолютно необходимо поведение в реальном времени ; в этом случае вы, вероятно, захотитеработать в операционной системе реального времени, которая может предоставить вам необходимые гарантии)

Что касается того, сколько времени требуется планировщику, чтобы определить, какой поток должен быть запущен, наличие большего количества потоков увеличивает накладные расходы планировщика, но в большинстве операционных систем увеличение очень незначительно - алгоритм планирования равен O(log N) или даже * 1018.* относительно количества потоков.Конечно, вы все равно можете заставить компьютер «удариться о стену», если будете продолжать добавлять больше потоков на неопределенное время, но предел, который вы в конечном итоге достигнете, скорее будет связан с исчерпанием ОЗУ, чем с производительностью алгоритма планирования.

0 голосов
/ 05 июня 2018

Используя запутанную терминологию «один ко многим», вы действительно имеете дело с симулированными потоками.Это не реализация операционной системы, а реализация библиотеки.Библиотека не будет знать кванты, а операционная система не будет знать о потоках.Таким образом, поток, как вы предполагаете, не оказывает влияния на кванты и планирование процессов.

...