问题标签 [smp]

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 投票
2 回答
206 浏览

c - Linux 上 fork() 创建的子进程是否可以在 SMP 环境中的单独内核上运行?

在调用 fork() 时,有哪些做法可以保证子进程可以在单独的内核上并行运行?

0 投票
2 回答
1492 浏览

linux-kernel - linux内核如何在多芯片多核SMP系统上调度轻量级线程?

我正在使用轻线程运行并行算法,我想知道当系统提供多个内核和多个芯片时如何将这些分配给不同的内核。线程是否分配给单个芯片,直到芯片上的所有内核都用完?是否将线程分配给不同芯片上的内核以便更好地在芯片之间分配工作?

0 投票
4 回答
194 浏览

c - 用户空间代码以什么顺序执行?

嗨,我正在编写一个读取和写入特定设备的字符驱动程序。由于我是菜鸟,这是一个非常简单易用的字符驱动器,它只使用最简单的协议,例如打开、读取、写入和释放。为了测试我的驱动程序,我使用了以下程序……下面是我的用户空间程序的源代码。

现在,我的驱动程序如何工作并不重要,但我调用读写方法的顺序是什么。理想情况下,如果按照我编写代码的顺序写入驱动程序并按照我编写代码的顺序读取驱动程序,那就太好了。但是我注意到,如果我编写了我的代码,比如......

我注意到 fprintf() 仅在我关闭文件描述符时写入,最糟糕的是,在我从设备读取后执行。当然,我想写入我的设备,然后从中读取,但这并不是按顺序发生的。这给我的印象是用户空间中的许多事情同时执行,这让我感到困惑。在处理用户空间时,我如何知道我的设备函数被调用的顺序。抱歉,如果这看起来含糊不清,我会详细说明任何模糊不清的地方。

感谢您的任何回复!

0 投票
2 回答
72 浏览

c - 当值可能相同时避免写入是否更快

在 SMP 机器上,#2 与 #1 相比有性能优势:

1) x = 0;

或者

2) 如果 (x) x = 0;

我在想管理 CPU 之间的缓存一致性的幕后开销可能会有一些成本。我疯了吗?

0 投票
1 回答
581 浏览

c++ - 具有“激进”易失语义的 C 和 C++ 编译器

是否有任何 C 或 C++ 编译器为volatile变量实现“积极的”内存一致性模型?通过“积极的”一致性模型,我的意思是volatile在生成的代码中伴随所有对具有内存屏障的变量的写入。

AFAIK,这是 IA64 (Itanium) 平台上 C 或 C++ 编译器的习惯行为。x86呢?是否有一个编译器可以实现(或可以配置为实现)类似 Itanium 的方法来处理volatilex86 平台上的变量?

编辑:我正在查看 VS 2005 生成的代码(在阅读了评论之后),并且在访问volatile变量时我看不到任何类似于任何类型的内存屏障的东西。由于 MESIF (Intel) 和 MOESI (AMD) 缓存协议,这非常适合确保单 CPU 多核 x86 平台上的内存一致性。

但是,这在多 CPU SMP x86 平台上似乎是不够的。SMP 平台在生成的代码中需要内存屏障,以确保 CPU 之间的内存一致性。我错过了什么?当微软声称他们已经在volatile变量上具有获取-释放语义时,究竟是什么意思?

0 投票
1 回答
607 浏览

linux - 如何在 SMP linux 中获取给定 cpu 的当前任务?

我正在编写一个内核模块,它试图获取给定 cpu 的当前任务,例如,

在我们的内核模块中,我们只能使用导出的函数符号,或者我们可以从模块中的系统映射硬编码内核函数地址然后使用它。

现在我只找到了 IA64 的 curr_task 函数,在 X86_32 的给定 cpu 上获取当前任务的方法是什么?谢谢你。

0 投票
2 回答
5039 浏览

c++ - OpenMP 和 NUMA 的关系?

我有一台双插槽 Xeon E5522 2.26GHZ 机器(禁用超线程)在支持 NUMA 的 linux 内核 3.0 上运行 ubuntu 服务器。架构布局是每个插槽 4 个物理内核。OpenMP 应用程序在这台机器上运行,我有以下问题:

  1. 在 NUMA 机器 + 感知内核上运行时,OpenMP 程序是否会自动利用(即线程及其私有数据在执行过程中保存在 numa 节点上)?如果没有,可以做什么?

  2. NUMA 和每线程私有 C++ STL 数据结构怎么样?

0 投票
1 回答
45 浏览

caching - 分层内存 SMP 是矛盾的吗?

对称多处理系统是共享内存的同构处理器。我刚刚看到Tim Mattson 的这个演讲,他说分层内存(缓存级别)使 SMP 的规则无效。这是真的?为什么我不能说,例如,分层内存 SMP 系统?谢谢。

0 投票
1 回答
1012 浏览

javascript - 使用 Javascript 从 Strobe Media Playback 获取统计信息

我正在尝试从 Strobe Media Playback flash 播放器获取统计数据。

我看过这个 例子,但是它使用 swfobject.js 和 .embedSWF() 来创建播放器。我用 HTML 创建播放器并附加一个 Javascript 桥。

据我所知,该示例使用 org.osmf.player.debug.track 来获取统计信息。尝试在我的代码中使用它不会带来任何结果。大概是因为我没有使用 swfobject.js 来创建视频。我也尝试过类似的东西(为了清楚起见,截断了):

问题是,我能得到这些统计数据吗?

0 投票
1 回答
1023 浏览

linux-kernel - SMP 系统上的内核初始化

当我们在 SMP 系统上启动内核时,CPU0 启动内核代码,在 CPUx 处于 WFI 状态时,CPU0 的主内存、缓存和 MMU 被初始化。当从 CPU0 发送 cpu_up(x) 时,每个 CPUx 都被初始化并调用 secondary_startup ,其中再次初始化 CPUx 特定的主存储器、高速缓存和 MMU。

现在我知道不同内核的缓存缓存可能不同,但是我们是否也有不同内核的主存和 MMU?我从来没有听说过。这里到底发生了什么,主存和 MMU 的划分是如何在 CPU 之间发生的?