looking for a summary of what are different kernel threads
Hi everyone,
has anyone come upon a good summary of what different kernel threads are? aoi, events, fc_dl_1, ib_addr, ib_cm, iw_cm_wc, kblockd, khelper, kthread, local_sa, migration, kjournald, watchdog, etc. It would be handy to have them described in one document - at least the most common kernel threads.
Kernel threads are marked in the ps output with square brackets. An example of output from a RHEL5 system:
[root@coke ~]# ps aux|grep ] root 1 0.0 0.0 10368 760 ? Ss 10:44 0:03 init [3] root 2 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/0] root 3 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/0] root 4 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/0] root 5 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/1] root 6 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/1] root 7 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/1] root 8 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/2] root 9 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/2] root 10 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/2] root 11 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/3] root 12 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/3] root 13 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/3] root 14 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/4] root 15 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/4] root 16 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/4] root 17 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/5] root 18 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/5] root 19 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/5] root 20 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/6] root 21 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/6] root 22 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/6] root 23 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/7] root 24 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/7] root 25 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/7] root 26 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/8] root 27 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/8] root 28 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/8] root 29 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/9] root 30 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/9] root 31 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/9] root 32 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/10] root 33 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/10] root 34 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/10] root 35 0.0 0.0 0 0 ? S< 10:44 0:00 [migration/11] root 36 0.0 0.0 0 0 ? SN 10:44 0:00 [ksoftirqd/11] root 37 0.0 0.0 0 0 ? S< 10:44 0:00 [watchdog/11] root 38 0.0 0.0 0 0 ? S< 10:44 0:00 [events/0] root 39 0.0 0.0 0 0 ? S< 10:44 0:00 [events/1] root 40 0.0 0.0 0 0 ? S< 10:44 0:00 [events/2] root 41 0.0 0.0 0 0 ? S< 10:44 0:00 [events/3] root 42 0.0 0.0 0 0 ? S< 10:44 0:00 [events/4] root 43 0.0 0.0 0 0 ? S< 10:44 0:00 [events/5] root 44 0.0 0.0 0 0 ? S< 10:44 0:00 [events/6] root 45 0.0 0.0 0 0 ? S< 10:44 0:00 [events/7] root 46 0.0 0.0 0 0 ? S< 10:44 0:00 [events/8] root 47 0.0 0.0 0 0 ? S< 10:44 0:00 [events/9] root 48 0.0 0.0 0 0 ? S< 10:44 0:00 [events/10] root 49 0.0 0.0 0 0 ? S< 10:44 0:00 [events/11] root 50 0.0 0.0 0 0 ? S< 10:44 0:00 [khelper] root 313 0.0 0.0 0 0 ? S< 10:44 0:00 [kthread] root 329 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/0] root 330 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/1] root 331 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/2] root 332 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/3] root 333 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/4] root 334 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/5] root 335 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/6] root 336 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/7] root 337 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/8] root 338 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/9] root 339 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/10] root 340 0.0 0.0 0 0 ? S< 10:44 0:00 [kblockd/11] root 341 0.0 0.0 0 0 ? S< 10:44 0:00 [kacpid] root 509 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/0] root 510 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/1] root 511 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/2] root 512 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/3] root 513 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/4] root 514 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/5] root 515 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/6] root 516 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/7] root 517 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/8] root 518 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/9] root 519 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/10] root 520 0.0 0.0 0 0 ? S< 10:44 0:00 [cqueue/11] root 523 0.0 0.0 0 0 ? S< 10:44 0:00 [khubd] root 525 0.0 0.0 0 0 ? S< 10:44 0:00 [kseriod] root 684 0.0 0.0 0 0 ? S 10:44 0:00 [khungtaskd] root 685 0.0 0.0 0 0 ? S 10:44 0:00 [pdflush] root 686 0.2 0.0 0 0 ? S 10:44 0:14 [pdflush] root 687 0.0 0.0 0 0 ? S< 10:44 0:00 [kswapd0] root 688 0.0 0.0 0 0 ? S< 10:44 0:00 [kswapd1] root 689 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/0] root 690 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/1] root 691 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/2] root 692 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/3] root 693 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/4] root 694 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/5] root 695 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/6] root 696 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/7] root 697 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/8] root 698 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/9] root 699 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/10] root 700 0.0 0.0 0 0 ? S< 10:44 0:00 [aio/11] root 855 0.0 0.0 0 0 ? S< 10:44 0:00 [kpsmoused] root 990 0.0 0.0 0 0 ? S< 10:44 0:00 [scsi_eh_0] root 991 0.0 0.0 0 0 ? S< 10:44 0:00 [qla2xxx_0_dpc] root 992 0.0 0.0 0 0 ? S< 10:44 0:00 [scsi_wq_0] root 993 0.0 0.0 0 0 ? S< 10:44 0:00 [fc_wq_0] root 994 0.0 0.0 0 0 ? S< 10:44 0:00 [fc_dl_0] root 995 0.0 0.0 0 0 ? S< 10:44 0:00 [scsi_eh_1] root 996 0.0 0.0 0 0 ? S< 10:44 0:00 [qla2xxx_1_dpc] root 997 0.0 0.0 0 0 ? S< 10:44 0:00 [scsi_wq_1] root 998 0.0 0.0 0 0 ? S< 10:44 0:00 [fc_wq_1] root 999 0.0 0.0 0 0 ? S< 10:44 0:00 [fc_dl_1] root 1026 0.0 0.0 0 0 ? S< 10:44 0:00 [kstriped] root 1079 0.0 0.0 0 0 ? S< 10:44 0:00 [ksnapd] root 1134 0.0 0.0 0 0 ? S< 10:44 0:05 [kjournald] root 1159 0.0 0.0 0 0 ? S< 10:44 0:00 [kauditd] root 1995 0.0 0.0 0 0 ? S< 10:44 0:00 [kedac] root 2826 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/0] root 2827 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/1] root 2828 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/2] root 2829 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/3] root 2830 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/4] root 2831 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/5] root 2832 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/6] root 2833 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/7] root 2834 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/8] root 2835 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/9] root 2836 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/10] root 2837 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpathd/11] root 2838 0.0 0.0 0 0 ? S< 10:44 0:00 [kmpath_handlerd] root 2916 0.3 0.0 0 0 ? S< 10:44 0:20 [kjournald] root 2919 0.0 0.0 0 0 ? S< 10:44 0:00 [kjournald] root 3044 0.0 0.0 0 0 ? S< 10:44 0:00 [iscsi_eh] root 3193 0.0 0.0 0 0 ? S< 10:45 0:00 [cnic_wq] root 3251 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_addr] root 3296 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_mcast] root 3298 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_inform] root 3299 0.0 0.0 0 0 ? S< 10:45 0:00 [local_sa] root 3313 0.0 0.0 0 0 ? S< 10:45 0:00 [iw_cm_wq] root 3327 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/0] root 3329 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/1] root 3330 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/2] root 3331 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/3] root 3332 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/4] root 3333 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/5] root 3334 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/6] root 3335 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/7] root 3336 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/8] root 3337 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/9] root 3338 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/10] root 3339 0.0 0.0 0 0 ? S< 10:45 0:00 [ib_cm/11] root 3352 0.0 0.0 0 0 ? S< 10:45 0:00 [rdma_cm] root 3563 0.0 0.0 0 0 ? S< 10:45 0:00 [bond0] root 3975 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/0] root 3976 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/1] root 3977 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/2] root 3978 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/3] root 3979 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/4] root 3980 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/5] root 3981 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/6] root 3982 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/7] root 3983 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/8] root 3984 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/9] root 3985 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/10] root 3986 0.0 0.0 0 0 ? S< 10:45 0:00 [rpciod/11] root 4349 0.0 0.0 110968 6620 ? Ss 11:03 0:00 sshd: guzenkovs [priv] root 4933 0.0 0.0 0 0 ? SN 10:45 0:00 [kipmi0] avahi 7932 0.0 0.0 21628 1312 ? Ss 10:46 0:00 avahi-daemon: running [monitor02.local] root 8361 0.0 0.0 110376 6608 ? Ss 10:46 0:00 sshd: guzenkovs [priv] root 9321 0.0 0.0 110376 6596 ? Ss 10:46 0:00 sshd: guzenkovs [priv] root 9472 0.0 0.0 110376 6592 ? Ss 10:46 0:00 sshd: guzenkovs [priv] root 10294 0.0 0.0 110376 6608 ? Ss 10:47 0:00 sshd: guzenkovs [priv] root 19592 0.0 0.0 61204 828 pts/3 S+ 12:21 0:00 grep ] [root@coke ~]# ps aux | grep ] | awk -F[ '{print $2}' | awk -F/ '{print $1}' |awk -F] '{print $1}'| sort| uniq 3 aio bond0 cnic_wq cqueue events fc_dl_0 fc_dl_1 fc_wq_0 fc_wq_1 ib_addr ib_cm ib_inform ib_mcast iscsi_eh iw_cm_wq kacpid kauditd kblockd kedac khelper khubd khungtaskd kipmi0 kjournald kmpathd kmpath_handlerd kpsmoused kseriod ksnapd ksoftirqd kstriped kswapd0 kswapd1 kthread local_sa migration monitor02.local pdflush priv qla2xxx_0_dpc qla2xxx_1_dpc rdma_cm rpciod scsi_eh_0 scsi_eh_1 scsi_wq_0 scsi_wq_1 watchdog
Another question is on naming convention for multiple threads of the same name. In the output above I can see three different naming conventions:
1) _0, _1, ... e.g. [scsi_wq_0], [scsi_wq_1]
2) /1, /2, ... e.g. [aio/0], [aio/1]
3) 1, 2, ... e.g. [kswapd0], [kswapd1] --note that there is only one swap disk on that system.
Is there any semantic difference between them?