Unneeded kernel threads (xfs, jfs, gfs2)
Hi guys, I know that not all kernel thread users are converted to start only when needed but the following is little annoying specially when I'm not even using jfs, xfs and gfs2.
Look at the ps output from a standard distro 2.6.24.5 kernel after a fresh boot:
Quoted 20 lines
PID TTY STAT TIME COMMAND
2 ? S< 0:00 [kthreadd]
3 ? S< 0:00 \_ [migration/0]
4 ? S< 0:00 \_ [ksoftirqd/0]
5 ? S< 0:00 \_ [migration/1]
6 ? S< 0:00 \_ [ksoftirqd/1]
7 ? S< 0:00 \_ [events/0]
8 ? S< 0:00 \_ [events/1]
9 ? S< 0:00 \_ [khelper]
102 ? S< 0:00 \_ [kblockd/0]
103 ? S< 0:00 \_ [kblockd/1]
106 ? S< 0:00 \_ [kacpid]
107 ? S< 0:00 \_ [kacpi_notify]
230 ? S< 0:00 \_ [ata/0]
231 ? S< 0:00 \_ [ata/1]
232 ? S< 0:00 \_ [ata_aux]
233 ? S< 0:00 \_ [ksuspend_usbd]
239 ? S< 0:00 \_ [khubd]
242 ? S< 0:00 \_ [kseriod]
284 ? S 0:00 \_ [pdflush]Quoted 8 lines
285 ? S 0:00 \_ [pdflush] 286 ? S< 0:00 \_ [kswapd0] 326 ? S< 0:00 \_ [aio/0] 327 ? S< 0:00 \_ [aio/1] 349 ? S< 0:00 \_ [jfsIO] 350 ? S< 0:00 \_ [jfsCommit] 351 ? S< 0:00 \_ [jfsCommit] 352 ? S< 0:00 \_ [jfsSync]
Not needed here, because no jfs partition is in use.
Quoted 5 lines
354 ? S< 0:00 \_ [xfslogd/0] 355 ? S< 0:00 \_ [xfslogd/1] 356 ? S< 0:00 \_ [xfsdatad/0] 357 ? S< 0:00 \_ [xfsdatad/1] 361 ? S< 0:00 \_ [xfs_mru_cache]
Not needed here, because no xfs partition is in use.
Quoted 3 lines
366 ? S< 0:00 \_ [gfs2_scand] 367 ? S< 0:00 \_ [glock_workqueue] 368 ? S< 0:00 \_ [glock_workqueue]
I dont use gfs2
Quoted 10 lines
1047 ? S< 0:00 \_ [scsi_tgtd/0] 1048 ? S< 0:00 \_ [scsi_tgtd/1] 1118 ? S< 0:00 \_ [scsi_eh_2] 1120 ? S< 0:00 \_ [scsi_eh_3] 1122 ? S< 0:00 \_ [scsi_eh_4] 1124 ? S< 0:00 \_ [scsi_eh_5] 1133 ? S< 0:00 \_ [exec-osm/0] 1134 ? S< 0:00 \_ [exec-osm/1] 1140 ? S< 0:00 \_ [block-osm/0] 1141 ? S< 0:00 \_ [block-osm/1]
What is osm? Can't find anything in kernel config?
Quoted 1 line
1148 ? S< 0:00 \_ [khpsbpkt]
What is this?
Quoted 6 lines
1193 ? S< 0:00 \_ [ksnapd] 1201 ? S< 0:00 \_ [rpciod/0] 1202 ? S< 0:00 \_ [rpciod/1] 1204 ? S< 0:00 \_ [kjournald] 2448 ? S< 0:00 \_ [kjournald] 2649 ? S 0:00 \_ [lockd]
Kernel config can be found here:
http://mirrors.unixsol.org/slackware/slackware-12.1/kernels/hugesmp.s/config
Signature · 2 lines
Georgi Chorbadzhiyski http://georgi.unixsol.org/
Quoted 4 lines · Georgi Chorbadzhiyski
Not needed here, because no jfs partition is in use. Not needed here, because no xfs partition is in use. I dont use gfs2
You miss the best of Linux. So, why not unload the modules?
Quoted 3 lines
Quoted 1 line
1141 ? S< 0:00 \_ [block-osm/1]
What is osm? Can't find anything in kernel config?
drivers/message/i2o/i2o_block.c:#define OSM_NAME "block-osm"
Quoted 3 lines
Quoted 1 line
1148 ? S< 0:00 \_ [khpsbpkt]
What is this?
ieee1394/ieee1394_core.c:static struct task_struct *khpsbpkt_thread;
Quoted 6 lines · Georgi Chorbadzhiyski
Hi guys, I know that not all kernel thread users are converted to start only when needed but the following is little annoying specially when I'm not even using jfs, xfs and gfs2.
Look at the ps output from a standard distro 2.6.24.5 kernel after a fresh boot:
...
Quoted 4 lines
Kernel config can be found here:
http://mirrors.unixsol.org/slackware/slackware-12.1/kernels/hugesmp.s/config
Your distro is building all of these modules into the kernel.
CONFIG_XFS_FS=y
CONFIG_JFS_FS=y
CONFIG_GFS2_FS=y
This isnt exactly standard practice, normally they'd be set to =m and only used if required to mount a filesystem. You may want to ask the slackware people why they chose to do this for their hugexxx.s kernels.
Don
Quoted 14 lines · On Tue, 13 May 2008 15:29:38 +1000 Donald Douwsma <[email protected]> wrote:
Quoted 6 lines · Georgi Chorbadzhiyski
Hi guys, I know that not all kernel thread users are converted to start only when needed but the following is little annoying specially when I'm not even using jfs, xfs and gfs2.
Look at the ps output from a standard distro 2.6.24.5 kernel after a fresh boot:
...
Quoted 4 lines
Kernel config can be found here:
http://mirrors.unixsol.org/slackware/slackware-12.1/kernels/hugesmp.s/config
Quoted 8 lines
Your distro is building all of these modules into the kernel.
CONFIG_XFS_FS=y
CONFIG_JFS_FS=y
CONFIG_GFS2_FS=yThis isnt exactly standard practice, normally they'd be set to =m and only used if required to mount a filesystem. You may want to ask the slackware people why they chose to do this for their hugexxx.s kernels.
To be able to use those filesystems on root partitions without requiring an initrd.
Georgi might be interested to use the generic kernel instead of the huge one, it is available there :
http://mirrors.unixsol.org/slackware/slackware-12.1/slackware/a/kernel-generic-smp-2.6.24.5_smp-i686-2.tgz
Documentation :
http://mirrors.unixsol.org/slackware/slackware-12.1/README.TXT
http://mirrors.unixsol.org/slackware/slackware-12.1/README.initrd
http://mirrors.unixsol.org/slackware/slackware-12.1/RELEASE_NOTES
Cheers
Francois
Donald Douwsma mumbled something about, On 5/13/08 8:29 AM:
Quoted 13 lines
Quoted 6 lines · Georgi Chorbadzhiyski
Hi guys, I know that not all kernel thread users are converted to start only when needed but the following is little annoying specially when I'm not even using jfs, xfs and gfs2.
Look at the ps output from a standard distro 2.6.24.5 kernel after a fresh boot:
...
Quoted 3 lines
Kernel config can be found here:
http://mirrors.unixsol.org/slackware/slackware-12.1/kernels/hugesmp.s/config
Quoted 8 lines
Your distro is building all of these modules into the kernel.
CONFIG_XFS_FS=y
CONFIG_JFS_FS=y
CONFIG_GFS2_FS=yThis isnt exactly standard practice, normally they'd be set to =m and only used if required to mount a filesystem. You may want to ask the slackware people why they chose to do this for their hugexxx.s kernels.
I know that they are compiled in the kernel, but since they are not used isn't starting their own kthreads kind of unnecessary? Surely the threads can be started on demand only when xfs/etc volume is mounted.
Signature · 2 lines
Georgi Chorbadzhiyski http://georgi.unixsol.org/
FD Cami mumbled something about, On 5/13/08 8:51 AM:
Quoted 24 lines
Quoted 12 lines · On Tue, 13 May 2008 15:29:38 +1000 Donald Douwsma <[email protected]> wrote:
Quoted 6 lines · Georgi Chorbadzhiyski
Hi guys, I know that not all kernel thread users are converted to start only when needed but the following is little annoying specially when I'm not even using jfs, xfs and gfs2.
Look at the ps output from a standard distro 2.6.24.5 kernel after a fresh boot:
...
Quoted 3 lines
Kernel config can be found here:
http://mirrors.unixsol.org/slackware/slackware-12.1/kernels/hugesmp.s/configQuoted 8 lines
Your distro is building all of these modules into the kernel.
CONFIG_XFS_FS=y
CONFIG_JFS_FS=y
CONFIG_GFS2_FS=yThis isnt exactly standard practice, normally they'd be set to =m and only used if required to mount a filesystem. You may want to ask the slackware people why they chose to do this for their hugexxx.s kernels.
Quoted 6 lines
To be able to use those filesystems on root partitions without requiring an initrd.
Georgi might be interested to use the generic kernel instead of the huge one, it is available there :
http://mirrors.unixsol.org/slackware/slackware-12.1/slackware/a/kernel-generic-smp-2.6.24.5_smp-i686-2.tgz
I'm well aware of this kernels but I prefer to not use initrd when possible and still have most of the functionality available.
Signature · 2 lines
Georgi Chorbadzhiyski http://georgi.unixsol.org/
Jan Engelhardt mumbled something about, On 5/13/08 2:21 AM:
Quoted 6 lines · Georgi Chorbadzhiyski
Quoted 3 lines
Not needed here, because no jfs partition is in use. Not needed here, because no xfs partition is in use. I dont use gfs2
You miss the best of Linux. So, why not unload the modules?
ext3 is working just fine for now, thanks (:
Quoted 9 lines
Quoted 2 lines
Quoted 1 line
1141 ? S< 0:00 \_ [block-osm/1]
What is osm? Can't find anything in kernel config?
drivers/message/i2o/i2o_block.c:#define
OSM_NAME"block-osm"Quoted 2 lines
Quoted 1 line
1148 ? S< 0:00 \_ [khpsbpkt]
What is this?
ieee1394/ieee1394_core.c:static struct
task_struct*khpsbpkt_thread;
Strange names :)
Signature · 2 lines
Georgi Chorbadzhiyski http://georgi.unixsol.org/
Quoted 7 lines · Georgi Chorbadzhiyski
Quoted 7 lines
Your distro is building all of these modules into the kernel.
CONFIG_XFS_FS=y
CONFIG_JFS_FS=y
CONFIG_GFS2_FS=y
Quoted 8 lines
Quoted 3 lines
This isnt exactly standard practice, normally they'd be set to =m and only used if required to mount a filesystem. You may want to ask the slackware people why they chose to do this for their hugexxx.s kernels.
I know that they are compiled in the kernel, but since they are not used isn't starting their own kthreads kind of unnecessary? Surely the threads can be started on demand only when xfs/etc volume is mounted.
Sure - XFS will start another three kernel threads per filesystem that gets mounted. And for good measure, it cleans them up again on unmount. :)
The other threads are per-cpu workqueue threads that are shared across all XFS filesystems in the system and hence are started when XFS is initialised rather than when a mount occurs.
Cheers,
Dave.
Signature · 3 lines
Dave Chinner Principal Engineer SGI Australian Software Group
Quoted 7 lines · David Chinner
Sure - XFS will start another three kernel threads per filesystem that gets mounted. And for good measure, it cleans them up again on unmount. :)
The other threads are per-cpu workqueue threads that are shared across all XFS filesystems in the system and hence are started when XFS is initialised rather than when a mount occurs.
Well, we could refcount the number of active xfs instances and start/stop the global threads based on that. Not really worth my time IHMO, but if someone comes up with a clean enough patch it should go in.
Quoted 4 lines · Christoph Hellwig
Well, we could refcount the number of active xfs instances and start/stop the global threads based on that. Not really worth my time IHMO, but if someone comes up with a clean enough patch it should go in.
Actually doing it in the VFS might be even better. Add ->init and ->exit methods to struct file_system_type and then the filesystems can move most of module_init/exit into the new methods.
Quoted 8 lines · Donald Douwsma
Your distro is building all of these modules into the kernel.
CONFIG_XFS_FS=y
CONFIG_JFS_FS=y
CONFIG_GFS2_FS=yThis isnt exactly standard practice, normally they'd be set to =m and only used if required to mount a filesystem. You may want to ask the slackware people why they chose to do this for their hugexxx.s kernels.
Because they have always done it that way so it has to be right? :)
Signature · 1 line
Len Sorensen
Quoted 9 lines · Christoph Hellwig
Quoted 4 lines · Christoph Hellwig
Well, we could refcount the number of active xfs instances and start/stop the global threads based on that. Not really worth my time IHMO, but if someone comes up with a clean enough patch it should go in.
Actually doing it in the VFS might be even better. Add ->init and ->exit methods to struct
file_system_typeand then the filesystems can move most of module_init/exit into the new methods.
Hmm I like that idea! :)
-Eric
Quoted 8 lines · Georgi Chorbadzhiyski
Jan Engelhardt mumbled something about, On 5/13/08 2:21 AM:
Quoted 5 lines · Georgi Chorbadzhiyski
Quoted 2 lines
Quoted 1 line
1148 ? S< 0:00 \_ [khpsbpkt]
What is this?
ieee1394/ieee1394_core.c:static struct
task_struct*khpsbpkt_thread;Strange names :)
Fixed in drivers/firewire/. :-)
PS:
"k" = kernel
"hpsb" = High Performance Serial Bus ( = IEEE 1394)
"pkt" = packet (The thread completes split transactions associated with outbound request packets.)
Signature · 3 lines
Stefan Richter -=====-==--- -=-= -===- http://arcgraph.de/sr/