thread

将 HDD 的逻辑扇区大小设置为 4Kn 有什么好处吗?
thread

将 HDD 的逻辑扇区大小设置为 4Kn 有什么好处吗?

现代硬盘都是“高级格式“,例如,默认情况下,它们报告逻辑/物理扇区大小为 512/4096。 默认情况下,大多数 Linux 格式化工具使用 4096 字节的块大小(至少这是 Debian/EXT4 上的默认值)。 直到今天,我还认为这是一种优化:Linux/EXT4 将 4K 数据块发送到 HDD,HDD 可以最佳地处理它们,即使其逻辑扇区大小为 512K。 但今天我读到这篇最近(2021)的帖子。该人做了一些 HDD 基准测试,以检查将 HDD 的逻辑扇区大小从 512e 切换到 4Kn 是否会提供更好的性能。他的结论是: 请记住:我的理论是文件系统使...

Admin

为什么ulimit限制会受到其他进程的影响?
thread

为什么ulimit限制会受到其他进程的影响?

我有一些进程创建大量线程(使用 python ray 模块),例如 32 (proc) * 120(每个 proc 线程)。 然后我发现其他进程在创建线程时会失败,而它们的 nTH 实际上很小(例如创建新ssh localhost连接,或top在其他 shell 中使用),远小于ulimit -a. 我想知道这ulimit是用户范围限制还是进程范围限制?如果是后者,为什么会受到其他进程的影响? ...

Admin

如何使用 /proc/ 找到子任务(线程)的堆栈/地图?
thread

如何使用 /proc/ 找到子任务(线程)的堆栈/地图?

目的: 我正在理论如何在 Linux 环境中创建指针扫描器。 免责声明: 我的发现已经在 Debian Bookworm(当前稳定版)和具有自定义内核的 Gentoo 系统上进行了测试。没有观察到差异。 问题: 在不将调试器附加到目标进程的情况下,我希望能够识别每个线程/子任务堆栈的 VMA。这应该可以使用以下方法实现进程伪文件系统 讨论: 在 Linux 4.5 之前,将在路径名字段中/proc/[parent_tid]/maps标记父任务的堆栈区域,并使用 标记每个子任务的堆栈区域。[STACK][STACK:child_tid] 在 Linux 4....

Admin

为什么Linux同时需要pid_max和threads-max?
thread

为什么Linux同时需要pid_max和threads-max?

/proc/sys/kernel/pid_max我明白和之间的区别/proc/sys/kernel/threads-max。答案中有一个很好的解释 了解 pid_max、ulimit -u 和 thread_max 之间的区别: /proc/sys/kernel/pid_max与任何给定时间可以运行的最大进程数无关。事实上,它是内核可以分配的最大数字进程标识符。 在Linux内核中,进程和线程是同一回事。内核以相同的方式处理它们。它们都占用task_struct数据结构中的一个槽。按照常见术语,线程是 Linux 中与另一个进程共享资源的进程(它们还将共享...

Admin

Linux中线程的定义依赖于系统调用吗?
thread

Linux中线程的定义依赖于系统调用吗?

克隆 clone()在/clone3()系统调用的手册页中我发现: CLONE_THREAD(自 Linux 2.4.0 起)。 如果设置了 CLONE_THREAD,则子进程将被放置在与调用进程相同的线程组中。为了使 CLONE_THREAD 的讨论的其余部分更具可读性,术语“线程”用于指代线程组中的进程。 因此,据我了解,从clone的角度来看,线程是使用CLONE_THREAD标志集创建的(因此,最终与调用者位于同一线程组中)。 富泰克斯 但是,例如,查看 的手册页futex(),我发现: FUTEX_PRIVATE_FLAG(自 Linux 2...

Admin

如何查找与给定进程相关的所有进程的PID?
thread

如何查找与给定进程相关的所有进程的PID?

我怎样才能找到正在执行另一个进程工作的进程的 PID 或其他信息?kworker例如,我正在谈论线程,或者在内核中为另一个进程执行工作的任何其他线程/进程。 我的困境是,我有一个实时调度进程(SCHED_FIFO)以 sched prio 99 运行,CPU 关联性绑定到 CPU 0,但是当我将 CPU 压力注入到我的机器上时,我注意到我的重要 rt 进程无法抢占其他进程、非重要流程。我认为这可能是因为kworkers即使我在taskset和中指定了 -a 选项,但为这个重要进程工作的 不会继承主进程具有的优先级chrt。我当前的想法是手动taskset操作...

Admin

核心和逻辑处理器之间的区别
thread

核心和逻辑处理器之间的区别

我有一个关于核心和逻辑处理器的问题。因此,我的计算机有 1 个具有 2 个核心的 CPU 和 4 个逻辑处理器。这是否意味着我的计算机有 4 个线程,每个核心 2 个线程?如果我只有 4 个线程,为什么它说 2975 个线程? 谢谢你! ...

Admin

如何通过 http 并行获取大文件?
thread

如何通过 http 并行获取大文件?

问题: 由于 HTTP 支持在偏移处恢复,是否有任何工具(或 wget 或 curl 等命令的现有选项)可以启动多个线程来与不同文件偏移处的多个请求并行获取文件?这有助于单独限制每个套接字的性能。 我可以编写一个程序来执行此操作,但我想知道该工具是否已经存在。 背景: 最近想下载一个大的iso,但!...在服务器和我的互联网提供商之间的某个地方,传输速率被限制为 100 kb!然而,我注意到前 5 到 10 秒的吞吐量很高,达到数百兆位。所以我写了一个小的 bash 脚本来在几秒钟后重新启动: while ! timeout 8 wget -c http:/...

Admin

nvidia(专有)驱动程序:这些内核线程是什么?
thread

nvidia(专有)驱动程序:这些内核线程是什么?

运行一些 340 驱动程序(在初始化时加载了 nvidia.ko 模块),我转移到 470 驱动程序并发现了六个内核线程,但我找不到任何相关信息: 2 [nv_queue]:它们的目的是什么以及为什么出现两次? 2 [nvidia-modeset/] :同上 在初始化时启动(可能是在 modprobing nvidia 的东西时) 然后,在 X 服务器启动后立即启动: [irq/27-nvidia] :很可能是线程 IRQ 处理程序,就好像我启动了 threadirqs(我没有启动) [nvidia]:好旧的 nvidia.ko 线程吗? [nv_队列...

Admin

历史进程
thread

历史进程

Linux 中是否有命令行可以检索线程的 pid tid 等所有信息?例如,如果一个进程在 ps 命令运行之前就已经死亡。该命令未找到进程 ...

Admin

Linux 上的 Java 线程和 /proc/ 目录
thread

Linux 上的 Java 线程和 /proc/ 目录

我有一个 Java 程序,它使用工作线程池来执行工作。这些线程是动态的,因此程序动态创建和删除线程。当变量为 true 时线程正在运行: public void run() { while (!exit) { 因此,停止线程就是将该变量设置为 false。 我可以在 上找到这些线程 id 目录/proc/$pid/task/$tid。 工作线程有一个特定的名称,因此我可以在/proc/$pid/task/$tid/comm. 然而,停止线程后,我仍然可以找到该$tid子目录大约 10 分钟。我也没有看到/pro...

Admin

Linux 中术语“进程”、“线程”和“task_struct”的含义
thread

Linux 中术语“进程”、“线程”和“task_struct”的含义

据我所知,线程是进程的执行流程,进程的所有线程共享一些公共结构。此外,在现代 PC 中,CPU 只执行线程,而不执行进程。 我不明白这个词的含义过程和线在Linux中。 Linux真的区分进程和线程吗?其作用是任务结构结构? 我读过Linux调度task_struct来执行,所以我认为task_struct代表一个线程而不是一个进程,但是查看内部任务结构体的定义我看到有一个对task_struct 子级的引用。一个线程真的可以生孩子吗? ...

Admin

Linux:一个进程组可以发出的 fork() 调用次数是否有限制? (不是每个用户!)
thread

Linux:一个进程组可以发出的 fork() 调用次数是否有限制? (不是每个用户!)

我们在 SuSE Linux Enterprise Server 12.5 系统(内核 4.12.14-122.60)上遇到一个奇怪的问题,该系统是类似 KVM 主机中唯一的 KVM 来宾: 由 systemd 启动的一项服务启动一个程序 -> 进程,然后派生一个启动其他程序 -> 子进程,该子进程再次派生更多程序 -> 子进程。 约后。 50 或 60 个 fork(包括一些 JAVA 子进程),这将停止来自该进程树的所有连续 fork() 调用,失败并出现 errno=11(资源临时值不可用)。 同一 UID(用户)的并行运行登录会话仍...

Admin

进程状态逻辑
thread

进程状态逻辑

当仅调度线程时(Windows 和 Linux),进程如何具有状态? 假设我们创建流程磷 线T1现在也已分配 T1现在处于可运行状态 调度程序选择T1并将其设置为可与磷 新线程T2已创建并标记为可运行 调度程序选择T2并将其交给另一个CPU核心 T1现在等待用户输入T2仍在其他其他核心上运行 是什么状态磷阻塞/运行? 确定进程状态背后的逻辑是什么? ...

Admin

自旋锁如何防止上下文切换?
thread

自旋锁如何防止上下文切换?

我使用此代码是为了直观地了解自旋锁如何阻止上下文切换: pthread_spinlock_t lock; void pp() { pthread_spin_lock(&lock); char d = 'D'; while(1) write(1, &d, 1); } void ppp() { char a = 'C'; while(1) write(1, &a, 1); } int main() { pthread_t thread; ...

Admin