问题标签 [multiprocessor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1389 浏览

erlang - Erlang 是专为在单个多核机器上运行而设计的,还是可以分发进程?

我的应用程序在我的四核机器上运行良好。它是“令人尴尬的并行”,大约有 10 万个进程,因此非常适合在机器集群上运行。但是,我很难找到有关如何将所有这些进程分散到集群中所有可用节点上的文档。

分布式 Erlang 的文档似乎侧重于服务器-客户端应用程序,其中每个节点都是运行单个应用程序的客户端,您可以手动指定哪个节点运行哪个进程。

0 投票
1 回答
368 浏览

thread-safety - 对未对齐数据的联锁操作

win32 互锁函数为数据的原子操作提供了一种机制。它们应该是线程安全的和多处理器安全的。

如果数据没有对齐会发生什么?联锁操作仍然是原子的?例如:增加一个未对齐的整数。

0 投票
7 回答
16492 浏览

multithreading - 并行编码与多线程(在单个 cpu 上)

我们可以在单个 cpu 上互换使用“并行编码”和“多线程编码”吗?

我对两者都没有太多经验,但我想将我的编码风格转变为上述任何一种。

正如我现在发现的那样,许多单线程应用程序已经过时,对于未来的软件行业作为职业前景,哪个会更好?

0 投票
4 回答
1339 浏览

multithreading - 线程系统如何处理被不同 CPU 缓存的共享数据?

我主要来自 c++ 背景,但我认为这个问题适用于任何语言的线程。这是场景:

  1. 我们有两个线程(ThreadA 和 ThreadB),共享内存中有一个值 x

  2. 假设对 x 的访问由互斥锁(或其他合适的同步控制)适当控制

  3. 如果线程碰巧在不同的处理器上运行,如果 ThreadA 执行写操作,但它的处理器将结果放在它的 L2 缓存而不是主存中,会发生什么情况?然后,如果 ThreadB 尝试读取该值,它会不会只是查看自己的 L1/L2 缓存/主内存,然后使用那里的旧值?

如果不是这种情况,那么如何管理这个问题?

如果是这样的话,那么可以做些什么呢?

0 投票
1 回答
253 浏览

crash - 在多线程和多处理器环境中与字符串相关的操作期间应用程序崩溃

该应用程序是在 VC++ 6.0 中开发的。当它与它的依赖服务一起在多线程和多处理器环境中运行时,其中一个依赖服务在尝试一些字符串操作(如字符串格式或字符串复制)时崩溃。然而,这在单处理器环境中没有观察到,并且调用堆栈通常看起来像这样

mfc42u!CFixedAlloc::Alloc+82 005b5b64 00000038 005b5b64

mfc42u!CString::AllocBuffer+3f 00000038 00000038 005b5b64

mfc42u!CString::AllocBeforeWrite+31 00000038 0a5bfdbc 005b5b64

mfc42u!CString::AssignCopy+13 00000038 057cb83f 0a5bfe90

mfc42u!CString::operator=+4b

任何人都面临过这样的问题。

0 投票
2 回答
3590 浏览

c# - 多处理器机器中秒表的最佳实践?

我发现了一个衡量函数性能的好问题,答案建议使用 Stopwatch 如下

但是,如果您在多处理器机器下运行,这是否有效?线程可以切换到另一个处理器,可以吗?同样的事情也应该在 Enviroment.TickCount 中。如果答案是肯定的,我应该将我的代码包装在 BeginThreadAffinity 中,如下所示

附言

切换可以发生在线程级别,而不仅仅是处理器级别,例如,如果函数在另一个线程中运行,那么系统可以将其切换到另一个处理器,如果发生这种情况,切换后秒表是否有效?

我不仅使用 Stopwatch 进行性能测量,而且还使用 Thread.Sleep 模拟计时器功能(以防止调用重叠)

0 投票
3 回答
8128 浏览

java - 如何让 WebLogic 使用多处理器机器上的所有处理器

昨天,我们注意到我们的一台多处理器服务器上的 Java/Web Logic 出现了一种特殊行为,因此想了解一下您的想法。

出于某种原因,Web Logic/Java 仅使用可用的两个处理器中的一个处理器。当我们运行一些重负载时,我可以看到一个处理器的 CPU 几乎达到 100%,而另一个处理器完全空闲。这是否是虚拟机是否重要(..但这不是虚拟机)

有趣的是,任何其他操作系统活动都表明两者上的处理器活动。

问候,_UB

0 投票
3 回答
3389 浏览

java - java进程在Linux上被冻结(?)

这是我的第一个问题,
所以我有一个非常奇怪的问题。
下面是我的问题...

我编写了非常简单的方法,将一些文本写入文件。
当然它在我的机器上运行良好(XP、4CPU、jdk1.5.0_17[SUN])
但它有时会在运行服务器上冻结
(Linux Accounting240 2.4.20-8smp、4CPU、jdk1.5.0_22[SUN])。

杀死 -3 不起作用。
ctrl + \ 不起作用。

所以,我不能给你看线程转储。

它冻结得很好..当我用这种方法写一些 Thread.sleep(XX) 时,问题就解决了(?)...
sleep(XX) break... 今天又发生了 Thread.sleep(XX) ...

你知道这个问题吗?你有一些解决方案吗?谢谢。:-)

PS
linux 发行版:Red Hat Linux 3.2.2-5
命令:java -cp。吨

0 投票
1 回答
101 浏览

bash - 有人有在 ClusterVisionOS 上运行集群的经验吗?

我目前正在使用 ClusterVisionOS 3.1 处理集群。这将是我第一次使用集群,所以我可能还没有尝试过“显而易见的”。

我可以使用“qsub”命令向集群提交单个作业(我可以正常工作)

但是当一次提交多个作业时,问题就开始了。我可以编写一个脚本一次将它们全部发送,但是所有节点都会被我的工作占用,并且这里有更多的人想要提交他们的工作。

所以这是交易:

32 个节点(每个节点 4 个处理器/插槽)

最好的办法是告诉集群使用 3 个节点(12 个处理器)并在这些节点/处理器上排队我的所有作业,如果这甚至可能的话。如果我可以让节点为每个作业使用 1 个处理器,那将是完美的。

0 投票
6 回答
4723 浏览

terminology - “偷工作”与“工作耸肩”?

为什么我可以找到很多关于“工作窃取”的信息,而没有找到关于“工作耸耸肩”作为动态负载平衡策略的信息?

“工作耸肩”是指多余的工作从繁忙的处理器推到负载较轻的邻居身上,而不是让空闲的处理器从繁忙的邻居那里拉出工作(“工作窃取”)。

我认为这两种策略的一般可扩展性应该是相同的。但是,我相信,就延迟和功耗而言,在肯定有工作要做时唤醒空闲处理器会更有效,而不是让所有空闲处理器定期轮询所有邻居以寻找可能的工作。

无论如何,一个快速的谷歌没有在“工作耸肩”或类似的标题下显示任何内容,因此任何指向现有技术和该策略的行话的指针都会受到欢迎。

澄清

我实际上设想工作提交处理器(可能是也可能不是目标处理器)负责查看首选目标处理器的直接位置(基于数据/代码位置),以决定是否应该为近邻提供新的而是工作,因为他们没有那么多工作要做。

我认为决策逻辑需要的不仅仅是原子读取此处的直接(通常为 2 到 4 个)邻居的估计 q 长度。我不认为这比盗贼从他们的邻居那里轮询和偷窃所暗示的耦合更多。(我在这两种策略中都假设“无锁、无等待”队列)。

解析度

似乎我的意思(但只是部分描述!)作为“工作耸耸肩”策略是在“正常”前期调度策略的领域,这些策略恰好对处理器、缓存和内存忠诚度以及可扩展性很聪明。

我发现很多关于这些术语的参考文献搜索,其中一些看起来很可靠。当我确定一个最符合(或破坏!)我对“工作耸肩”定义的逻辑时,我将发布一个参考。