Vague scheduler problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Hi,

I am running Linux on my embedded board that is crunched on RAM. When
the task #0 (kswapd) tries to do a kernel_thread() to start the init
task (task #1) I am facing a strange problem.  It calls alloc_pages()
in which it checks if it is low on memory; if so it sets its policy
flag to SCHED_YIELD so that it can call kswapd task to free some
memory. Since there is no other task to return, it returns immediately
and in do_fork() copies its policy flag SCHED_YIELD to init task
policy with the result that task#1 has its policy set to SCHED_YIELD.
Now the kernel cannot run init task and hence sits in a tight loop.

My questions are:
(i) Has linux kernel been tested on a low memory board where this problem
could have occurred?
(ii) When a parent task has its policy set to SCHED_YIELD and it does a
do_fork() why does
the child inherit this policy? It is like the parent is giving birth to a
dead baby; shouldn't do_fork()
check for parent's policy before doing a blind copy.

Any help would be appreciated.

Thanks

Koo
--
If you were to die tonight, where would you spend eternity?
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
IRC Channel:   irc.openprojects.net / #kernelnewbies
Web Page:      http://www.kernelnewbies.org/



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux