答案1
按T以树状视图查看父进程下的线程。您还可以NLWP
通过 htop 设置屏幕添加显示每个进程的线程数的列F2。(尽管名称如此,但该列显示的是内核线程数,与用户空间 LWP 无关。)
总体而言,这些数字远非“不寻常”或“过大”(对于现代 12 核系统而言更是如此)。只有当总数达到 6-7k 时,我才会费心调查。
未运行但仅等待被某些特定事件唤醒(例如等待 poll(2) 系统调用返回)的进程或线程不占用任何 CPU 时间。调度程序不会继续检查每个任务在等待什么以及是否需要被唤醒——相反,事件本身 知道唤醒哪些任务当它完成时。
例如,如果您的 Apache httpd 中有 256 个线程正在等待套接字上的传入连接,则除非套接字上有活动,否则调度程序甚至不会查看它们。
换句话说,每个进程或线程实际需要花费 CPU 时间的唯一事情是htop 本身(因为它确实每秒重新扫描每个任务的状态)。