LINUX.ORG.RU

Нужно перепланировать ядерный поток из самого потока?

 ,


0

3

Почитал разные статейки про ядерные потоки. Как создать, завершить поток - все объясняется на раз два. Вопрос про то, чем ядерный поток отличается от пользовательского, что-то как-то мало затрагивается. Т.е. вроде как такая же задача, а вроде и нет.

В общем создал модуль ядра, в котором запускается поток. Поток в цикле нечто считает. Меньше, чем через минуту, такой модуль крэшится с сообщением типа: rcu_sched self-detected stall on cpu #. Т.е. я таки правильно понимаю, что ядерный поток сам время от времени должен вызывать schedule?

Ответ на: комментарий от post-factum

Я понимаю, что краткость - сестра таланта. Я уже в курсе, что код типа такого:

if (need_resched)
	schedule();

спасает положение. Но таки хотелось бы услышать объяснение сути происходящего.

zloy_starper ★★★
() автор топика
Ответ на: комментарий от zloy_starper

Я подозреваю, что у тебя CONFIG_PREEMPT_VOLUNTARY=y, и если так, то scheduling ядро будет делать только в явно указанных местах.

post-factum ★★★★★
()

Т.е. я таки правильно понимаю, что ядерный поток сам время от времени должен вызывать schedule?

нет

anonymous
()
Ответ на: комментарий от post-factum

Я подозреваю, что у тебя CONFIG_PREEMPT_VOLUNTARY=y, и если так, то scheduling ядро будет делать только в явно указанных местах.

Да, это я уже тоже заметил, что с PREEMPT ядром поток не вылетает с указанной ошибкой. Как явно указывать места, возможен scheduling? Это типа критических секций, только наоборот?

zloy_starper ★★★
() автор топика
Ответ на: комментарий от zloy_starper

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

post-factum ★★★★★
()
Ответ на: комментарий от post-factum

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

Т.е. в такой момент надо вызывать schedule()? Так?

zloy_starper ★★★
() автор топика
Ответ на: комментарий от post-factum

Еще бы найти, где такое можно увидеть. То, что попадается на глаза, в потоке быстренько что-то делает и тут же вызывает schedule, чтобы отдать процессорное время, или вообще засыпает.

zloy_starper ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.