标签: thread

从 TID 获取 PID

我运行iotop以检查重度磁盘用户的程序,以防我需要降低它们的优先级。通常这已经足够了,但iotop只显示线程 ID (TID),有时我想知道进程 ID (PID),以便我可以找到有关哪个进程负责的更多信息。

不幸的是,虽然ps可以显示 TID(又名 SPID,LWP),但它没有一个标志来获取 TID 列表,就像处理带有--pid. 我能做的最好的事情就是列出 TID,然后grep是输出。例如,如果线程 id 是 792,我可以这样做

$ ps -eLf | grep ' 792 '
Run Code Online (Sandbox Code Playgroud)

这工作得相当好,但有点不优雅。

有没有更好的办法?

ps thread pthreads

11
推荐指数
1
解决办法
6187
查看次数

我可以找到关于正在运行的线程上的事件轮询的哪些信息?

继“如何将 strace 附加到不在 ps 输出中的进程? ”中描述的问题之后。

我正在尝试调试一个中途挂起的进程。

通过strace -f在我的父进程上使用,我能够确定我有一堆正在显示的线程:

# strace -p 26334
Process 26334 attached - interrupt to quit
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, {}, 4096, 500)          = 0
epoll_wait(607, ^C <unfinished ...>
Process 26334 detached
Run Code Online (Sandbox Code Playgroud)

进一步调查:

# readlink /proc/26334/fd/607
anon_inode:[eventpoll]
Run Code Online (Sandbox Code Playgroud)

我的直觉告诉我,我已经设法让一些线程处于死锁状态,但我epoll对继续前进的了解还不够多。是否有任何命令可以让我深入了解这些线程正在轮询什么,或者这个 epoll 描述符映射到哪些文件描述符。

process thread

9
推荐指数
1
解决办法
1万
查看次数

线程与(分叉)进程

Linux 应用程序通常 fork 然后 exec(使用 execve() ),但 Java 应用程序和某些 Apache MPM 使用线程。如果fork,使用fork + exec来生成一个进程,线程的高级版本是什么?JVM 或 Worker MPM 如何产生线程?

process fork thread

9
推荐指数
2
解决办法
2万
查看次数

我应该尝试“平衡”我的线程还是 linux 这样做?

一个简单的例子。我正在运行一个使用 TCP 套接字处理 http 请求的进程。它可能 A) 计算一些意味着 CPU 将成为瓶颈的东西 B) 发送一个可能导致网络成为瓶颈的大文件或 C) 具有半随机访问的复杂数据库查询导致磁盘瓶颈

我是否应该尝试将每个页面/API 调用归类为上述类型中的一种或多种,​​并尝试平衡每种调用的数量?或者操作系统会为我这样做吗?我如何决定我想要多少线程?

我将为硬件线程 12 和 48 使用 2 个数字(英特尔至强有那么多)。我想有 2/3 的线程用于重型 CPU(8/32),1 个线程用于重型磁盘(或每个磁盘 1 个重型线程),其余 3/15 用于其他任何事情,这意味着不要尝试平衡网络。

我是否应该在仅支持 12/48 线程的硬件上拥有超过 12/48 的线程?我想要更少,所以我不会导致 CPU 进入较慢的节流模式(我忘记了它的名字,但我听说如果一次激活太多芯片会发生这种情况)。如果我必须加载和资源平衡我的线程,我会怎么做?

linux scheduling kernel thread linux-kernel

9
推荐指数
1
解决办法
318
查看次数

什么是需求?

我在网上搜索了这个问题的答案,但找不到明确的答案。我找到的最佳答案如下:

kondemand 是一个内核线程,属于 cpufreq 子系统的 ondemand 调控器,它根据利用率统计改变系统的 p-state。因此,它有助于电源管理。

但是对于kondemand 以何种方式帮助电源管理的含义仍然存在不确定性,或者它真的是与电源管理有关的进程/线程?

有人可以解释一下吗?

process power-management thread

7
推荐指数
1
解决办法
1万
查看次数

程序 pstree 和 htop 显示具有唯一 PIDS 的线程。这怎么可能?

我运行了程序 pstree -p 31872 ,它打印了以下输出:

 ruby(31872)???{ruby}(31906)         
             ??{ruby}(32372)
Run Code Online (Sandbox Code Playgroud)

pstree 的手册页说:

进程的子线程位于父进程下,并用花括号中的进程名称显示,例如

       icecast2---13*[{icecast2}]
Run Code Online (Sandbox Code Playgroud)

(以上显示不同,因为缺少 -p 选项,禁用压缩。)

在没有 -p 的情况下运行 pstree 31872 给出:

ruby???2*[{ruby}] 
Run Code Online (Sandbox Code Playgroud)

当我尝试使用ps观察那些 PIDS 时,没有找到任何结果。但是,pid 存在于 /proc 中。

我的问题是,为什么线程会有不同的 pid?我希望它们与过程相同(31872)。运行 htop 时观察到相同的行为。

process ps thread htop

7
推荐指数
1
解决办法
6391
查看次数

内核线程似乎会干扰完全无滴答模式吗?

我正在尝试禁用本地计时器中断以实现低延迟。我在内核配置中启用了完全无滴答模式,并且为相关内核设置了引导参数 nohz_full。

然而,当我通过 /proc/interrupts 查看中断计数时,我看到本地定时器中断每核心每秒计数 1000 次,这意味着完全无滴答不起作用。

无滴答模式文档说,为了使无滴答工作,只有一个正在运行的进程需要在那个核心上。

当我查看顶部时,我在给定的核心(本例中的核心 1)下看到以下内容:

   19 root      RT   0     0    0    0 S  0.0  0.0   0:00.00  1 watchdog/1
   20 root      -2   0     0    0    0 S  0.0  0.0   0:02.15  1 rcuc/1
   21 root      RT   0     0    0    0 S  0.0  0.0   0:00.04  1 migration/1
   22 root      -2   0     0    0    0 S  0.0  0.0   0:00.25  1 ksoftirqd/1
   23 root      RT   0     0    0    0 S  0.0  0.0   0:00.00  1 posixcputmr/1
   24 root      20   0     0 …
Run Code Online (Sandbox Code Playgroud)

linux performance kernel thread latency

5
推荐指数
1
解决办法
1342
查看次数

POSIX 是否定义了上下文切换?

POSIX 上下文切换是否定义明确?它与在 C 中切换线程相同吗?C 编译器能否为上下文切换生成所有内容,或者切换线程或切换“上下文”的例程是否仍然需要汇编编程?甚至定义了“上下文”的含义-它与线程不一样吗?

thread

5
推荐指数
1
解决办法
1011
查看次数

limit.conf 中的 nproc 是指进程数还是线程数?

如果我想检查是否达到了 nproc 值的最大值,我应该这样做:

ps -ef | wc -l
Run Code Online (Sandbox Code Playgroud)

或者

ps -efL | wc -l
Run Code Online (Sandbox Code Playgroud)

nproc inlimits.conf是指进程数还是线程数?

linux thread ulimit

5
推荐指数
1
解决办法
6012
查看次数

Linux 不区分进程和线程吗?

据我所知,在 Linux 内核中,

  • 该结构task_struct代表线程,即轻量级进程,但不是进程。

  • 进程不由任何结构表示,而是由共享相同线程组 ID 的线程组表示。

那么操作系统概念中的以下内容是否正确?

Linux 还提供了使用clone()系统调用创建线程的能力。但是,Linux 不区分进程和线程。事实上,Linux 使用术语任务——而不是进程或线程——来指代程序中的控制流。

这是什么意思?

谢谢。

相关Linux 如何区分线程和子进程?

linux process lightweight thread linux-kernel

5
推荐指数
1
解决办法
1836
查看次数