multithreading

XV6 中定时器中断是如何发生的?
multithreading

XV6 中定时器中断是如何发生的?

thread_schedule()我使用、 和等函数实现了线程切换thread_yield(),其目的是保存当前线程的寄存器和状态并加载下一个线程的寄存器和状态。 我现在想在 xv6 中使用计时器中断来实现同样的事情,但我不知道它是如何工作的。 ...

Admin

线程名称:/proc/pid/comm 是否始终与 /proc/pid/status 的 Name: 行和 /proc/pid/stat 的第二个字段相同?
multithreading

线程名称:/proc/pid/comm 是否始终与 /proc/pid/status 的 Name: 行和 /proc/pid/stat 的第二个字段相同?

Linux 线程或分叉进程可能会更改文件系统ps中可见的名称和/或其命令行/proc。 使用该python-setproctitle包时,相同的更改发生在/proc/pid/cmdline、/proc/pid/comm、和 的第二个字段中Name:,其中仅显示完整长度,其他三个位置显示更改名称的前 15 个字符。/proc/pid/status/proc/pid/statcmdline 当观察多线程ruby进程时,看起来/proc/pid/cmdline保持不变,但其他三个位置显示线程名称,被截断为 15 个字符。 man prctl告诉 是/proc/pi...

Admin

核心数量与运行具有更高nice值的进程的能力之间的关系?
multithreading

核心数量与运行具有更高nice值的进程的能力之间的关系?

当我用 8 个高优先级(nice=-20)操作系统线程(我拥有的核心数量)“淹没”我的 CPU 时,由于显而易见的原因,操作变得“暂停”,但仍然可用。 请注意,当我说“高优先级线程”时,我指的是由同一高优先级进程生成的线程。 然而,像 64 线程这样的事情会让我的电脑完全无法使用。最大优先级线程与其在核心之间的分配之间有什么关系?我们能否大致算出需要生成多少个线程才能完全淹没 CPU 以达到给定的好值? ...

Admin

linux 多线程查找文件
multithreading

linux 多线程查找文件

我进行了搜索,但找不到类似的东西。 我有巨大的代码库( AOSP 或 Yocto )存储在 ext4 格式的 NVME 驱动器(例如 SAMSUNG 980Pro )中。这些代码库通常由数千个子目录中的数十万个文件组成。 当我使用 find 搜索文件时,我通常会这样做: find . -iname "filename.txt" 我不想对文件进行操作,我只想找到该文件。 我觉得这不是多线程(如果我错了,请纠正我)。 请注意,我知道搜索文件通常受 IO 限制,但我的驱动器速度很快,并且我相信可以在多个线程中迭代子目录的工具可以显着加快查找结果的速度。 如果我错...

Admin

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

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

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

Admin

有没有办法阻止后代线程自动进入其祖先线程的cgroup?
multithreading

有没有办法阻止后代线程自动进入其祖先线程的cgroup?

我将应用程序的一些线程显式地写入由我创建的 Linux cpucgroup(例如,让我们现在讨论 v1,但如果您知道 v2 的方法,那就太好了)。 但是,我看到后代线程(pthread_create()由其父线程调用创建,显式写入 cgroup 或在其父线程之后再次写入)也出现在 cgroup 中,而无需我直接编写它们。 这会对应用程序产生不好的影响。某些线程意外到达 cgroup。您需要始终注意这一警告并小心,例如线程池等。 请问您有办法解决这个问题吗?例如,也许有一种方法可以禁止后代线程自动进入其父级的 cgroup?任何帮助表示赞赏。 ...

Admin

Linux 是否提供了将线程固定到 P 核或 E 核的方法?
multithreading

Linux 是否提供了将线程固定到 P 核或 E 核的方法?

在英特尔系列的第 12 代及更新版本芯片上(据我所知,在 ARM 芯片上)有不同类别的内核,具有不同的时钟速度 P 核可提高性能、提高时钟速度 E 核可提高能源效率、降低时钟速度 这与我理解的可以限制频率的芯片不同,但跨内核是相同的。 有没有一种方法可以将线程绑定到P核或E核的类上? ...

Admin

内部与进程间上下文切换的频率
multithreading

内部与进程间上下文切换的频率

我在读的一本书(从 2013 年开始)说,在 Linux 内核中,进程内切换比进程间切换便宜得多,我猜,因为在同一 CPU 中同一进程的两个线程之间进行切换可以节省您的时间。切换页表的成本。 因此,在同一进程的两个线程/任务之间切换比在不相关的任务之间切换更便宜。 Linux 内核是否尝试以某种方式(除了进程亲和力之外)增加进程内切换的可能性以提高性能? 如果不是,这种情况发生的频率是多少?如果在实践中进程内切换很少发生,那么说线程是一件好事,因为它们的切换成本很低,这是否有争议? ...

Admin

收集统计数据
multithreading

收集统计数据

我编写了一个简单的程序,其中有一个在 CPU 核心上运行的线程。它旋转得有点激进,并且占用了 100% 的 CPU 核心。我可以用top+看到这一点1。 N分钟后,我希望能够知道: 内核抢占(中断)我正在运行的线程多少次? ...

Admin

sigtimedwait 将 errno 设置为 ETIMEDOUT,超时=0
multithreading

sigtimedwait 将 errno 设置为 ETIMEDOUT,超时=0

在 cpp 多线程程序中,sigwait在创建所有线程并初始化程序之后,我们在 main 函数的末尾使用 Linux 实现的副本: sigset_t mask; struct sigaction sa; signal(SIGPIPE, SIG_IGN); sigemptyset(&mask); sigaddset(&mask, SIGINT); sa.sa_flags = SA_SIGINFO | SA_NODEFER; sa.sa_sigaction = handler; siga...

Admin

为什么较高的 CPU 使用率会减慢任务速度?
multithreading

为什么较高的 CPU 使用率会减慢任务速度?

我在用耳语.cpp转录一些声音文件。这是一个占用大量 CPU 资源的进程,因此我尝试找到一些最佳设置,因此我对线程设置 (-t) 进行了一些测试,但结果非常令人困惑。这是我执行的命令: date; time ./main -t [number of threads] -m ggml-model.bin -f 5min-16kHz.wav; date 我在配备 6 个内核(+ 6 个超线程内核)的 Intel i7 的 Macbook Pro 上运行此程序。 我尝试过默认设置(4 个线程)、6 和 12 线程(以及 14 线程,但没有产生任何输出,尽管所有 ...

Admin

循环调度和上下文切换如何从底层工作?
multithreading

循环调度和上下文切换如何从底层工作?

使用循环调度,内核为不同的进程/任务提供时间片。 看来内核会初始化一个定时器,当定时器超时时,就会导致当前任务被中断,然后内核获得控制权。 内核如何知道应该使用定时器超时中断来调度新任务?如果不同的计时器用于各种不同的目的而不仅仅是用于调度程序怎么办?所有不同的中断服务例程都去哪里了?提前致谢。 ...

Admin

Linux上线程栈是否来自进程的内存映射段?
multithreading

Linux上线程栈是否来自进程的内存映射段?

我目前正在学习Linux。我知道线程是Linux上的一种轻量级进程。但我想知道线程堆栈空间从哪里来。 线程的堆栈是私有的。它独立于进程堆栈。根据我的搜索,有人说线程堆栈是由mmap().而且,有些人说mmap()空间不是heap。它位于栈和堆之间。所以线程栈来自于进程的内存映射段。那是对的吗? ...

Admin

寻找一款linux备份工具,多线程,具有加密和良好的压缩算法
multithreading

寻找一款linux备份工具,多线程,具有加密和良好的压缩算法

我正在寻找一个Linux备份工具来升级我的备份策略。 今天我每天在 Linux 服务器(Ubuntu 20.04)上进行完整备份。我更喜欢直接在虚拟机内部备份数据并发送到另一个站点(不是在 VMware vSphere 级别),以免依赖于虚拟化系统(以便能够使用 Linux 和 LAMP&Co 工具从任何类型的服务器重新启动)。 我们有超过一百万个文件(csv、json、xlsx)和近 1To 的数据。压缩后,由于 lbzip2 及其多线程结构,在 4 小时内减少到 100Go。每晚的空间和时间开始变得太多。我想在周末进行完整备份,并在工作日晚上进行...

Admin

有没有不基于Mutex+CV的POSIX信号量的实现?
multithreading

有没有不基于Mutex+CV的POSIX信号量的实现?

我读到 FreeBSD 内核中的信号量不如 Mutex+CV 高效这个手册页。我已经检查了 POSIX 信号量的内核和系统调用实现来源 代码并确认它们是在 Mutex+CV 之上实现的。 可能是我的一个误解POSIX 信号量作为实时同步原语,应该非常高效。但在阅读和看到这些之后,我不确定它们的效率应该有多高。 另外,我正在看书并发编程:算法、原理和基础。现在,我还没有读完第一部分,但它即将介绍在信号量之上实现的监视器(CV)。这让我想到,现实世界中一定有一种高效的信号量实现方式,而不是基于 Mutex+CV,这样效率更高。 有没有真实世界信号量的实现不是基于...

Admin