Question about watchdog
Dear Sir/Ma'am Thank you for your time ,i'm a student new to linux kernel.at present ,i'd like to create a kernel thread say use kthread_create func ,my question is :how can i make this thread to run on a cpu and never get switched or scheduled , there is a while(1).....structure in that thread i need it to do work . at present i comes with errors like "NMI watchdog: BUG: soft lockup - CPU#0 stuck for 23s! [test thread :1881]",i understand there is a watchdog but is there anyway i can feed the dog myself and let my thread have cpu as much as i want ? thanks again ,any information would be great ! best wishes!
On 07/01/2018 08:44 AM, bing zhu wrote:
my question is :how can i make this thread to run on a cpu and never get switched or scheduled ,
it is a preemptive multitasking kernel -- So many immigrant groups have swept through our town that Brooklyn, like Atlantis, reaches mythological proportions in the mind of the world - RI Safir 1998 http://www.mrbrklyn.com DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002 http://www.nylxs.com - Leadership Development in Free Software http://www2.mrbrklyn.com/resources - Unpublished Archive http://www.coinhangout.com - coins! http://www.brooklyn-living.com Being so tracked is for FARM ANIMALS and and extermination camps, but incompatible with living as a free human being. -RI Safir 2013
On 01 July 2018 at 13:44 bing zhu <zhubohong12@gmail.com> wrote:
Dear Sir/Ma'am Thank you for your time ,i'm a student new to linux kernel.at present ,i'd like to create a kernel thread say use kthread_create func ,my question is :how can i make this thread to run on a cpu and never get switched or scheduled , there is a while(1).....structure in that thread i need it to do work . at present i comes with errors like "NMI watchdog: BUG: soft lockup - CPU#0 stuck for 23s! [test thread :1881]",i understand there is a watchdog but is there anyway i can feed the dog myself and let my thread have cpu as much as i want ?
Yowsers! Why would you want to do that? The whole idea of a watchdog is to prevent threads hogging the CPU for a long time. Linux is a multi-user, multi-process, pre-emptive operating system. It needs to share. :-) If you really need a thread to hog the processor, indefinitely, then you're probably using the wrong OS. Use the correct tool for the job. Or explore "cpusets". Or maybe rebuild the kernel with soft watchdog turned off. Justin.
On Mon, Jul 02, 2018 at 08:58:16AM +0100, Justin Skists wrote:
On 01 July 2018 at 13:44 bing zhu <zhubohong12@gmail.com> wrote:
Dear Sir/Ma'am Thank you for your time ,i'm a student new to linux kernel.at present ,i'd like to create a kernel thread say use kthread_create func ,my question is :how can i make this thread to run on a cpu and never get switched or scheduled , there is a while(1).....structure in that thread i need it to do work . at present i comes with errors like "NMI watchdog: BUG: soft lockup - CPU#0 stuck for 23s! [test thread :1881]",i understand there is a watchdog but is there anyway i can feed the dog myself and let my thread have cpu as much as i want ?
Yowsers! Why would you want to do that? The whole idea of a watchdog is to prevent threads hogging the CPU for a long time. Linux is a multi-user, multi-process, pre-emptive operating system. It needs to share. :-)
Not true, Linux can take a cpu, remove itself from it, and run a single process if needed, just fine. It's a great operating system for such a thing. You just have to use the apis we have for this already, it's been possible to do this for many years now. As for why you would want to do this within the kernel itself, well, I can understand that need for some situations, and it is possible to do as well, just use the correct api and all is fine (no, I can't remember what it is at the moment, sorry...) greg k-h
On 02 July 2018 at 09:29 Greg KH <greg@kroah.com> wrote:
On Mon, Jul 02, 2018 at 08:58:16AM +0100, Justin Skists wrote:
On 01 July 2018 at 13:44 bing zhu <zhubohong12@gmail.com> wrote:
Dear Sir/Ma'am Thank you for your time ,i'm a student new to linux kernel.at present ,i'd like to create a kernel thread say use kthread_create func ,my question is :how can i make this thread to run on a cpu and never get switched or scheduled , there is a while(1).....structure in that thread i need it to do work . at present i comes with errors like "NMI watchdog: BUG: soft lockup - CPU#0 stuck for 23s! [test thread :1881]",i understand there is a watchdog but is there anyway i can feed the dog myself and let my thread have cpu as much as i want ?
Yowsers! Why would you want to do that? The whole idea of a watchdog is to prevent threads hogging the CPU for a long time. Linux is a multi-user, multi-process, pre-emptive operating system. It needs to share. :-)
Not true, Linux can take a cpu, remove itself from it, and run a single process if needed, just fine. It's a great operating system for such a thing.
Hmm. Interesting. Looks like I've got more reading to do. :-) Thanks, Justin.
On Mon, Jul 02, 2018 at 10:29:30AM +0200, Greg KH wrote:
On Mon, Jul 02, 2018 at 08:58:16AM +0100, Justin Skists wrote:
On 01 July 2018 at 13:44 bing zhu <zhubohong12@gmail.com> wrote:
Dear Sir/Ma'am Thank you for your time ,i'm a student new to linux kernel.at present ,i'd like to create a kernel thread say use kthread_create func ,my question is :how can i make this thread to run on a cpu and never get switched or scheduled , there is a while(1).....structure in that thread i need it to do work . at present i comes with errors like "NMI watchdog: BUG: soft lockup - CPU#0 stuck for 23s! [test thread :1881]",i understand there is a watchdog but is there anyway i can feed the dog myself and let my thread have cpu as much as i want ?
Yowsers! Why would you want to do that? The whole idea of a watchdog is to prevent threads hogging the CPU for a long time. Linux is a multi-user, multi-process, pre-emptive operating system. It needs to share. :-)
Not true, Linux can take a cpu, remove itself from it, and run a single process if needed, just fine. It's a great operating system for such a thing.
You just have to use the apis we have for this already, it's been possible to do this for many years now.
As for why you would want to do this within the kernel itself, well, I can understand that need for some situations, and it is possible to do as well, just use the correct api and all is fine (no, I can't remember what it is at the moment, sorry...)
greg k-h
What are you saying? That is the filesystem bus sends a HW interupt on the bus that the scheuler will ignore it and refuse to swap the executable to handle the HW interupt?
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-- So many immigrant groups have swept through our town that Brooklyn, like Atlantis, reaches mythological proportions in the mind of the world - RI Safir 1998 http://www.mrbrklyn.com DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002 http://www.nylxs.com - Leadership Development in Free Software http://www2.mrbrklyn.com/resources - Unpublished Archive http://www.coinhangout.com - coins! http://www.brooklyn-living.com Being so tracked is for FARM ANIMALS and and extermination camps, but incompatible with living as a free human being. -RI Safir 2013
On 07/08/2018 04:44 PM, valdis.kletnieks@vt.edu wrote:
Error while parsing statement., What is a "filesystem bus" and when does it issue a HW interrupt?
You have a hard drive on the system bus and it sends interupts... Not to mention other devices like network cards, GPUs, Firewire, express PCI and PLP, and even the CPU and LUNA All these hard peices demand attention and send interupts on the system bus http://www.nylxs.com/docs/journal_2_2015.pdf -- So many immigrant groups have swept through our town that Brooklyn, like Atlantis, reaches mythological proportions in the mind of the world - RI Safir 1998 http://www.mrbrklyn.com DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002 http://www.nylxs.com - Leadership Development in Free Software http://www.brooklyn-living.com Being so tracked is for FARM ANIMALS and and extermination camps, but incompatible with living as a free human being. -RI Safir 2013
On Mon, 09 Jul 2018 09:30:51 -0400, Ruben Safir said:
On 07/08/2018 04:44 PM, valdis.kletnieks@vt.edu wrote:
Error while parsing statement., What is a "filesystem bus" and when does it issue a HW interrupt?
You have a hard drive on the system bus and it sends interupts...
That's probably on the PCI or USB buses - Linux doesn't have a "filesystem bus".
On 07/09/2018 12:17 PM, valdis.kletnieks@vt.edu wrote:
Linux doesn't have a "filesystem bus".
of course not. i mispoke -- So many immigrant groups have swept through our town that Brooklyn, like Atlantis, reaches mythological proportions in the mind of the world - RI Safir 1998 http://www.mrbrklyn.com DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002 http://www.nylxs.com - Leadership Development in Free Software http://www.brooklyn-living.com Being so tracked is for FARM ANIMALS and and extermination camps, but incompatible with living as a free human being. -RI Safir 2013
On Sun, 01 Jul 2018 20:44:29 +0800, bing zhu said:
say use kthread_create func ,my question is :how can i make this thread to run on a cpu and never get switched or scheduled , there is a while(1).....structure in that thread i need it to do work
That's almost certainly a result of a poor design. What problem were you trying to solve by wrapping a 'while(1)' around in-kernel code?
comes with errors like "NMI watchdog: BUG: soft lockup - CPU#0 stuck for 23s! [test thread :1881]",i understand there is a watchdog but is there anyway i can feed the dog myself and let my thread have cpu as much as i want ?
There are ways. But you probably should figure out how to fix your code so feeding the watchdog isn't needed....
you mean like this ? i think im doing it right finally ,thank you ! 2018-07-02 23:59 GMT+08:00 <valdis.kletnieks@vt.edu>:
On Sun, 01 Jul 2018 20:44:29 +0800, bing zhu said:
say use kthread_create func ,my question is :how can i make this thread to run on a cpu and never get switched or scheduled , there is a while(1).....structure in that thread i need it to do work
That's almost certainly a result of a poor design. What problem were you trying to solve by wrapping a 'while(1)' around in-kernel code?
comes with errors like "NMI watchdog: BUG: soft lockup - CPU#0 stuck for 23s! [test thread :1881]",i understand there is a watchdog but is there anyway i can feed the dog myself and let my thread have cpu as much as i want ?
There are ways. But you probably should figure out how to fix your code so feeding the watchdog isn't needed....
participants (5)
-
bing zhu -
Greg KH -
Justin Skists -
Ruben Safir -
valdis.kletnieks@vt.edu